4 장 - 빅데이터처리기술
개요 기존의데이터처리방식이방대한양의데이터를한번에얼마나빠르게처리하는지에초점을맞췄다면, 현재의데이터처리기술은저장된방대한양의데이터를사용자가원하는부분에맞춰원하는시간에처리하는데초점을둔다 2
빅데이터주요처리기술 3
4
5
Hadoop 하둡 여러컴퓨터로구성된클러스터를이용하여방대한양의데이터를처리하는분산처리프레임워크. 엔진형태로되어있는미들웨어와소프트웨어개발프레임워크로구성되어있음 즉시응답해야하는트랜잭션처리보다는데이터를모은후처리하여작업을완료해야응답을주는방식으로설계되었음. 따라서어느정도의시간이소요되는방대한양의데이터처리에적합함 맵리듀스의분산처리구조를사용하며맵리듀스는하나의큰데이터를여러개의조각으로나누어처리하는맵단계와처리된결과를하나로모아서취합한후결과를도출해내는리듀스단계로구성되어있음 6
7
Pig 피그 아파치하둡세부프로젝트중하나로, 절차적데이터처리언어프레임워크 Pig 는고수준언어로데이터분석을프로그래밍할수있는방대한양의데이 터분석플랫폼이며, 이를평가할수있는인프라도함께제공하며큰특징은 대규모병렬처리에대응할수있는구조라대규모데이터처리가용이하다는 것이다 Pig Latin 피그라틴의특징 데이터흐름을명시적으로보여줄수있는코드작성이가능함 이해하기쉽고유지보수가용이 시스템이코드실행을자동으로최적화하므로사용자는효율성을생각하지않고프로그래밍내용에만집중할수있음 Pig 에서제공하는 Pig Latin 은 int, long, double 등기본형외에릴레이션 Relation, 백 Bag, 튜플 Tuple 과같은고수준의구조를제공하며, Filter, Foreach, Group, Join, Load, Store 등관계 Relation; Table 연산도지원함, 사용자지정함수도쉽게정의가능 Pig Latin 으로작성한데이터처리프로그램은논리적인실행계획으로변환되고, 이것은최종적으로맵리듀스실행계획으로변환됨 8
9
Hive 하이브 하둡에서동작하는 SQL 프로그램을구현할수있는 Hive는하둡기반의데이터웨어하우스인프라로, 관계형데이터베이스에익숙한개발자에게훌륭한인터페이스를제공함 Hive는 SQL과같이선언적으로데이터를처리할수있음 Hive는 HDFS나 HBase와같은빅데이터의원본을 HiveQL 질의언어를이용하여분석 맵리듀스기반의실행부분과데이터가저장된공간의메타데이터정보, 사용자나응용프로그램에서질의를입력받아실행시키는실행부분으로구성됨 스칼라값, 집합, 테이블수준에서사용자정의함수를지정할수있는기능을제공하여사용자확장을지원 10
11
Cascading 캐스캐이딩 하둡용오픈소스소프트웨어추상화계층 사용자들이 JVM JavaVirtual Machine; 자바가상머신기반의언어를활용하여하둡클러스터에서데이터프로세싱워크플로우를제작하고, 제작한프로그램을실행할수있도록지원 광고타깃팅이나로그파일분석, 생물정보학, 기기학습, 예측적관점의분석, 웹콘텐츠마이닝, ETLExtract/Transform/Load 응용프로그램등에주로사용 장점 다른추상화계층기술인 Pig, Hive 등과같이맵리듀스작업의복잡성을숨겨줌 특징 데이터처리 API 제공 : Cascading은복잡한데이터흐름을정의하고정교한데이터중심프레임워크를개발할수있는 API를제공 데이터통합 API 제공 : Cascading을이용하여복잡한통합문제를해결하기전에추가할기능들을생성하고, 실제환경과비슷하게테스트할수있게함 12
프로세스스케줄러 API 제공 : 다른응용프로그램과호환하여프로세스단위의스케줄을지정 예약할수있음 기업개발지원 : 기업의 Java 개발환경에맞도록설계하여대규모개발및테스트가가능 다양한언어지원 : Java 기반의 Cascading은 Scala 스칼라, Clojure 클로저, Ruby 루비, Jython 자이썬, Grooovy 그루비등 JVM 기반의다양한언어를지원 내결함성지원 : 클러스터중일부서버가데이터처리에실패하면다른서버에자동으로작업을넘겨활성화하도록구성됨. 따라서작업실패및오류때문에발생한손실을최소화함 13
Cascalog 캐스칼로그 Clojure 언어로개발되어기능적인데이터처리인터페이스를제공 Datalog 데이터로그언어의영향을받았으며, Cascading 프레임워크를바탕으로개발하여아파치 Pig, Hive, Cascading 등을대체할수있는툴임 SQL보다훨씬높은수준의사용자추상화를제공할수있으며, 이것으로작성한코드는하둡에서처리할수있게연동하여구성함 하둡클러스터에서작은규모의데이터를처리하는코드작성에적합 Cascading과비슷한방식으로입력과출력을다루며, 데이터의흐름을자연스럽게표현함 기능, 필터, 집계Aggregator가모두동일한구문을사용해작성이간편하며, 논리적으로잘구성되어약간의노력으로도쉽게 SQL과비슷한작업을수행 Null 값을처리하는핸들링기법을도입하여 Null 값의오류를최소화하고, Cascading과호환성도뛰어남 14
Mrjob 미스터잡 하둡이후로 Python을이용하여하둡을쉽게프로그래밍할수있게도와주는프레임워크가생겼음. 대표적인것이바로 Hadoopy 하둡피, Dumbo 덤보, Mrjob임 미국의맛집추천사이트로유명한 Yelp 옐프에서만든 Python 라이브러리 데이터를처리하는코드를작성한후한곳에서작동하는엘라스틱 Elastic 맵리듀스나하둡클러스터에서동작하는프레임워크를제공 추상화나내장연산은지원하지않지만, 각단계에디버거를실행하여실제코드가내부에서어떻게동작하는지파악가능함 15
Mrjob 을사용한 Yelp 웹사이트검색결과화면 [05] 16
S4Simple Scalable Streaming System 야후에서공개한오픈소스기반의분산스트림처리시스템으로야후의서비 스운영에활용됨 실시간개인화검색광고의선택과위치지정, 야후의검색서비스제공등에 필요한데이터마이닝, 기계학습등을지원하며, 임의의이벤트스트림처리 에도응용할수있는오픈소스 ZooKeeper 프레임워크를사용하여클러스터들의분산실행을관리 17
MapR 맵알 아파치하둡의배포판공급업체인 MapR Technologies 맵알테크놀로지에서높은신뢰성을요구하는기업에제공하는상업용하둡. HDFS를대체할수있는자체파일시스템으로운영하며, 분산된네임노드가있어개선된신뢰성을제공함. MapR의새로운파일시스템은성능이더욱개선되고, 백업이쉬우며, 네트워크파일시스템 Network File System; NFS 과호환할수있는등데이터전송의단순화를제공하여맵리듀스처리량을향상하고입출력프로세싱속도도개선됨. MapR의프로그래밍모델은하둡과같지만, 핵심프레임워크를둘러싼인프라스트럭처를개선하여기업에적합한통합솔루션이라할수있음. 18
19
Acunu 아큐누 기존파일시스템을대체하여 MapR과같이새로운저수준의데이터저장계층을제공하는하둡보다는 Cassandra를대체하려고개발함. 처리속도를개선하려고빅데이터의분석질의, 범위질의에효과적인 tratified B-Tree를구현하여만든저장플랫폼. 오픈소스프로젝트로공개된 Acunu의 Castle은커널레벨에서 < 키, 값 > 을저장함으로써속도를향상시킬수있고, 기존의관계형데이터베이스와비슷한자동구성과다양한관리기능을제공함. 아파치 Cassandra와하둡에포함된표준 API를유지하여호환성을높이고, Cassandra의한계점을분석하여개선하려고노력함. 소규모의하드웨어및저렴한비용으로더많은작업을수행하는것이목표로, 제어및모니터링등이포함된관리도구를제공함. 20
21
Azkaban 아즈카반 [09] LikedIn의오픈소스프로젝트인 Azkaban은각서비스가여러개의연산들을통합하여비즈니스로직으로실행하며, 이것으로사용자가원하는워크플로우를정의할수있도록개발한배치스케줄러임. Azkaban은사용자가세부작업까지관리하기어려운문제를해결하려고, 스케줄링기법을이용하여진행한작업을서로관련있는여러단계로나눠처리하기번거로운세부과정들을처리함. 로그기능을제공하여오류가발생하면이를찾아관리자에게이메일로상황을알려주며, 웹인터페이스로작업의진행상황을파악함. 유닉스명령어나 Java프로그램을불러오는최소한의명령어로된텍스트파일로처리할일을구성하고, 복잡한내부구현은각명령어나 Java 프로그램으로구현함. 22
23
Oozie 우지 Azkaban과함께하둡기반의워크플로우제어시스템. 프로세스를실행할때워크플로우에관련된결정을특정단계에서내릴수있도록 XML 파일을이용하여설정할수있게함. Java 서블릿컨테이너에서실행하는 Java 웹응용프로그램으로, 사용자가시스템의기능을확장할수있는 API도지원, 하지만 Azkaban에비해인터페이스가강력하고복잡하여사용자가필요한기능에따라작업을선택해야함. Oozie의워크플로우동작들은원격시스템에서작업을시작함. 이워크플로우는제어플로우노드와동작 Action 노드를포함함. 제어플로우노드는워크플로우의시작과끝 (start,end, fail 노드 ) 을정의하며, 워크플로우의실행경로를제어하는메커니즘 (decision,fork, join 노드 ) 도제공하는데, 여기서동작노드는계산 처리작업을실행시키는원리임. 24
25
Greenplum 그린플럼 Shared-Nothing MPP Massively Parallel Processor 구조의데이터베이스이며, PostgreSQL 포스트그레스큐엘을기반으로함. 저장데이터는적용되는연산에따라행 Row 기반이나열 Column 기반방식중하나를선택할수있다. 데이터는서버에세그먼트단위로저장되며, 로그적재 Log Shipping 방식의세그먼트단위로복제하여가용성을확보함. Java와 R 언어로쓰인사용자함수를지원하며, 빠른프로세서와메모리용량이큰클러스터위에서동작할수있도록분산구조도지원함. 표준 SQL 인터페이스를활용할수있고, 다수의시스템에데이터를복제하는 RAID 기술을활용하여데이터손실도최소화함. 26
27
EMC Greenplum UAPUnifed Analytics Platform 관계형데이터베이스를하나로합친통합빅데이터분석소프트웨어. 빅데이터분석을지원하는기업에서사용가능한통합분석플랫폼. MPP 방식의데이터베이스, MapR, 빅데이터전문가. 정형데이터를분석하는 Greenplum 데이터베이스는데이터를분리하는 MPP 방식. Greenplum 아키텍처자체가증가하는정형데이터를병렬로처리하는데강하므로속도면에서다른기술보다유리함. 데이터를공유하지않아데이터베이스간의병목현상이발생하지않고, 높은성능을유지할수있으며필요한부분만읽어들이는열기반의데이터베이스도핵심기능임. 28
29
EC2Elastic Compute Cloud [13] 아마존 EC2 는클라우드에서컴퓨팅의규모를자유롭게변경할수있는웹서 비스이며, 개발자가웹스케일컴퓨팅을쉽게사용할수있도록설계함. EC2 는웹서비스인터페이스를사용하여다양한운영체제로인스턴스를시작. EC2 는메모리및 CPU 자원을시간단위로지정하여컴퓨터를임대할수있는 웹서비스. EC2 는슈퍼유저권한으로리눅스나윈도우서버네트워크에접근할수있으 며, 소프트웨어설치및시스템설정이자유로움. Elastic Block Storage 엘라스틱블록스토리지와 S3 로기존의파일시스템과동시에 활용할수있고, 엘라스틱 Elastic 맵리듀스서비스로하둡클러스터를간단히구 성함. 가상화계층이실제하드웨어구성설정을제한하기는하지만, 네트워크통신 이나데이터전송과정에서병목현상이발생하면자동으로많은가상머신을 활용하므로성능이비교적낮은시스템으로도문제를해결할수있다는장점. 30
Heroku 히로쿠 다양한프로그래밍언어를지원하는클라우드개발도구중하나. Heroku는 Ruby/Rails기반의웹응용프로그램에빠르게적용할수있는플랫폼임. Heroku를사용하면사용자가서버관리를신경쓰지않고응용프로그램개발과관리에만집중할수있으며, Heroku client gem을이용하면명령어모드에서응용프로그램을생성하고관리할수있음. Git 모듈을이용하여개발한응용프로그램을생성및배포할수있으며, 실행중인응용프로그램은원격 Ruby 콘솔과 Rake 명령어모듈로제어가가능. Heroku는개발자가간단하게응용프로그램을생성하고, 즉각적으로실행 제어할수있는환경을제공. 31
32
R 프로그래밍언어 통계적으로계산하고그래픽을처리하는프로그래밍언어이자소프트웨어환경. R은통계소프트웨어를개발하고데이터를분석하는데널리사용하며, 패키지개발이쉬워프로그래밍비전공자인통계학자사이에서많이활용. R은핵심패키지와함께설치되며, R의패키지배포환경인 CRAN the Comprehensive R Archive Network 에서다양한패키지를내려받음. 데이터분석결과를시각화할수있으며, 수학기호가정확히표시되는출판물수준의고화질그래프를제공함. 행렬을계산하는도구로 R을활용. 33
34
Pipes 파이프 Pipes는야후가제공하는웹응용프로그램으로, 데이터파이프라인을생성. Pipes는사용자가컴포넌트를드래그앤드롭하는방식의그래픽인터페이스를사용. 사용자는 Pipes를이용하여출처의정보를끌어와이를어떤규칙으로가공할것인지결정함. Pipes로방대한양의데이터를처리하기는어려우나, 전문가용의무료응용프로그램으로다수의소규모프로세스를연결시킬수는있음. 35
36
Mechanical Turk미케니컬터크 ; Mturk [17] 컴퓨터가수행할수없는임무를수행하게하려고프로그래머가사람의인지 능력을사용하는것을도와주는크라우드소싱인터넷마켓플레이스 Crowd Sourcing Internet Marketplace 아마존에서는 HIT 를제공하려고온라인으로사람과컴퓨터간의수많은협동 작업을관리하는데, 사람들의남는노동력을이용하여저렴하게하자는것이 Mturk 의목표. Mturk 에서는비즈니스목표를달성하는데도움을줄수있는작업자의가상 커뮤니티에접근가능하며, 강력한 API 와명령도구를사용하면인간의지능 이필요한작업을광범위하게분산된요구인력에게프로그래밍방식으로배 포가능함. 사용방법은구체적결과, 결과의형식, 작업항목표시방식, 작업완료에지불 할금액을 HIT 에정의하고, 이를마켓플레이스로로드한후일정시간이지나 지정한조건에만족하는결과를업로드했는지검색할수있음. 37
Solr/Lucene솔라 / 루씬 아파치 Lucene 기반의기업검색플랫폼인 Solr 는 Java 로작성되었으며, 아파 치톰캣 Tomcat 과같은서블릿내에있는독립적인전체 - 텍스트 Full-Text 검색서버 로작동함. 강력한전체 - 텍스트검색, 다각적검색, 동적클러스터링, 풍부한문서핸들링 이가능하여다양한부분에서상당히높은확장성을지원. Solr 는파일을인덱스하는검색엔진이상으로, XML 요청을 HTTP 로보내는 웹서비스 API 가있는검색서버로, Solr 검색서버 URL 을사용하면인터넷으 로파일질의및인덱싱하는곳에서는응용프로그램을생성할수있음. 다른 Solr 검색서버로캐싱과복사가가능. 38
39
ElasticSearch 엘라스틱서치 아파치 Lucene 기반의분산형태인오픈소스검색엔진서비스로일반사용자에게적합한서비스를제공함. 사용자는짧은대기시간에검색및인덱스갱신이가능. 문서지향적이고, 장기간지속해주는신뢰, 비동기쓰기, 실시간검색이가능하며, 설치및사용이비교적쉬움. Java로개발한 ElasticSearch는하나의클러스터에문제가발생하면진행중인작업이복제되어있는다른클러스터로자동으로이동하여결과를보여줌으로써단일고장점 Single Point Of Failure; SPOF 을제거함. 다중타입을갖는다중 Tenant( 하나이상의인덱스를지원, 인덱스마다하나이상의타입을지원, 인덱스계층별로제어가능 ) 의특징을보임. JSON 파서를사용하여인덱스데이터를다루기가쉽고, 다양한곳에서인덱스구성이가능함. 40
41
Datameer데이터미어 [20] 방대한양의데이터를처리하는하둡기반비즈니스지능형마켓을목표로설 계한 Datameer 는단순한프로그래밍환경을제공함. Datameer 는종류가서로다른방대한양의데이터를모아읽어들인후하둡 프레임워크에수집한데이터들을저장하고, 분석용도구를사용하는플랫폼 을공급함. Datameer 는하둡의복잡성을숨긴채분석도구를제공하며, 기업이데이터 분석용기술을사용하는데어려움을겪기시작하는크기인 10TB 이상의데이 터소스를대상으로함. Datameer 는일단사용자가분석하려는타입을명세화한후맵리듀스작업으 로변환시킴. 몇개의사용자친화적인데이터타입변화도구와시각화기능을제공하고, 제 공되는기능을활용하여인터페이스를설계함으로써강력한추상화레벨을 제공함. 42
43
InfoSphere BigInsights인포스피어빅인사이트 IBM 의 InfoSphere BigInsights 는인터넷에서정형화된데이터및비정형화된 데이터를관리하고분석하는 IBM 의다목적솔루션. 하둡을기반으로하며, 개인사용자및기업의요구를해결하려고 IBM 연구팀 의다양한분석기술에관리, 워크플로우, 프로비저닝, 보안기능을접목시켰 으며새로운기능몇가지를추가하여기존의분석기술을더욱향상시킴. 대표적인세부컴포넌트로스프레드시트기반의분석모듈인 BigSheets 가있 음. 44
45
InfoSphere Streams인포스피어스트림즈 IBM 의 InfoSphere Streams 는짧은시간안에방대한양의스트리밍데이터를 지속적으로분석할수있는 IBM 의또다른솔루션. InfoSphere Streams 는다양한정형화데이터및비정형화데이터유형을모두 지원하는강력한확장성과빠른속도의인프라를제공함. 이기능은빠른분석으로앞으로다가올상황에적절하게대처할수있게하는 데, 이는조직과개인의통찰력및의사결정능력을향상시키는데도움이됨. 46
47
Thank You