1.Oracle Active DataGuard

   

 

   

  • Primary Database 와 Standby Database 로 구성되며 하나의 Primary Database 에 최대 9개의 Standby Database 가 구성될 수 있다.

       

  • Primary 측의 변경사항은 Redo Logs 에 기록되는데 이는 백그라운드 프로세스 (LGWR 혹은 ARCn) 에 의해 Standby 측에 Oracle Net 을 통해 전파된다.

   

  • 전파된 변경 내역은 Standby Redo Log 에 쓰였다가 Database 에 적용된다.


[참고 사이트]   

http://h391106.tistory.com/231

   

2.ADG Installation

   

- Environment(vmware)

구분

Host IP

OS Version

Oracle SID

DB Version

Priamry

192.168.22.3

GNU / LINUX

orcl

Oracle 11.2.0.3

Standby

192.168.22.10

GNU / LINUX

Stby

Oracle 11.2.0.3

   

2-1 Listener / tns정보(Priamry/Standby)

Priamry

   

ORCL =

(DESCRIPTION_LIST =

(DESCRIPTION =

(ADDRESS = (PROTOCOL = TCP)(HOST = ocp.mycorpdomain.com)(PORT = 1521))

(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))

)

)

   

SID_LIST_ORCL =

(SID_LIST =

(SID_DESC =

(GLOBAL_DBNAME = orcl)

(ORACLE_HOME = /u01/app/oracle/product/11.2.0/db_1)

(SID_NAME = orcl)

)

)

orcl =

(DESCRIPTION =

(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.22.3)(PORT = 1521))

(CONNECT_DATA =

(SERVER = DEDICATED)

(SERVICE_NAME = orcl)

)

)

   

  

Standby

   

STBY =

(DESCRIPTION_LIST =

(DESCRIPTION =

(ADDRESS = (PROTOCOL = TCP)(HOST = localhost.localdomain)(PORT = 1521))

# (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))

)

)

   

SID_LIST_STBY =

(SID_LIST =

(SID_DESC =

(GLOBAL_DBNAME = stby)

(ORACLE_HOME = /u01/app/oracle/product/11.2.0/db_1)

(SID_NAME = stby)

)

)

   

   

stby =

(DESCRIPTION =

(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.22.10)(PORT = 1521))

(CONNECT_DATA =

(SERVER = DEDICATED)

(SERVICE_NAME = stby)

)

)

  

   

2-2 ORCL / STBY 각 서버별 DB 설치 Directory 일치(Priamry/Standby)

  • Source DB(ORCL)의 데이터를 그대로 옮겨와야 되기 때문에 거의 동일하게 구성하되 Oracle SID만 변경하여 생성할 것.
  • Vmware이기 때문에 ORCL 서버를 복사하여 DBCA로 DB만 제거한 뒤 해당 디렉토리의 SID 명만 변경하여 세팅해도 됨.

[Oracle 유저]

$Mkdir -p /home/oracle/arch

$Mkdir -p u01/app/oracle/admin/stby/adump

$Mkdir -p u01/app/oracle/admin/stby/dpdump

$Mkdir -p u01/app/oracle/admin/stby/pfile

$mkdir -p /u01/app/oracle/diag/rdbms/stby/stby/Trace

$Mkdir -p /u01/app/oracle/oradata/stby

   

   

2-3 Standby logfile 생성

  • 기존에 가지고있는 Redolog file의 크기와 같아야 되고 개수가 하나 더 많이 생성해 해야 된다.(Redolog file =3 /Standby logfile = 4)

alter database add standby logfile '/u01/app/oracle/oradata/stby/stby01.log' size 50m;

alter database add standby logfile '/u01/app/oracle/oradata/stby/stby02.log' size 50m;

alter database add standby logfile '/u01/app/oracle/oradata/stby/stby03.log' size 50m;

alter database add standby logfile '/u01/app/oracle/oradata/stby/stby04.log' size 50m;

   

2-4 DB Parameter / status 변경

   

SQL> alter system set log_archive_dest_1='location= /home/oracle/arch mandatory' scope=both;

   

SQL> alter system set fal_client=orcl scope=both;

   

SQL> alter system set fal_server=stby scope=both;

   

SQL> alter system set standby_file_management = auto scope=both;

   

SQL> alter system set log_archive_config='dg_config=(orcl,stby)' scope=both;

   

SQL> alter system set log_archive_dest_2='service=stby async valid_for=(online_logfile,primary_role) db_unique_name=stby' scope=both;

   

SQL> ALTER DATABASE FORCE LOGGING;

   

2-5 Archive mode 설정

shutdown immediate;

startup mount;

alter database archivelog;

alter database open;

   

2-6 Password file / Parameter file 복사(ORCL->STBY)

ORCL-> STBY

$ cp /u01/app/oracle/product/11.2.0/db_1/dbs/orapworcl

   

$ cd /u01/app/oracle/product/11.2.0/db_1/dbs/orapwstby

$ vi /u01/app/oracle/product/11.2.0/db_1/dbs/initstby.ora

db_name=orcl

db_unique_name=stby

   

2-7 Data 이관 및 DB startup(ORCL->STBY)

  • Orcl의 정보를 바탕으로 Oracle SID를 STBY로 변경하여 DB를 Startup 시켜준다.
  • 해당 방안에는 HOT Backup을 이용한 방법, Rman을 이용한 방법 외 다양한 방법으로 ORCL과 동일하게 DB를 구성하여 올려준다.(db_unique_name 만 STBY로 변경)

   

[pfile 참조]

localhost@stby : /u01/app/oracle/product/11.2.0/db_1/dbs> vi initstby.ora

   

orcl.__db_cache_size=121634816

stby.__db_cache_size=125829120

orcl.__java_pool_size=4194304

stby.__java_pool_size=4194304

orcl.__large_pool_size=4194304

stby.__large_pool_size=4194304

orcl.__oracle_base='/u01/app/oracle'#ORACLE_BASE set from environment

stby.__oracle_base='/u01/app/oracle'#ORACLE_BASE set from environment

orcl.__pga_aggregate_target=79691776

stby.__pga_aggregate_target=79691776

orcl.__sga_target=234881024

stby.__sga_target=234881024

orcl.__shared_io_pool_size=0

stby.__shared_io_pool_size=0

orcl.__shared_pool_size=100663296

stby.__shared_pool_size=96468992

orcl.__streams_pool_size=0

stby.__streams_pool_size=0

*.archive_lag_target=0

*.audit_file_dest='/u01/app/oracle/admin/stby/adump'

*.audit_trail='db'

*.cluster_database=FALSE

*.compatible='11.2.0.0.0'

*.control_files='/u01/app/oracle/oradata/stby/control01.ctl'

*.db_block_size=8192

*.db_domain=''

*.db_file_name_convert='/u01/app/oracle/oradata/orcl','/u01/app/oracle/oradata/stby'

*.db_name='orcl'

*.db_recovery_file_dest_size=10737418240

*.db_recovery_file_dest='/home/oracle/arch'

*.db_unique_name='stby'

*.dg_broker_start=TRUE

*.diagnostic_dest='/u01/app/oracle'

*.dispatchers='(PROTOCOL=TCP) (SERVICE=stbyXDB)'

*.fal_client='stby'

*.fal_server='orcl'

*.log_archive_config='dg_config=(orcl,stby)'

*.log_archive_dest_1='location=/home/oracle/arch'

*.log_archive_dest_2='service=stby lgwr async valid_for=(online_logfile,primary_role) db_unique_name=stby'

*.log_archive_dest_state_2='ENABLE'

   

[RMAN 스크립트 참조]

run {

duplicate target database for standby from active database

dorecover

spfile

parameter_value_convert 'orcl','stby'

set db_unique_name='stby'

set control_files='/u01/app/oracle/oradata/stby/control01.ctl'

set db_file_name_convert='/u01/app/oracle/oradata/orcl','/u01/app/oracle/oradata/stby'

set log_file_name_convert='/u01/app/oracle/oradata/orcl','/u01/app/oracle/oradata/stby'

set cluster_database='FALSE'

set fal_client='stby'

set fal_server='orcl'

set log_archive_dest_1='location=/home/oracle/arch'

set log_archive_dest_2='service=orcl LGWR ASYNC valid_for=(ONLINE_LOGFILES,PRIMARY_ROLE) db_unique_name=orcl'

set log_archive_config='dg_config=(orcl,stby)'

set service_names='stby';

sql "alter system archive log current";

CONFIGURE DEVICE TYPE DISK PARALLELISM 4 BACKUP TYPE TO BACKUPSET;

}

   

[참고문헌]

http://h391106.tistory.com/231

http://docs.oracle.com/cd/B19306_01/server.102/b14239/concepts.htm

http://h391106.tistory.com/238

http://download.oracle.com/docs/cd/E11882_01/server.112/e17023/dgmgrl.htm

블로그 이미지

운명을바꾸는자

IT와 함께 살아가는 삶

,

 

1.OGG Configuration(단방향 DDL,DML)

1-1 Create and start Manager

  • OGG MGR 포트 및 Trail파일 설정(Source)

       

    GGSCI (ocp.mycorpdomain.com) 2> dblogin userid oggmgr, password oracle

    Successfully logged into database.

       

    GGSCI (ocp.mycorpdomain.com) 3> edit params mgr

PORT 7809

   

userid oggmgr password oracle

   

PURGEOLDEXTRACTS ./dirdat/et*, USECHECKPOINTS, MINKEEPDAYS 3

PURGEOLDEXTRACTS ./dirdat/rt*, USECHECKPOINTS, MINKEEPDAYS 3

GGSCI (ocp.mycorpdomain.com) 4>start mgr

   

GGSCI (ocp.mycorpdomain.com) 5> info mgr

   

Manager is running (IP port ocp.mycorpdomain.com.7809).

  

  • OGG MGR 포트 및 Trail파일 설정(Target)

    GGSCI (ocp.mycorpdomain.com) 2> dblogin userid oggmgr, password oracle

    Successfully logged into database.

       

    GGSCI (ocp.mycorpdomain.com) 5> edit params mgr

       

PORT 7810

   

PURGEOLDEXTRACTS ./dirdat/et*, USECHECKPOINTS, MINKEEPDAYS 3

PURGEOLDEXTRACTS ./dirdat/rt*, USECHECKPOINTS, MINKEEPDAYS 3

GGSCI (ocp.mycorpdomain.com) 7> start mgr

   

GGSCI (ocp.mycorpdomain.com) 7> info mgr

   

Manager is running (IP port ocp.mycorpdomain.com.7810).

   

1-2 Create extract/Data-pump group(Source)

  • EXTRACT

    GGSCI (ocp.mycorpdomain.com) 8> add extract extora, tranlog, begin now

       

    GGSCI (ocp.mycorpdomain.com) 9> edit params EXTORA

--

-- Extract Parameter File

--

EXTRACT EXTORA

USERID oggmgr, PASSWORD oracle

   

TRANLOGOPTIONS OPENARCHIVEIMMEDIATE

THREADOPTIONS MAXCOMMITPROPAGATIONDELAY 60000 IOLATENCY 60000

TRANLOGOPTIONS EXCLUDEUSER OGGMGR, EXCLUDEUSERID 54

   

EXTTRAIL ./dirdat/et

REPORTCOUNT EVERY 5 MINUTES, RATE

   

-- Use DDL parameter to configure support for all mapped DDL operations

DDL INCLUDE MAPPED

DDLOPTIONS ADDTRANDATA, REPORT

   

-- Table/Sequence List

TABLE SCOTT.*;

SEQUENCE SCOTT.*;

   

GGSCI (ocp.mycorpdomain.com) 10> add exttrail ./dirdat/et, extract extora

  

  • Data-PUMP

    GGSCI (ocp.mycorpdomain.com) 11>add extract pumpora, exttrailsource ./dirdat/et

       

    GGSCI (ocp.mycorpdomain.com) 12> edit params PUMPA

--

-- Data Pump Parameter File

--

EXTRACT PUMPA

PASSTHRU

RMTHOST 192.168.22.10, MGRPORT 7810

RMTTRAIL ./dirdat/rt

REPORTCOUNT EVERY 5 MINUTES, RATE

   

-- DDL Option

--DDL INCLUDE MAPPED

--DDLOPTIONS REPORT

--DDLERROR DEFAULT ABEND

   

-- Table/Sequence List

TABLE SCOTT.*;

SEQUENCE SCOTT.*;

   

GGSCI (ocp.mycorpdomain.com) 13> add rmttrail ./diradat/rt, extract pumpora

  

[주의사항]

- Trail File명이 혼돈하지 않고 적절하게 사용할 수 있도록 주의 해야 한다.

(EXTRACT(./diradat/et) 파일을 기반으로 Data-PUMP(./diardata/rt)를 생성해야 함으로 파일 명을 혼돈하지 말고 사용할 것.

   

1-3 Create Chekpoint Table(Target)

GGSCI (ocp.mycorpdomain.com) 14> add checkpointtable oggmgr.ogg_checkpoint

  • Oggmgr 유저에 해당 테이블 생성 확인

   

1-4 Create Replicat Group(Target)

GGSCI (ocp.mycorpdomain.com) 15>

add replicat repora, exttrail ./dirdat/rt, checkpointtable oggmgr.ogg_checkpoint

   

GGSCI (ocp.mycorpdomain.com) 16> edit params REPORA

replicat repora

   

userid oggmgr, password oracle

   

assumetargetdefs

   

DDL INCLUDE MAPPED

DDLOPTIONS REPORT

DDLERROR DEFAULT ABEND

   

checkpointsecs 1

   

map scott.*, target scott.*;

   

  

[주의사항]

-Replicat 설정시에도 Source DB의 Data-Pump를 이용해야 되기 때문에 추가시 파일 명을 일치시켜주어야 합니다.(./dirdat/rt)

   

1-5 OGG EXTRACT,PUMP,REPLICAT Start(Source / Target)

  • OGG EXTRACT,PUMP (Source)

       

    GGSCI (ocp.mycorpdomain.com) 1> Start EXTRACT EXTORA

    GGSCI (ocp.mycorpdomain.com) 2> Start EXTRACT PUMPORA

     

    GGSCI (ocp.mycorpdomain.com) 3> info all


    Program     Status      Group       Lag at Chkpt  Time Since Chkpt


    MANAGER     RUNNING                                           

    EXTRACT     RUNNING     EXTORA      00:00:00      00:00:07    

    EXTRACT     RUNNING     PUMPORA     00:00:00      00:00:03    


GGSCI (ocp.mycorpdomain.com) 2> info EXTRACT EXTORA

   

EXTRACT EXTORA Last Started 2013-04-07 22:22 Status RUNNING

Checkpoint Lag 00:00:00 (updated 00:00:02 ago)

Log Read Checkpoint Oracle Redo Logs

2013-04-08 22:41:56 Seqno 31, RBA 8829440

SCN 0.1297938 (1297938)

   

GGSCI (ocp.mycorpdomain.com) 3> info EXTRACT PUMPORA

   

EXTRACT PUMPORA Last Started 2013-04-07 23:11 Status RUNNING

Checkpoint Lag 00:00:00 (updated 00:00:01 ago)

Log Read Checkpoint File ./dirdat/et000002

2013-04-07 23:43:11.000000 RBA 21412

  • OGG REPLICAT (Target)

       

    GGSCI (ocp.mycorpdomain.com) 1> Start REPLICAT REPORA

    GGSCI (ocp.mycorpdomain.com) 2> info all


    Program     Status      Group       Lag at Chkpt  Time Since Chkpt


    MANAGER     RUNNING                                           

    REPLICAT    RUNNING     REPORA     00:00:00      00:00:00    


GGSCI (ocp.mycorpdomain.com) 4> info REPLICAT REPORA

   

REPLICAT REPORA Last Started 2013-04-07 22:36 Status RUNNING

Checkpoint Lag 00:00:00 (updated 00:00:01 ago)

Log Read Checkpoint File ./dirdat/rt000000

2013-04-07 23:43:10.988221 RBA 21512

   

1-6 OGG TEST Setting 확인


  • OGG-Checkpoint table(Target)

       

    REPORA        4120505024        0        21512        2013-04-07 23:43:10.988221        2013-04-07 오후 10:26:50        2013-04-07 오후 11:43:16        /ogg        1282955        7.33.914        1282955        7.33.914        1

  • 파일 생성 확인

    --Source DB

    ocp@orcl : /ogg/dirdat> ls

    et000000 et000001 et000002

    --Target DB

    ocp@orcl : /ogg/dirdat> ls

    rt000000

   

2.OGG TEST / 동작확인(DML / DDL)

   - 데이터를 동일하게 이관하여 TEST진행(SCOTT 유저의 기본 테이블을 이용하여 OGG TEST)

  • OGG TEST(DML/DDL)

       

    --Source DB

select * from scott.emp;

delete from scott.emp;

   

SET DEFINE OFF;

Insert into SCOTT.EMP

(EMPNO, ENAME, JOB, MGR, HIREDATE, SAL, DEPTNO)

Values

(7369, 'SMITH', 'CLERK', 7902, TO_DATE('12/17/1980 00:00:00', 'MM/DD/YYYY HH24:MI:SS'),

800, 20);

Insert into SCOTT.EMP

(EMPNO, ENAME, JOB, MGR, HIREDATE, SAL, COMM, DEPTNO)

Values

(7499, 'ALLEN', 'SALESMAN', 7698, TO_DATE('02/20/1981 00:00:00', 'MM/DD/YYYY HH24:MI:SS'),

1600, 300, 30);

Insert into SCOTT.EMP

(EMPNO, ENAME, JOB, MGR, HIREDATE, SAL, COMM, DEPTNO)

Values

(7521, 'WARD', 'SALESMAN', 7698, TO_DATE('02/22/1981 00:00:00', 'MM/DD/YYYY HH24:MI:SS'),

1250, 500, 30);

Insert into SCOTT.EMP

(EMPNO, ENAME, JOB, MGR, HIREDATE, SAL, DEPTNO)

Values

(7566, 'JONES', 'MANAGER', 7839, TO_DATE('04/02/1981 00:00:00', 'MM/DD/YYYY HH24:MI:SS'),

2975, 20);

Insert into SCOTT.EMP

(EMPNO, ENAME, JOB, MGR, HIREDATE, SAL, COMM, DEPTNO)

Values

(7654, 'MARTIN', 'SALESMAN', 7698, TO_DATE('09/28/1981 00:00:00', 'MM/DD/YYYY HH24:MI:SS'),

1250, 1400, 30);

Insert into SCOTT.EMP

(EMPNO, ENAME, JOB, MGR, HIREDATE, SAL, DEPTNO)

Values

(7698, 'BLAKE', 'MANAGER', 7839, TO_DATE('05/01/1981 00:00:00', 'MM/DD/YYYY HH24:MI:SS'),

2850, 30);

Insert into SCOTT.EMP

(EMPNO, ENAME, JOB, MGR, HIREDATE, SAL, DEPTNO)

Values

(7782, 'CLARK', 'MANAGER', 7839, TO_DATE('06/09/1981 00:00:00', 'MM/DD/YYYY HH24:MI:SS'),

2450, 10);

Insert into SCOTT.EMP

(EMPNO, ENAME, JOB, MGR, HIREDATE, SAL, DEPTNO)

Values

(7788, 'SCOTT', 'ANALYST', 7566, TO_DATE('04/19/1987 00:00:00', 'MM/DD/YYYY HH24:MI:SS'),

3000, 20);

Insert into SCOTT.EMP

(EMPNO, ENAME, JOB, HIREDATE, SAL, DEPTNO)

Values

(7839, 'KING', 'PRESIDENT', TO_DATE('11/17/1981 00:00:00', 'MM/DD/YYYY HH24:MI:SS'),

5000, 10);

Insert into SCOTT.EMP

(EMPNO, ENAME, JOB, MGR, HIREDATE, SAL, COMM, DEPTNO)

Values

(7844, 'TURNER', 'SALESMAN', 7698, TO_DATE('09/08/1981 00:00:00', 'MM/DD/YYYY HH24:MI:SS'),

1500, 0, 30);

Insert into SCOTT.EMP

(EMPNO, ENAME, JOB, MGR, HIREDATE, SAL, DEPTNO)

Values

(7876, 'ADAMS', 'CLERK', 7788, TO_DATE('05/23/1987 00:00:00', 'MM/DD/YYYY HH24:MI:SS'),

1100, 20);

Insert into SCOTT.EMP

(EMPNO, ENAME, JOB, MGR, HIREDATE, SAL, DEPTNO)

Values

(7900, 'JAMES', 'CLERK', 7698, TO_DATE('12/03/1981 00:00:00', 'MM/DD/YYYY HH24:MI:SS'),

950, 30);

Insert into SCOTT.EMP

(EMPNO, ENAME, JOB, MGR, HIREDATE, SAL, DEPTNO)

Values

(7902, 'FORD', 'ANALYST', 7566, TO_DATE('12/03/1981 00:00:00', 'MM/DD/YYYY HH24:MI:SS'),

3000, 20);

Insert into SCOTT.EMP

(EMPNO, ENAME, JOB, MGR, HIREDATE, SAL, DEPTNO)

Values

(7934, 'MILLER', 'CLERK', 7782, TO_DATE('01/23/1982 00:00:00', 'MM/DD/YYYY HH24:MI:SS'),

1300, 10);

COMMIT;

   

Alter table scott.emp add new_test char(10)

Alter table scott.emp drop column

  • OGG 동작 확인

    --Source DB

GGSCI (ocp.mycorpdomain.com) 5> stats EXTRACT EXTORA

   

Sending STATS request to EXTRACT EXTORA ...

   

Start of Statistics at 2013-04-08 22:51:04.

   

DDL replication statistics (for all trails):

   

*** Total statistics since extract started ***

Operations 2.00

Mapped operations 2.00

Unmapped operations 0.00

Other operations 0.00

Excluded operations 0.00

   

Output to ./dirdat/et:

   

*** Total statistics since 2013-04-07 22:22:48 ***

   

No database operations have been performed.

   

*** Daily statistics since 2013-04-08 00:00:00 ***

   

No database operations have been performed.

   

*** Hourly statistics since 2013-04-08 22:00:00 ***

   

No database operations have been performed.

   

*** Latest statistics since 2013-04-07 22:22:48 ***

   

No database operations have been performed.

   

Extracting from SCOTT.EMP to SCOTT.EMP:

   

*** Total statistics since 2013-04-07 22:22:48 ***

Total inserts 56.00

Total updates 0.00

Total deletes 56.00

Total discards 0.00

Total operations 112.00

   

*** Daily statistics since 2013-04-08 00:00:00 ***

   

No database operations have been performed.

   

*** Hourly statistics since 2013-04-08 22:00:00 ***

   

No database operations have been performed.

   

*** Latest statistics since 2013-04-07 22:22:48 ***

Total inserts 56.00

Total updates 0.00

Total deletes 56.00

Total discards 0.00

Total operations 112.00

   

Extracting from OGGMGR.GGS_MARKER to OGGMGR.GGS_MARKER:

   

*** Total statistics since 2013-04-07 22:22:48 ***

   

No database operations have been performed.

   

*** Daily statistics since 2013-04-08 00:00:00 ***

   

No database operations have been performed.

   

*** Hourly statistics since 2013-04-08 22:00:00 ***

   

No database operations have been performed.

   

*** Latest statistics since 2013-04-07 22:22:48 ***

   

No database operations have been performed.

   

End of Statistics.

   

GGSCI (ocp.mycorpdomain.com) 6>

   

GGSCI (ocp.mycorpdomain.com) 8> stats EXTRACT PUMPORA

   

Sending STATS request to EXTRACT PUMPORA ...

   

Start of Statistics at 2013-04-08 22:51:27.

   

DDL replication statistics (for all trails):

   

*** Total statistics since extract started ***

Operations 2.00

   

Output to ./dirdat/rt:

   

*** Total statistics since 2013-04-07 23:11:14 ***

   

No database operations have been performed.

   

*** Daily statistics since 2013-04-08 00:00:00 ***

   

No database operations have been performed.

   

*** Hourly statistics since 2013-04-08 22:00:00 ***

   

No database operations have been performed.

   

*** Latest statistics since 2013-04-07 23:11:14 ***

   

No database operations have been performed.

   

Extracting from SCOTT.EMP to SCOTT.EMP:

   

*** Total statistics since 2013-04-07 23:11:14 ***

Total inserts 56.00

Total updates 0.00

Total deletes 56.00

Total discards 0.00

Total operations 112.00

   

*** Daily statistics since 2013-04-08 00:00:00 ***

   

No database operations have been performed.

   

*** Hourly statistics since 2013-04-08 22:00:00 ***

   

No database operations have been performed.

   

*** Latest statistics since 2013-04-07 23:11:14 ***

Total inserts 56.00

Total updates 0.00

Total deletes 56.00

Total discards 0.00

Total operations 112.00

   

End of Statistics.

  

--Target DB

GGSCI (ocp.mycorpdomain.com) 2> stats REPLICAT REPORA

   

Sending STATS request to REPLICAT REPORA1 ...

   

Start of Statistics at 2013-04-08 22:51:55.

   

DDL replication statistics:

   

*** Total statistics since replicat started ***

Operations 2.00

Mapped operations 2.00

Unmapped operations 0.00

Other operations 0.00

Excluded operations 0.00

Errors 0.00

Retried errors 0.00

Discarded errors 0.00

Ignored errors 0.00

   

Replicating from SCOTT.EMP to SCOTT.EMP:

   

*** Total statistics since 2013-04-07 23:24:16 ***

Total inserts 56.00

Total updates 0.00

Total deletes 56.00

Total discards 0.00

Total operations 112.00

   

*** Daily statistics since 2013-04-08 00:00:00 ***

   

No database operations have been performed.

   

*** Hourly statistics since 2013-04-08 22:00:00 ***

   

No database operations have been performed.

   

*** Latest statistics since 2013-04-07 23:24:16 ***

Total inserts 56.00

Total updates 0.00

Total deletes 56.00

Total discards 0.00

Total operations 112.00

   

End of Statistics.

   

[주의사항]

  • Vmware 환경이다 보니, Source DB -> Target DB로 작업 내용(DML/DDL)이 넘어가는데 시간이 걸리는 것을 확인할 수 있다.(1~3(s))

   

   

3.OGG Logfile List / 자주사용 되는 명령어

3-1 OGG Logfile

  • 구성시 OGG 로그를 Tail 로 열어 두고 작업하는 것이 에러를 찾는데 좋은 방법이 됩니다.

       

/OGG/ggserr.log

/$ORACLE_BASE/diag/…/Trace/ggs_ddl_trace.log

   

3-2 OGG 기타 명령어

  • EXTTRAIL / REPLICAT의 설정 시 좀더 명확하게 옵션을 줄수 있다.

    setenv (NLS_LANG = "KOREAN_KOREA.KO16KSC5601")

    setenv (ORACLE_SID = "orcl")

  • EXTTRAIL / REPLICAT 적용이 후, 사용되고 있는 파일 명 변경 한다.

    Alter REPLICAT REPORA, exttrail ./dirdat/sa

    Alter EXTTRAIL EXTORA, exttrail ./dirdat/si

  • OGG의 경우 Seqno 및 RBA,SCAN 이 틀어지는 경우가 종종 발생한다 / 해당 번호에 맞게 변경시 사용한다.

    ALTER REPLICAT REPORA, EXTSEQNO 0, EXTRBA 0

    ALTER EXTTRAIL EXTORA, EXTSEQNO 0, EXTRBA 0

   

  • 컬럼 mapping(COLMAP) / 세부 옵션의 경우 추가적으로 정리할 예정입니다.

       

[참고자료]

http://h391106.tistory.com/277

http://gssdba.wordpress.com/category/oracle-golden-gate/

http://mwguru.tistory.com/21

http://setijoagus.wordpress.com/2010/03/27/install-oracle-goldengate-2/

http://gavinsoorma.com/2010/02/oracle-goldengate-tutorial-6-configuring-data-pump-process/

http://www.oracle.com/technetwork/middleware/goldengate/downloads/index.html

   

   

블로그 이미지

운명을바꾸는자

IT와 함께 살아가는 삶

,


1.Oracle Golden Gate

1-1 Architecture

  • Manager Process
  • OGG 전체의 Process들에 대한 제어 및 모니터링 지원

       

  • EXTRACT Process
  • 데이터에 대한 변경된 사항에 대하여(Redo/Archive Log로 부터 Commit된 Transaction) Read하여 Source Trail에 변경 정보 저장

       

  • REPLICAT Process
  • Target Trail을 Read하여 주어진 Mapping Rule 조건에 맞게 Target DB에 DML, DDL 수행(SQL문 생성), SQL 생성시 Parameter 파일의 Mapping 정보를 참조
  • 생성된 SQL과 Target Trail의 데이터를 결합하여 SQL문 완성

       

  • Source/Target Trail
  • Capture된 변경정보 데이터를 저장하는 File(et00000 등)

   

1-2 OGG Directory 구성

   

Directory 명

역할

설치 시

자동생성

/dirchk

OGG Process의 Checkpoint가 기록되는 File 저장

O

/dirdat

Extract가 Capture한 Data 변경분을 저장하는 Trail File 생성

O

/dirdef

OGG 적용대상 Table들의 Definition

O

/diroby

OGG 구성을 위한 작업 File 저장

  

/dirout

OGG Process 운영 시 발생하는 오류 원인 및 오류 record 내용이 기록되는 Discard File 저장

O

/dirpcs

OGG process의 PID 기록되는 File 저장

O

/dirprm

OGG Process 적용테이블의 Mapping 방식 및 추가 설정 Option들을 지정하는 File 생성

O

/dirrpt

OGG Process 처리내역 및 오류 시 원인 저장

O

   

1-3 OGG 구성 방안

   

  • 다양한 형태의 구축방안이 있지만 이번 OGG TEST에서는 단방향 형태(DML,DDL지원)로 구축

       

2.OGG Installation

- Environment(Vmwere)

구분

Host IP

OS Version

oracle SID

DB Version

DB Schema

기타

Source

192.168.22.3

GNU /LINUX

orcl

Oracle 11.2.0.3

OGGMGR

  SCOTT

유저 사용

Target

192.168.22.10

GNU /LINUX

orcl

Oracle 11.2.0.3

OGGMGR

SCOTT

유저 사용  

   

2-1 사전 준비사항 1 (Source / Target)

SQL> create tablespace ggs_data datafile '/oradata/orcl/ggs_data01.dbf' size 200m;

   

SQL> create user oggmgr identified by oracle

default tablespace ggs_data

temporary tablespace temp;

 

grant connect, resource to oggmgr;

grant select any dictionary, select any table to oggmgr;

grant create table to oggmgr;

grant flashback any table to oggmgr;

grant execute on dbms_flashback to oggmgr;

grant execute on utl_file to oggmgr;

grant create any table to oggmgr;

grant insert any table to oggmgr;

grant update any table to oggmgr;

grant delete any table to oggmgr;

grant drop any table to oggmgr;

   

2-2 OGG S/W Installation(Source / Target)

[다운로드]

http://www.oracle.com/technetwork/middleware/goldengate/downloads/index.html

  • Source(Oracle 유저)

    $ Mkdir /OGG

    $ unzip ogg112101_fbo_ggs_Linux_x86_ora11g_32bit

    $ tar xvf fbo_ggs_Linux_x86_ora11g_32bit.tar

  • Target(Oracle 유저

    $ Mkdir /OGG

    $ unzip ogg112101_fbo_ggs_Linux_x86_ora11g_32bit

    $ tar xvf fbo_ggs_Linux_x86_ora11g_32bit.tar

  • OGG Installation(Source / Target)

    $./ggsci

    GGSCI (ocp.mycorpdomain.com) 1> create subdirs

   

2-3 사전 준비사항 2(Source)

  • Archivelog mode

       

    SQL> ALTER SYSTEM SET LOG_ARCHIVE_START=TRUE SCOPE=SPFILE;

       

    -- LOG_ARCHIVE_DEST 파라미터 변경

    SQL> ALTER SYSTEM SET LOG_ARCHIVE_DEST_1='LOCATION=/home/oracle/arch' SCOPE=SPFILE;

     

    -- LOG_ARCHIVE_FORMAT 파라미터 변경

    SQL> ALTER SYSTEM SET log_archive_format='ora_%s_%t_%r.arc' SCOPE=SPFILE;

       

    SQL> SHUTDOWN IMMEDIATE

       

    SQL> STARTUP MOUNT

       

    -- 아카이브 로그 확성화                

    SQL>ALTER DATABASE ARCHIVELOG;

       

    SQL> ALTER DATABASE OPEN;

      

  • Supplemental logging

       

    SQL> alter database add supplemental log data;

      

  • Support DDL

       

    SQL> alter system set recyclebin=off scope=spfile;

       

    -GoldenGate는 Oracle 9i 이후 버전에 대하여 DDL을 지원한다. 그 이전 버전에서는 DDL이 지원되지 않는다. 아래의 objects에 대해서 2 MB 이내의 모든 DDL operation을 지원한다.

       

    -DDL replication을 수행하기 위해서는 반드시 Oracle recycle bin이 'OFF'로 설정되어야 한다. Recycle bin이 활성화되어 있을 경우, GoldenGate의 DDL tigger session이 내포된 recycle bin에 의해 tigger 실패를 야기할 수 있는 DDL operation를 받을 수 있게 된다.

       

    -Oracle 기본 schema에 대해서는 DDL은 무시된다.

   

2-4 사전 준비사항 3 (Source / Target)

  • OGG Run Scripts

    $sqlplus "/as sysdba"
     

    SQL> @/OGG/marker_setup.sql 

       

    Enter GoldenGate schema name: OGGMGR

    ….

       

    SQL> @/OGG/ddl_setup.sql 

    Enter GoldenGate schema name: OGGMGR

    …..

       

    SQL> @/OGG/role_setup.sql 

    Enter GoldenGate schema name: OGGMGR

    …..

       

    SQL> grant ggs_ggsuser_role to OGGMGR

     Grant succeeded.

    SQL>@/OGG/ddl_enable

       

    Trigger altered.

       

    SQL>@/OGG/ddl_pin OGGMGR

  • Additional logging(Table Level / Schema Level)

       

    $./ggsci

    GGSCI (ocp.mycorpdomain.com) 1> dblogin userid oggmgr, password oracle

    Successfully logged into database.

       

    -- Trandata 추가

    GGSCI (ocp.mycorpdomain.com) 2> add trandata scott.*

       

    (Add trandata scott.emp / add trandata scott.*)

       

    -- 추가된 Trandata 확인

    GGSCI (ocp.mycorpdomain.com) 3> info trandata scott.*

       

    Logging of supplemental redo log data is enabled for table SCOTT.BONUS.

       

    Columns supplementally logged for table SCOTT.BONUS: ENAME, JOB, SAL, COMM.

       

    Logging of supplemental redo log data is enabled for table SCOTT.DEPT.

       

    Columns supplementally logged for table SCOTT.DEPT: DEPTNO.

       

    Logging of supplemental redo log data is enabled for table SCOTT.EMP.

       

    Columns supplementally logged for table SCOTT.EMP: EMPNO.

       

    Logging of supplemental redo log data is enabled for table SCOTT.SALGRADE.

       

    Columns supplementally logged for table SCOTT.SALGRADE: GRADE, LOSAL, HISAL.

      

   

[참고자료]

http://h391106.tistory.com/277

http://gssdba.wordpress.com/category/oracle-golden-gate/

http://mwguru.tistory.com/21

http://setijoagus.wordpress.com/2010/03/27/install-oracle-goldengate-2/

http://gavinsoorma.com/2010/02/oracle-goldengate-tutorial-6-configuring-data-pump-process/

http://www.oracle.com/technetwork/middleware/goldengate/downloads/index.html

   

블로그 이미지

운명을바꾸는자

IT와 함께 살아가는 삶

,



Hadoop-Hive

   

  • Hadoop 의 확장성과 가용성은 이해할 수 있었으나 자바 맵리듀스 프로그램을 작성하는 것과 복잡성 때문에 광범위한 채택에 대한 해결책이 필요

       

  • 기술자와 분석가는 SQL 쿼리 방식의 도구를 생각, 대부분의 개발자들이 PHP와 파이선 같은 스크립트 언어에 익숙 
  • 익숙한 언어와 hadoop 프로그램이 요구하는 언어의 차이를 줄일 수 있는 소프트웨어를 개발하는 것이 필수
  • 데이터가 테이블과 파티션으로서 표현될 수 있고 쿼리와 분석을 위해 SQL같은 언어 또한 사용할 수 있는 시스템. 사용자가 선택한 프로그래밍 언어로 작성된 맵리듀스 프로그램을 쿼리에 연결할 수 있는 능력. --> HIVE 사용.

       

    - 하이브는 하둡의 최상위에 구축된 데이터 웨어하우스 기반구조이다. 

    - 페이스북의 하둡에 저장된 데이터에 쿼리하기 위해 사용될 수 있는 도구.

       

       

       

       

Mysql Installation on Ubuntu

   

  • Mysql 설치

Apt-get Install mysql-server mysql-client

   

  • MySQL 서비스 상태 확인

   

  • MySQL 서비스 재시작
  • /etc/init.d/mysql restart

       

MySQL에 Hive 계정 생성(default)

Mysql -uroot -p

   

  • 데이터베이스 생성

Mysql> create database metastore_db;

Mysql> use mysql

   

  • 계정만들기

Mysql> insert into user(host,user,password) values('%', 'hive', password('hive'));

Mysql> Flush privileges;

Mysql> grant all privileges on metastore_db.* to hive@localhost identified by 'hive' with grant option;

Mysql> Flush privileges;

Mysql> grant all privileges on metastore_db.* to hive@'%' identified by 'hive' with grant option;

Mysql> Flush privileges;

   

  • Hive 다운로드 및 설치

>wget http://archive.cloudera.com/cdh/3/hive-0.7.1-cdh3u5.tar.gz

>tar xvgz hive-0.7.1-cdh3u5.tar.gz

>wget

http://repo.maven.apache.org/maven2/mysql/mysql-connector-java/5.1.9/my

sql-connector-java-5.1.9.jar

>cp mysql-connector-java-5.1.9.jar ./hive-0.7.1-cdh3u5/lib

   

  • Hive 설정
     
    • HIVE_HOME/conf/hive-defalt.xml

   

<property>

<name>hive.metastore.local</name>

<value>true</value>

</property>

<property>

<name>javax.jdo.option.ConnectionURL</name>

<value>jdbc:mysql://localhost:3306/hive?createDatabaseIfNotExist=true</value>

</property>

<property>

<name>javax.jdo.option.ConnectionDriverName</name>

<value>com.mysql.jdbc.Driver</value>

<description>Driver class name for a JDBC metastore</description>

</property>

<property>

<name>javax.jdo.option.ConnectionUserName</name>

<value>root</value>

</property>

<property>

<name>javax.jdo.option.ConnectionPassword</name>

<value>[패스워드 설정]</value>

</property>

   

  • HADOOP_HOME/conf/core-site.xml

<configuration>

<property>

<name>fs.default.name</name>

<value>hdfs://hadoop-virtualbox:9000</value>

</property>

</configuration>

   

Hive 디렉터리 생성

<HADOOP_HOME>/bin/hadoop fs –mkdir /tmp

<HADOOP_HOME>/bin/hadoop fs -mkdir /user/hive/warehouse

<HADOOP_HOME>/bin/hadoop fs -chmod g+w /tmp

<HADOOP_HOME>/bin/hadoop fs -chmod g+w /user/hive/warehouse

   

데이터 다운로드

• wget

http://www.grouplens.org/sites/www.grouplens.org/external_fi

les/data/ml-10m.zip

• wget http://www.grouplens.org/system/files/ml-1m.zip

• unzip ml-1m.zip

• cd ml-1m

   

HIVE Command

hive> CREATE TABLE rating(userid INT, movieid INT, rating FLOAT, ds STRING) ROW FORMAT DELIMITED FIELDS TERMINATED BY ',' STORED AS TEXTFILE;

   

hive> show tables;

   

hive> LOAD DATA LOCAL INPATH '/home/hadoop/m1-1m,/ratings.dat' OVERWRITE INTO TABLE rating;

   

hive> select count(*) from rating r;

   

hive> select r.userid from rating r where r.userid = '41810';

   

[참고자료]

거침없이 배우는 하둡(Hadoop IN Action)

http://hadoopdb.sourceforge.net/guide/

http://hadoop.apache.org/docs/r0.20.2/hdfs_design.html

http://www.ibm.com/developerworks/kr/library/

http://bradhedlund.com/2011/09/10/understanding-hadoop-clusters-and-the-network/

   

   

   

블로그 이미지

운명을바꾸는자

IT와 함께 살아가는 삶

,



Oracle VM-UBUNTU

   

  • 새로 만들기(유분투)

       

   

   

   

  • 메모리(2048MB) 설정

       

   

   

   

   

   

  • 유분투 설치

       

       

       

       

       

  • 게스트 확장 설치

       

       

  • 공유폴더 지정

       

       

  • Root 유저 사용을 위한 Passwd 변경

       

       

       

(Root 유저)

   

Mkdir -p /media/shared

   

Mount -t vboxsf shared /media/shared

   

Vi /etc/init.d/rc.local

   

Mount -t vboxsf shared /media/shared

   

UBUNTU Telnet 서버스 설치

  • Hadoop 설정시 Telnet 과 SSH가 열려 있어야 합니다.

       

    • Telnet 패키지 설치 (root 유저)

Apt-get install xinetd

Apt-get install telnetd

   

  • Vi /etc/xinetd.conf

       

   

service telnet

   

{

disable = no

flags = REUSE

socket_type = stream

wait = no

user = root

server = /usr/sbin/in.telnetd

log_on_failure += USERID

   

}

   

/etc/init.d/xinetd restart

Telnet restart

   

   

  • Telnet 접속확인

Telnet localhost

   

   

  • Network 설정

     

     

       

       

       

       

       

UBUNTU SSH 설치

   

  • SSH Pkg 설치

Apt-get install openssh-server openssh-client

  • Key 생성

Ssh-keygen -t rsa -P ""

   

   

  • 인증키 복사

Cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys

   

자바설치

   

  • 설치파일

Chmod +x jdk-6u38-linux-i586.bin

./jdk-6u38-linux-i586.bin

   

update-alternatives --install /usr/bin/javac javac /usr/lib/jvm/bin/javac 1

update-alternatives --install /usr/bin/java java /usr/lib/jvm/bin/java 1

update-alternatives --install /usr/bin/javaws javaws /usr/lib/jvm/bin/javaws 1

   

  • Java version 확인

Java -version

   

   

   

Hadoop 설치 - Pseudo mode

  • Local Mode, Pseudo Mode, Cluster Mode 중 Pseudo Mode 설치

       

  • 설치파일

Tar xvzf ./hadoop-0.20.2-cdh3u5.tar.gz

   

  • Hadoop psuedo-mode 설정
  • Home/hadoop/hadoop-0.20.2-cdh3u5/conf

       

  • Core-site.xml : namenode

<configuration>

<property>

<name>fs.default.name</name>

<value>hdfs://localhost:9000</value>

</property>

</configuration>

~

  • Hdfs-site.xml : HDFS 관련 설정, 복제경로

<configuration>

<property>

<name>fds.replication</name>

<value>1</value>

</property>

</configuration>

  • Mapred-site.xml : Job Tracker 위치 및 Task 정보

   

<configuration>

<property>

<name>mapred.job.tracker</name>

<value>hdfs://localhost:9001</value>

</property>

</configuration>

  • Hadoop-env.sh : 하둡 데몬관련 환경변수

export JAVA_HOME=/usr/lib/jvm

   

  • 환경변수 설정(.profile)

export JAVA_HOME=/usr/lib/jvm

export PATH=$PATH:$JAVA_HOME/bin

export HADOOP_HOME=/home/hadoop/hadoop-0.20.2-cdh3u5

   

Hadoop 구동(/home/hadoop/hadoop-0.20.2-cdh3u5)

  • Hadoop namenode -format

       

Hadoop 실행 및 프로세스 확인

  • ./start-all.sh
  • /usr/lib/jvm/bin/Jps

  • 기타 명령어
    • Hadoop fs -ls
    • Hadoop fs -mkdir
    • Hadoop fs -put
    • Hadoop fs -rmr
    • Hadoop fs -cat
    • Hadoop fs -getmerge

         

예제 1 WordCount

   

  • 디렉터리 생성 및 분석 파일 업로드

  • MapReduce 실행

       

  • 결과 확인

       

       

       

       

  • Monitoring

       

    NameNode : 50070

    DataNode : 50075

    Secondary NameNode : 50090

    Bakcup / Checkpoint Node : 50105

    JobTracker : 50030

    TraskTracker : 50060

       

       

[참고자료]

거침없이 배우는 하둡(Hadoop IN Action)

http://hadoopdb.sourceforge.net/guide/

http://hadoop.apache.org/docs/r0.20.2/hdfs_design.html

http://www.ibm.com/developerworks/kr/library/

http://bradhedlund.com/2011/09/10/understanding-hadoop-clusters-and-the-network/

   

블로그 이미지

운명을바꾸는자

IT와 함께 살아가는 삶

,


Big Data Vs RDBMS

   

  • 정형화된 비즈니스적인 중요 데이터의 경우 RDBMS 사용
  • RDBMS: seletct -> 처리 -> 보내기 / Big-Data : 작동방식(funtion)-> 처리 -> 처리완료
  • 개발 방식의 변화 OOP(object-oriented Programming) -> FP(Funtion Programming)
  • 비즈니스적으로는 중요하지만, 분석을 통하여 새로운 정보를 추출하는 경우 Big-Data 사용
  • 결론적으로, RDBMS와 Big-Data는 적절한 업무 및 환경 파악을 통하여 효율적인 구축이 필요합니다. ( 각 업무와 환경에 맞는 DB를 선택적으로 선별하여 사이트구축, 정형화되고 표준화된 Database -> 비정형화되고 다양한 형태의 Database 형태로 변화하고 있습니다)

       

데이터 분석 순서

  • 데이터 수집 ( Flune,Scribe, Chukwa)
  • 데이터 저장 ( HDFS)
  • 트렌젝션 데이터저장 (NO-SQL)
  • 실시간 분석 (S4, Strom, OEP)
  • 배치 분석 (Map/Reduce)
  • 데이터 마이닝/통계 ( Mahout R)
  • 클러스터 관리 (zookeeper, HIVE)
  • 데이터직렬화 (Arvo 등)

   

HaDoop Distributed File System

   

  • HDFS 의 장단점
    • 장점 : X86 장비내보 로컬디스크, 수천개의 대규모 클러스터, 고가용성(1-5000), 장애시 자동감시 및 복구, 서버 추가 및 재설치 불필요, 분석용 데이터 저장가능
    • 단점 : 저장가능한 파일수의 한계, Namenode의 SPOF, 범용스토리지를 사용할 경우의 제약
      • 단일 고장점(single point of failure, SPOF)는 시스템 구성 요소 중에서, 동작하지 않으면 전체 시스템이 중단되는 요소를 말한다.

           

  • 데이터 저장 방식
    • NameNode에서 해당 데이터의 위치정보를 따라 Client를 통해 DataNode에 내려가게 되면, 해당 데이터는 복제(default: 3) 되어 DataNode에 저장됩니다.
    • DataNode가 사용할 수 없게 될 경우, NameNode에서는 해당데이터와 같은 내용이 복제되어 저장된 DataNode의 메타정보를 통하여 Read & Write를 진행하고 다시 한번 더 복제가 발생하여 보관됩니다.

   

   

Name Node

   

  • NameNode: 실데이터 DataNode 분산저장, 각 데이터 위치에 대한 메타정보 및 변경된 내역에 대한 Log정보를 가지고 있습니다.(기본 64MB, 복제: 3), 메모리 상에 올려놓고 각 데이터의 위치정보를 주는 역할과 변경된 내용을 저장하는 역할을 담당합니다.
  • Fsimage : 각 데이터의 위치정보, 메타정보를 가지고 있어서 쓰기 및 읽을 경우, 반드시 Name Node를 통하여 데이터를 이용할 수 있습니다.(메타정보관리)
  • Edit logs: DataNode에서 수정 및 반영된 모든 내용을 Edit log에 기록하는 역할을 담당합니다.(RDBMS의 Redolog와 비슷한 역할)
  • Namenode의 경우, 그 역활이 중요하기 때문에 SecondaryNameNode를 통하여 실시간(5분)으로 병합 및 동기화를 통하여 혹시나 발생할 수 있는 장애에 대비해야 합니다.
  • 1개의 NameNode에 대략 5000개의 DataNode 클러스터를 구성할 수 있습니다.

   

SecondaryNameNode

   

  • SecondaryNamenode의 경우, NameNode의 Fsimage(메타정보) 백업 및 edit log 정보를 병합 및 동기화하는 역할을 수행합니다.
  • NameNode에 장애가 발생할 경우, 백업된 메타정보와, 병합 및 동기화된 edit log 정보를 통하여 IP및 DNS정보를 변경하여 SecondaryNamenode-> NameNode로 변경하여 장애처리가 가능합니다.
  • Edit log가 많이 쌓이고 SecondaryNamenode가 없을 경우, 해당 로그정보들이 모두 처리되기 전까지 구동되지 않는 경우가 발생할 수 있습니다. 또한 수행 속도의 저하 및 메모리 낭비현상도 발생할 수 있습니다.

       

HDFS Client

   

  • HDFS Client의 경우 NameNode와 DataNode 사이에서 데이터의 Read와 Write를 조율해주는 역할을 해줍니다.
  • Client에서 데이터를 요청했을 경우, NameNode에서 먼저 해당 데이터에 대한 메타정보를 HDFS Client에게 보내주게 되고, 해당 정보를 바탕으로 각 DataNode에 분산되어 복제되어 있는 데이터를 가져오는 형태로 진행됩니다.

       

Data Node

   

   

  • Data Node의경우 실 데이터가 보관되어 있는 node로 데이터가 저장될 경우, 복제(default :3)가 발생하여 위 그림과 같이 각기 다른 노드에 복제되어 저장되어 있게 됩니다. 복제된 위치정보의 경우 NameNode에 의하여 관리되게 됩니다.
  • DataNode는 HeartBeat를 NameNode에게 날리면서 자신이 살아있음을 지속적으로 표현하고 혹시나 DataNode가 사용할 수 없게 될 경우 복제된 다른 노드에서 데이터를 가지고 올 수 있도록 합니다.
  • 결론적으로 NameNode의 메타정보가 분실될 경우, 데이터를 사용할 수 없게 됩니다.

       

MapReduce

  • 평균 계산 및 분산처리 결과 추출(병렬)시 뛰어난 성능을 발휘 합니다. 단, Sorting시 어려운 점이 있습니다.
  • Key-Value 형태로 데이터를 정리하고(Mapping) 각 데이터별로 Sorting을 통하여 (Shuffling) 핵심 데이터로 줄여서 (Reducing) 그 결과를 사용자에게 제공합니다.
  • Map/Reduce Job 을 구성한 클래스
    • Reducer
      • Mapper의 출력을 읽어 처리
      • 입력 Mapper의 Key와 Value 목록, 출력 Key-Value
    • Mapper
      • InputSplit에서 파일을 읽어서 처리
    • Driver
      • 각종 파일, 파라미터 처리
      • Hadoop Map/Reduce Job 실행
    • Combiner
      • Mapper에서 동작하는 Minireducer(성능 개선 시 추가되는 Class)
    • Patitiner
      • Mapper의 Key를 어느 Reducer에 보낼지 처리(확장 개선 시 추가되는 Class)
    • InputFormat / RecordReal : 입력파일을 읽어드리는 역할

       

   

Data Read 및 Write 과정

   

  • Client Data Read -> Namenode에서 해당 Data의 메타정보를 -> HDFS Client에게 전송 -> Map/Reduce -> Job Client에 Job을 제출(XML파일) -> JobTracker -> TaskerTracker -> DataNode(파이프라인) -> 데이터 찾기 완료 -> Client에게 ACK 전송(완료)
  • Client Data Write -> 반대로 -> Name Node 메모리와 Log에 변경내용 저장
  • Hadoop(Big-data)의 경우, Update 및 데이터 변경이 어렵습니다.

   

   

[참고자료]

거침없이 배우는 하둡(Hadoop IN Action)

http://hadoopdb.sourceforge.net/guide/

http://hadoop.apache.org/docs/r0.20.2/hdfs_design.html

http://www.ibm.com/developerworks/kr/library/

http://bradhedlund.com/2011/09/10/understanding-hadoop-clusters-and-the-network/

   

   

   

블로그 이미지

운명을바꾸는자

IT와 함께 살아가는 삶

,