1 / 40

2013. 02. 12

2013. 02. 12 . 애플리케이션보안그룹 김민혁 선임 , 서성혁 선임 , 장미향 사원 , 고현진 사원. Hadoop Workflow Management. Oozie , Azkaban, Cascading, HMake. Hadoop Workflow Management System 개요 WMS 의 Position Oozie Azkaban Cascading Hamake WMS 비교 별첨 : Hadoop Software Stack

artan
Download Presentation

2013. 02. 12

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 2013. 02. 12 애플리케이션보안그룹 김민혁 선임, 서성혁 선임, 장미향 사원, 고현진 사원 Hadoop Workflow Management Oozie, Azkaban, Cascading, HMake

  2. Hadoop Workflow Management System 개요 • WMS 의 Position • Oozie • Azkaban • Cascading • Hamake • WMS 비교 • 별첨 : HadoopSoftware Stack • 별첨 :주목받는5가지 오픈소스빅데이터 요소 기술 Agenda

  3. Hadoop Workflow Management System 개요 Workflow 란? business process를 수행하기 위해 일어나는 일련의 업무 흐름. 한 조직체 내에서 발생하는 일련의 업무들을 정의하고, 정해진 시간 안에 업무가 자동적으로 수행 되도록 보장하기 위해, 클라이언트/서버 기술을 기반으로 하여 만든 소프트웨어. Hadoop Map/Reduce Workflow Management System Oozie: http://yahoo.github.com/oozie/ Azkaban: http://sna-projects.com/azkaban/ Cascading: http://www.cascading.org/ Hamake: http://code.google.com/p/hamake/ 기타(pomsets)

  4. WMS 의 Position 출처 : http://jameskaskade.com/?p=2209

  5. Oozie Server based Workflow Engine specialized in running workflow jobs with actions that run Hadoop Map/Reduce and Pig jobs - Oozie는 하둡의 Workflow 스케쥴러 - 야후에서 복잡한 검색엔진의 Workflow를 위해 개발 - Hadoop의 여러 종류의 Job(M/R, Hive, Pig 등)을 - 사용자가 정의한 DAG(Direct Acyclic Graph)에 따라 - 실행하는 - 서버 기반 WorkFlow 엔진/Coordinator 엔진/Bundle 엔진 Oozie는 서버다 (데몬) License는 Apache License 2.0

  6. Oozie Oozie의 특징 - Workflow를 실행하고 모니터링 ( 하둡 ) - Workflow의 주기적인 스케줄링 => 매시간, 매일, 매주 단위로 작업을 실행 가능 - 데이터 활용을 위한 트리거 실행 - HTTP 인터페이스 / Command Line 인터페이스 / Web 콘솔 지원 => 인터넷이 되는 모든곳에서 작업 제어 가능 - 다양한 프로그램 실행 가능 => MapReduce in HDFS / Pig, Hive /일반 자바 프로그램( MR이 필요없는 작업, HDFS API) - Sliding 스케쥴링 - 작업이 완료되면 결과를 이메일로 통보 가능

  7. Oozie Oozie의 Workflow (DAG Workflow) - DAG (Direct Acyclic Graph) Workflow : 순차적이고 비순환적인 그래프 - 순차적이면서 병렬 처리 가능 - 개별 단계는 병렬로 수행(MapReduce) 가능 - 전체적으로는 순차적인 수행( 조건 분기 ) • 흐름 제어 노드 • - start / end / kill • - 조건분기 • - fork / join • 액션 노드 : 어플리케이션 • - MapReduce • - Pig • - HDFS • - Sub-Workflow • - 일반 자바 프로그램

  8. Oozie <workflow-app name='wordcount-wf' xmlns="uri:oozie:workflow:0.1"> <start to='wordcount'/> <action name='wordcount'> <map-reduce> <job-tracker>${jobTracker}</job-tracker> <name-node>${nameNode}</name-node> <configuration> <property> <name>mapred.mapper.class</name> <value>org.myorg.WordCount.Map</value> </property> <property> <name>mapred.reducer.class</name> <value>org.myorg.WordCount.Reduce</value> </property> <property> <name>mapred.input.dir</name> <value>${inputDir}</value> </property> <property> <name>mapred.output.dir</name> <value>${outputDir}</value> </property> </configuration> </map-reduce> <ok to='end'/> <error to=kill'/> </action> <kill name='kill'> <message>Something went wrong: ${wf:errorCode('wordcount')}</message> </kill/> <end name='end'/> </workflow-app> Oozie WorkFlow Example

  9. Oozie Oozie의 Workflow(조건분기, fork, join) 조건분기(Decision) - 분기노드는 결과에 따라 각각 다른 작업으로 분기되는 기능을 제공 - HDFS EL Function을 이용하여 다양한 조건 분기 가능 <decision name="[NODE-NAME]"> <switch> <case to="singlethreadedjob"> ${fs:fileSize(lastJob) it 1*GB} </case> <case to="MRJob"> ${fs:fileSize(lastJob) it 1*GB} </case> </switch> </decision> Fork - 병렬 작업의 시작 <fork> <path start="firstjob"> [OTHER JOBS] </fork> Join - 병렬 작업들이 합쳐짐 - 모든 fork된 작업이 완료되어야 다음단계로 전환됨 <join name="[NAME JOBS]" to="[NEXT-NODE]"/>

  10. Azkaban 2009년부터 LinkedIn내부적으로 사용하기 시작. 독립적인 job들이 하나의 workflow로 만들어지도록 하고 주기적으로 실행되도록 예약할 수 있는 workflow scheduler 이다. 웹 기반으로 사용자 접근성이 쉽고 job의 상태 및 계층 구조를 비쥬얼화하여 볼 수 있도록 한다. job 실패 시 재시도 및 로그 수집, job resource locking, job 실행 history를 확인할 수 있다. job의 성공, 실패를 이메일로 받아 볼 수 있다. job의 dependencies 옵션을 주어 job 간의 연관, 선후 관계를 정할 수 있다.

  11. Azkaban Job and Configuration - key/value의 형태로 속성 파일 저장 Flow Instance - Job의 dependency 및 flow 설정

  12. Azkaban Job의 type : javaprocess job, command, java job, pig job command job unix명령어를 직접 입력하여 실행하는 job. javaprocess job main method를 가진 java class를 실행한다. 일반적인 java class. java job azkaban에서 실행, 취소, 진행상태에 대한 method를 구현한 java class. property를 통해 method를 설정할 수 있다. pig job pig 스크립트를 실행한다.

  13. Azkaban job resource locking : 특정 resource에 대해 여러 job이 읽고 있는 경우 write가 불가능하도록 한다. job.permits 특정 resource에 대한 접근 가능한 job 수. read.lock/write.lock -job이 수행되는 동안 resource에 대한 lock 수행가능 기타 job properties dependencies 해당 job의 종속적인 job들을 설정한다. 작성한 job들이 끝나야 해당 job이 실행된다. notify.emails 해당 job이 성공하거나 실패하면 입력한 이메일로 알려준다. retries 해당 job이 실패하면 몇 번 더 재시도 할지 설정할 수 있다. retry.backoff -재시도 대기 시간을 설정한다.

  14. Cascading Cascading • 일반 사용자들도 빠르고 쉽게 데이터 분석, 관리 어플리케이션을 개발 가능하게 하는 자바 어플리케이션 프레임워크. • 맵리듀스 단 위에 있는 자바 라이브러리. • 자바 라이브러리이므로 새로운 문법을 사용하지 않고 새로운 시스템을 설치할 일이 없음.

  15. Cascading Data Processing API Cascading은 복잡한 데이터 흐름을 정의하고 데이터 중심의 정교한 프레임 워크를 만드는 풍부​​한 자바 API이다. 이 프레임 워크는 Maven 호환 라이브러리, 또는 도메인 특화 언어(DSLs) 일 수 있다. Data Integration API Cascading은 개발자가 복잡한 통합 문제를 해결하기 전에 다양한 기능을 만들고 테스트 할 수 있습니다. 따라서 Data flow를 연결하기 전에 통합 대상들을 개발하고 테스트 할 수 있습니다. Process Scheduler API Riffle lifecycle annotation과 결합된 Process Scheduler는 Cascading이 third-party application 작업을 스케쥴 가능하도록 해준다. 원본 : http://www.cascading.org/about/ 주요 API 소개

  16. Cascading Wordcount sample 구조 parsedLogFlow sinkTap sourceTap Input file output file wcPipe

  17. Cascading Loganalysis sample 구조 arrivalRateFlow importLogFlow output file tsSinkTap tsCountPipe parsedLogTap logTap Input file importPipe tsPipe tmCountPipe tmSinkTap output file

  18. Hamake 데이터 중심(data-driven)의 WorkFlow를 설정할 수 있는 Utillity 특징 경량 유틸리티 - 복잡한 설치 필요 없음 데이터 흐름 프로그래밍 모델 기반(DAG) 쉬운 학습 곡선. 아마존 Elastic MapReduce지원 MapReduce작업뿐만 아니라 PIG Latin scripts를 실행 Hamake와 Cascading의 차이점 Cascading는 API, hamake은 utility Hamake는 Oozie와 Azkaban Oozie및 Azkaban는 설치 및 서비스(데몬)로 실행해야 할 서버 측 시스템 결론 : 목표인 SLIMAS 의 UI와 연동해서 사용하는 것이 목적인데, Hamake의 경우, Linux console 에서만 사용이 가능.

  19. Hamake install 다운로드 ]$ wgethttp://hamake.googlecode.com/files/hamake-2.0b-3.jar 2. 설정 ]$ vi ~/.bashrc … export HADOOP_HOME=/home/hadoop/hadoop export HADOOP_HOME_WARN_SUPPRESS=1 export PATH=$PATH:$HADOOP_HOME/bin 3. 실행 ]$ hadoopjar hamake-2.0b.jar -f path_to_hamake-file

  20. Hamake Examples [hadoop@lmdn025 bin]$ pwd /home/hadoop/hamake/examples/bin [hadoop@lmdn025 bin]$ cat start-class-size-example.sh #!/usr/bin/env bash export HAMAKE_HOME=/home/hadoop/hamake hadoopfs -rmr build hadoopfs -rmrdist hadoopfs -rmr test hadoopfs -mkdir build/lib hadoopfs -mkdirdist/examples hadoopfs -mkdir test/resources/scripts hadoopfs -put $HAMAKE_HOME/examples/*.jar dist/examples hadoopfs -put $HAMAKE_HOME/examples/data/*.jar build/lib hadoopfs -put $HAMAKE_HOME/*.jar dist hadoopfs -put $HAMAKE_HOME/examples/scripts/*.pig test/resources/scripts hadoop jar $HAMAKE_HOME/hamake-2.0b-3.jar -f file://$HAMAKE_HOME/examples/hamakefiles/class-size.xml [hadoop@lmdn025 bin]$ ./start-class-size-example.sh Deleted hdfs://lmms001:9000/user/hadoop/build ….

  21. Hamake Examples [hadoop@lmdn025 hamakefiles]$ pwd /home/hadoop/hamake/examples/hamakefiles [hadoop@lmdn025 hamakefiles]$ cat class-size.xml <?xml version="1.0" encoding="UTF-8"?> <project name="test"> <property name="output" value="build/test"/> <property name="lib" value="build/lib"/> <property name="dist" value="dist/examples"/> <property name="scripts" value="test/resources/scripts"/> <foreach name="jar-listings"> … <foreach name="filter-listing"> … <fold name="histogram"> … <fold name="median"> …

  22. Hamake Examples

  23. WMS 비교 test 출처 : http://code.google.com/p/hamake/wiki/HamakeComparisonWithOtherWorkflowEngines

  24. 별첨 : Big Data PaaS Stack 출처 : http://jameskaskade.com/?p=2209

  25. Big Data PaaS Stack 출처 : http://hadooper.blogspot.kr/2010_10_01_archive.html

  26. 별첨 : Cloudera(2011) 출처 : http://practicalanalytics.wordpress.com/2011/11/06/explaining-hadoop-to-management-whats-the-big-data-deal/

  27. 별첨 : Cloudera(2012) 출처 : http://practicalanalytics.wordpress.com/2011/11/06/explaining-hadoop-to-management-whats-the-big-data-deal/

  28. 별첨 : ClouderaEnterprise 출처 : http://www.theregister.co.uk/2012/10/24/cloudera_hadoop_impala_real_time_query/

  29. 별첨 : Major Services

  30. 별첨 : Penguin Hadoop Stack 출처 :http://gigaom.com/2011/06/29/battle-on-mapr-cloudera-pimp-their-version-of-hadoop/

  31. 별첨 : MapR 출처 : http://gigaom.com/2011/06/29/battle-on-mapr-cloudera-pimp-their-version-of-hadoop/

  32. 별첨 : Dell-ClouderaHadoop stack 출처 : http://www.theregister.co.uk/2011/08/04/dell_cloudera_hadoop_stack/

  33. 별첨 : Dryad Software Stack 출처 : http://www.zdnet.com/blog/microsoft/microsoft-research-parallel-programming-project-set-to-go-commercial-in-2011/7161

  34. 별첨 : Opera Solutions 출처 : http://gigaom.com/2011/09/06/6-companies-doing-big-data-in-the-cloud/

  35. 별첨 : 주목받는5가지 오픈소스빅데이터 요소 기술 * 액티비티/오퍼레이션 스트림 : 트위터, 페이스 북에서의 사용자의 페이지 뷰 패턴 등과 같은 실시간 정보를 액티비티 스트림, 서버의 실시간 상태등과 같은 실시간 정보를 오퍼레이션 스트림이라 함

  36. 별첨 : 주목받는5가지 오픈소스빅데이터 요소 기술

  37. 별첨 : 주목받는5가지 오픈소스빅데이터 요소 기술

  38. Q & A

  39. Reference Oozie: http://yahoo.github.com/oozie/ Azkaban: http://sna-projects.com/azkaban/ Cascading: http://www.cascading.org/ HMake: http://code.google.com/p/hamake/ http://www.crobak.org/2012/07/workflow-engines-for-hadoop/ http://mixellaneous.tistory.com/969 http://www.mimul.com/pebble/default/2012/01/05/1325752204610.html

More Related