Oracle Data Integrator 와 Oracle Big Data Appliance 저자 - 김태완부장, 한국오라클 Fusion Middleware(taewan.kim@oracle.com) 오라클은최근 Big Data 분약에 End-To-End 솔루션을지원하는벤더로급부상하고있고, 기존관계형데이터저장소와새로운트랜드인비정형빅데이터를통합하는데이터아키텍처로엔터프로이즈시장에서주목을받고있다. 오라클은최근에새로운데이터아키텍처의외부인터페이스를지원하는솔루션으로 Oracle Big Data Connectors 를새롭게공개하였다. 이솔루션에는기존 Orace ETL솔루션인 Oracle Data Integrator가하둡클러스터를지원하도록확장한 Oracle Data Integrator Application Adapter for Hadoop 이포함되어있다. 이컴포넌트는 Hadoop 클러스터환경에서개발, 운영, 유지보수를지원하는툴로, 기존의 MapReduce에대한효율적인개발환경과빅데이터워크플로우디자인및운영, 모니터링환경을제공한다. 본기고에서는 Oracle Data Integrator Application Adapter for Hadoop의기능과이컴포넌트가 Big Data 환경에서어떤의미를갖는지에대하여알아볼것이다.
들어가는글 2012년 IT 분야에서최고의관심사는아마도빅데이터일것이다. 관계형데이터진영을대표하는오라클은 2011년 10월개최된 오라클오픈월드 2011 에서오라클빅데이터어플라이언스 (Oracle Big Data Appliance, 이하 BDA) 를출시한다고발표하였다. 이와함께클라우데라와협력하에 BDA에클라우데라하둡배포판 (CDH) 를공급한다는정책을공개하여업계의긍정적인반응을얻고있다. Oracle BDA는버클리 DB를확장한새로운 NoSQL인 Oracle NoSQL과데이터분석을위한 R 을구성요소로추가했으며하둡클러스터와외부인터페이스의효과적인통합을지원하기위하여 Oracle Big Data Connectors을바탕으로하는빅데이터플랫폼의 End-To-End 솔루션 ( 그림1 참조 ) 을지원하고있다. 특히 Oracle Big Data Connectors는하둡클러스터와외부인터페이스와의연동을지원하는 4개의구성컴포넌트로구성되어있다. 특히 Oracle Data Integrator Application Adapter for Hadoop 은하둡을기반으로하는효율적인개발환경과운영환경을지원하는핵심컴포넌트이다. < 그림 1> Oracle Big Data 소프트웨어스텍 Oracle Big Data Connectors 의구성요소일반적으로하둡클러스터에서데이터를분석하고가공하기위해서는 Acquire, Organize, Analyze 단계를거친다. Acquire 단계에서는데이터의소스시스템에서 HDFS로데이터를적재하는작업이진행된다. 여기서소스시스템은주로로컬파일시스템, 오라클같은 RDBMS가될수있다. Orgranize와 Analyze 단계에서는하둡클러스터에데이터를가공하고분석하는 MapReduce 프로그램을개발한다. 또한가공되고분석된데이터를외부시스템에적재하는작업을해야할때도있다. 대표적인예가분석된데이터를 DW에적재하는것이다. 이렇듯빅데이터를처리하는과정은외부시스템에서하둡클러스터, 개발자의프로그램개발, 하둡클러스터에서외부시스템으로인터페이스의연속이다. 이러한하둡클러스터와외부시스템과의통합을지원하는역할을담당하는솔루션이 Oracle Big Data Connectors이다. Oracle Big Data Connectors는다음과같은 4개의컴포넌트로구성된다. Oracle Loader for Hadoop ( 이하 OLH) Oracle Direct Connector for Hadoop Distributed File System ( 이하 ODCH) Oracle R Connector for Hadoop Oracle Data Integrator Application Adapter for Hadoop 우선 OLH와 ODCH는하둡클러스터의데이터를오라클데이터베이스에적재하는컴포넌트이다. OLH 는하둡클러스터의데이터를오라클데이터베이스에 MapReduce를이용하여이동시키는솔루션으로이러한작업을수행하는 MapReduce를생성하고실행한다. 이때두가지온라인모드와오프라인모드를지원한다. 온라인모드는 Reduce가 JDBC 및 OCI 인터페이스로오라클에직접데이터를저장하는방식이고오프라인모드는 Reduce가오라클이인식할수있는 Data Pump File 을생성한후오라클이로딩하는방식이다. 이컴포넌트를사용하는강점은하둡데이터를정렬하고파티션을구분하여병렬로적재하는프로세스를쉽게구성할수있다는것이다. ODCH(Oracle Director Connector for Hadoop Distributed File System) 는앞에서설명한 OLH와동일하게하둡의데이터를오라클데이터베이스에적제한다는목표는동일하다. 차이점이있다면데이터에대한관점이다. OLH에서데이터를이동하는주체는 MapReduce이다. ODCH는 HDFS을오라클이인식하도록한다. 오라클은파일시스템의여러파일을
External Table로인식할수있다. 이때 HDFS를파일시스템으로인식하여 External Table을구성함으로써내부적인병렬처리및최적화된여러기술을사용하여효과적으로데이터를오라클데이터베이스에이관시키는방법을제공한다. OLH와 ODCH는데이터를이동하는주체가다르기는하지만하둡클러스터의데이터를오라클데이터베이스에적재하는솔루션이라는공통점을갖는다. OLH 와 ODCH를사용하기위해서 Oracle Database 11g Release 2 이상이어야한다. 또한지원하는 Hadoop 버전은 Apache Hadoop 0.20.2 혹은 Cloudera CDH3이다. OLH와 ODCH가하둡클러스터로부터오라클데이터베이스로데이터를이관하는인터페이스를지원하는솔루션이라면 Oracle R Connector for Hadoop은하둡클러스터에저장된데이터에접근할수있도록지원하는 R 패키지이다. 통계패키지인 R과 HDFS의인터페이스통합을지원한다. 마지막으로 Oracle Data Integrator Application Adapter for Hadoop은빅데이터환경에서효과적인개발및운영환경을지원하는솔루션이다. 일반적으로하둡클러스터의데이터를가공하고분석하기위해서는일련의 MapReduce 프로그램을작성하고, 주기적으로이렇게개발된소프트웨어를실행하는과정을거치게된다. 일반적으로 MapReduce는자바로개발된다. 자바외에도파이썬, 루비등다른언어를지원하지만대부분의 MapReduce는현재자바로개발되고있다. 이렇게 MapReduce를개발하기위해서는상당한전문지식이필요하다. 자바로개발될경우일반적으로 1개의 MapReduce는하나의 JAR 파일로배포된다. 각 JAR 파일에포함된 MapReduce를실행하기위해서는여러파라미터를설정해야한다. 또한하나의데이터처리과정에서여러개의 MapReduce가사용된다. 따라서각 MapReduce가효과적으로워크플로우를구성할수있는환경이제공된다면효과적인것이다. 이렇게여러 MapReduce 개발을지원하고 GUI기반으로워크플로우를구성하고, 배치스케줄을관리및모니터링하는방법이있다면매우효과적일것이다. Oracle Big Data Connectors의마지막구성요소인 Oracle Data Integrator Application Adapter for Hadoop는바로이러한기능을제공한다. Oracle Data Integrator의 Hadoop 플러그인 Oracle Data Integrator Application Adapter for Hadoop은이름에서유추할수있듯이 Oracle Data Integrator( 이하 ODI) 의확장플러그인이다. ODI는오라클의 ETL 솔루션으로이기종시스템간에대용량데이터를추출, 변환, 적재하는데이터통합솔루션이다. 기본적으로 ETL의속성을갖고있기때문에데이터를분석하고가공하는프로세스를선언적으로개발하는특성과 ODI가개발한데이터가공프로세스를주기적인배치관리기능그리고 ODI 데이터처리프로세스가실행되는상태를모니터링하는기능을제공한다. ODI의대표적인특징은다음과같다. E-LT 아키텍처 선언적인개발방식 지식모듈 (Knowledge Module) 일반적인 ETL 아키텍처는추출한데이터를가공하는고성능 ETL 서버를별도로구성하는것이일반적이다. 이 ETL 서버에서데이터를가공한후최종결과를타켓시스템에적재하는절차를거친다. ODI는 ETL 아키텍처를개선한 E-LT를채용하고있다. ODI는 E-LT를사용하기때문에 ETL 서버가필요없는구조이다. 결과적으로임베디드 ETL을구성하기에유리한특정을갖는다. < 그림 2 참조 > < 그림 2> 전통적인 ETL 아키텍처와 E-LT 아키텍처 ODI는지식모듈 (Knowledge Module) 과선언적개발방식을사용한다. 지식모듈은 ODI가이기동데이터를통합하기위해서생성하는코드의템플릿이다. 이지식모듈은 ODI의통합대상이되는소스와대상데이터모델의메타정보그리고개발자가정의한설정값과결합하여실행코드를생성한다. 이지식모듈을통해서솔루션벤더는해당기술 ( 데이터유형 ) 에대한 Best Practice
를제공하고사용자는이지식모듈을커스터마이징하여해당사이트에더욱최적화할수있다. 또한이지식모듈은 XML 파일이기때문에버전관리및재사용하기쉽다. 이렇게 Oracle Data Integrator Application Adapter for Hadoop은 ODI가하둡을지원할수있도록확장한플러그인이다. 하둡을위한이 ODI 플러그인에는 Hive 와 OLH에최적화된지식모듈이포함되어있다. 이지식모듈은 ODI에하둡메타데이터를구성하고, 하둡에데이터를적제한후하둡에데이터를변경한다. 또한 Oracle Loader for Hadoop을사용하여 Oracle Database 에데이터적제를용이하게한다. 여기에포함된지식모듈은다음과같다. 로세스를디자인하는워크플로우를디자인하는환경을제공한다. 마지막으로배치스케줄관리와운영상태를모니터링할수있다.< 그림 4 참조 > ODI 플러그인을이용하면지식모듈을이용하여다음과같은작업을할수있다. ODI에하둡메타데이터구성 Hadoop 에데이터를적해하고 Hadoop 클러스터에서데이터변환 데이터작업후 OLH를이용하여오라클데이터베이스에데이터를적재 IKM File to Hive(Load Data) 로컬파일시스템혹은 HDFS의파일에저장된비정형데이터를 Hive 에저장. IKM Hive Control Append Hive에저장되어있는데이터를변환하거나검증 IKM Hive Transform Hive에비정형데이터변환. IKM File/Hive to Orcle(OLH) Hive에저장된데이터를처리하여 Oracle 에적재. RKM Hive Hive 테이블을리버스엔지니어링하여모델을생성. 하둡클러스터에저장된데이터를검증하고변환하는데이터처리는 MapReduce Job을통해서이루어진다. 결과적으로 MapReduce를개발하기위해서는상당한전문지식이필요하다. Hive는 SQL과유사한쿼리문인 HiveQL을사용하기때문에 SQL에익숙한사람이라면친숙하게사용할수있다는장점을갖는다. Oracle Data Integrator를사용하면 MapReduce 개발의부하를줄일수있다. 앞에서설명한것처럼 ODI는 MapReduce job을추상화하기위해서 Hive와 HiveQL 을사용한다. ODI는그래픽사용자인터페이스를사용하여 Hive 코드를효과적으로생성한다. < 그림 3 참조 > 또한개발된 MapReduce Job을명시적으로호출하고프 < 그림 3> GUI 기반의 Hive 테이블맵핑 < 그림 4> 워크플로우구성 하둡용 ODI 플러그인의주요특징은다음과같다. 개발자생산성향상 GUI 를제공하여개발자의학습속도및개발효율성향상 하둡의워크플로우를정의하고관리 워크플로우의실행모니터링지원 < 그림 5> 참조 MapReduce Job 생성및호출 하둡통합 Hive를사용하여하둡과통합 ODI 내에서 Hive 메타데이터를재사용 하둡내에서변환과필터링적용 HiveQL과같은 SQL문으로변환 성능최적화 하둡 ODI 지식모듈최적화
ODI 와 Oracle Load for Hadoop 을이용하여고성능적재 Oracle Load for Hadoop 구성과실행가능 < 그림 5> ODI 의프로세스실행모니터링로그 결론오라클은 Big Data Appliance와클라우데라배포판 Hadoop 소프트웨어스텍을포함한 End-To-End 솔루션을제공한다. Oracle Data Integrator Application Adapter for Hadoop을이용하여효과적인데이터가공및분석환경을만들수있다. < 그림 6 참조 > Big Data Appliance에서 ODI 사용함으로써 MapReduce 의개발을단순화할수있다. 또한이기종성이강한하둡클러스터전체를수용가능한일관성있는통합개발관리툴을적용할수있다. 특히 Oracle Data Integrator Application Adapter for Hadoop을이용하여엑사데이터와하둡클러스터의최적화된통합환경을구성할수있을것이다. < 그림 6> 생산성과효율성을높이는빅데이터구성