2013 02 12 n.
Download
Skip this Video
Loading SlideShow in 5 Seconds..
2013. 02. 12 PowerPoint Presentation
Download Presentation
2013. 02. 12

Loading in 2 Seconds...

play fullscreen
1 / 40

2013. 02. 12 - PowerPoint PPT Presentation


  • 281 Views
  • Uploaded on

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

loader
I am the owner, or an agent authorized to act on behalf of the owner, of the copyrighted work described.
capcha
Download Presentation

PowerPoint Slideshow about '2013. 02. 12' - artan


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.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -
Presentation Transcript
2013 02 12
2013. 02. 12

애플리케이션보안그룹

김민혁 선임, 서성혁 선임, 장미향 사원, 고현진 사원

Hadoop Workflow Management

Oozie, Azkaban, Cascading, HMake

slide2

Hadoop Workflow Management System 개요

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

Agenda

hadoop workflow management system
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)

wms position
WMS 의 Position

출처 : http://jameskaskade.com/?p=2209

oozie
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

oozie1
Oozie

Oozie의 특징

- Workflow를 실행하고 모니터링 ( 하둡 )

- Workflow의 주기적인 스케줄링

=> 매시간, 매일, 매주 단위로 작업을 실행 가능

- 데이터 활용을 위한 트리거 실행

- HTTP 인터페이스 / Command Line 인터페이스 / Web 콘솔 지원

=> 인터넷이 되는 모든곳에서 작업 제어 가능

- 다양한 프로그램 실행 가능

=> MapReduce in HDFS / Pig, Hive /일반 자바 프로그램( MR이 필요없는 작업, HDFS API)

- Sliding 스케쥴링

- 작업이 완료되면 결과를 이메일로 통보 가능

oozie2
Oozie

Oozie의 Workflow (DAG Workflow)

- DAG (Direct Acyclic Graph) Workflow : 순차적이고 비순환적인 그래프

- 순차적이면서 병렬 처리 가능

- 개별 단계는 병렬로 수행(MapReduce) 가능

- 전체적으로는 순차적인 수행( 조건 분기 )

  • 흐름 제어 노드
  • - start / end / kill
  • - 조건분기
  • - fork / join
  • 액션 노드 : 어플리케이션
  • - MapReduce
  • - Pig
  • - HDFS
  • - Sub-Workflow
  • - 일반 자바 프로그램
oozie3
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

oozie4
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]"/>

azkaban
Azkaban

2009년부터 LinkedIn내부적으로 사용하기 시작.

독립적인 job들이 하나의 workflow로 만들어지도록 하고 주기적으로 실행되도록 예약할 수 있는 workflow scheduler 이다.

웹 기반으로 사용자 접근성이 쉽고 job의 상태 및 계층 구조를 비쥬얼화하여 볼 수 있도록 한다.

job 실패 시 재시도 및 로그 수집, job resource locking, job 실행 history를 확인할 수 있다.

job의 성공, 실패를 이메일로 받아 볼 수 있다.

job의 dependencies 옵션을 주어 job 간의 연관, 선후 관계를 정할 수 있다.

azkaban1
Azkaban

Job and Configuration

- key/value의 형태로 속성 파일 저장

Flow Instance

- Job의 dependency 및 flow 설정

azkaban2
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 스크립트를 실행한다.

azkaban3
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

-재시도 대기 시간을 설정한다.

cascading
Cascading

Cascading

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

cascading2
Cascading

Wordcount sample 구조

parsedLogFlow

sinkTap

sourceTap

Input file

output file

wcPipe

cascading3
Cascading

Loganalysis sample 구조

arrivalRateFlow

importLogFlow

output file

tsSinkTap

tsCountPipe

parsedLogTap

logTap

Input file

importPipe

tsPipe

tmCountPipe

tmSinkTap

output file

hamake
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 에서만 사용이 가능.

hamake install
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

hamake examples
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

….

hamake examples1
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">

slide23
WMS 비교

test

출처 : http://code.google.com/p/hamake/wiki/HamakeComparisonWithOtherWorkflowEngines

big data paas stack
별첨 : Big Data PaaS Stack

출처 : http://jameskaskade.com/?p=2209

big data paas stack1
Big Data PaaS Stack

출처 : http://hadooper.blogspot.kr/2010_10_01_archive.html

cloudera 2011
별첨 : Cloudera(2011)

출처 : http://practicalanalytics.wordpress.com/2011/11/06/explaining-hadoop-to-management-whats-the-big-data-deal/

cloudera 2012
별첨 : Cloudera(2012)

출처 : http://practicalanalytics.wordpress.com/2011/11/06/explaining-hadoop-to-management-whats-the-big-data-deal/

cloudera enterprise
별첨 : ClouderaEnterprise

출처 : http://www.theregister.co.uk/2012/10/24/cloudera_hadoop_impala_real_time_query/

penguin hadoop stack
별첨 : Penguin Hadoop Stack

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

slide31
별첨 : MapR

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

dell cloudera hadoop stack
별첨 : Dell-ClouderaHadoop stack

출처 : http://www.theregister.co.uk/2011/08/04/dell_cloudera_hadoop_stack/

dryad software stack
별첨 : Dryad Software Stack

출처 : http://www.zdnet.com/blog/microsoft/microsoft-research-parallel-programming-project-set-to-go-commercial-in-2011/7161

opera solutions
별첨 : Opera Solutions

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

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

* 액티비티/오퍼레이션 스트림 : 트위터, 페이스 북에서의 사용자의 페이지 뷰 패턴 등과 같은 실시간 정보를 액티비티 스트림, 서버의 실시간 상태등과 같은 실시간 정보를 오퍼레이션 스트림이라 함

reference
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