Search

Oozie

여러 하둡 작업을 실행하고 관리하는 위크플로우 스케줄러 시스템이다.
데이터 수집부터 분석에 이르는 데이터 파이프라인 구성 시, 이전 작업의 출력이 다음 작업의 입력으로 이어지게되는 순차적 작업 구조가 만들어진다. Oozie는 작업에 단계를 정의하여 워크플로우를 수립하고 개별 하둡 작업을 순차적으로 실행하고 관리하는 역할을 한다.
하둡 작업에는 자바 맵리듀스, 스트리밍 맵리듀스, 피그, 하이브, 스파크, 스쿱 등이 있다. 하둡 작업이 아닌 작업 중엔 자바 프로그램이나 쉘 스크립트 수행 작업이 있다.
이러한 작업들을 순차적인 구조로 표현하기 위해 Oozie의 워크플로우 작업은 여러 액션의 DAG(Directed Acyclic Graph)를 구성한다.

Oozie의 작업 유형

워크플로우
결과 기반 제어 기능과 제어 종속성(선행 작업이 완료되기 전까지 다음 작업이 실행될 수 없음)을 제공하는 하둡 작업 시퀀스이다.
코디네이터(Coordinator)
예약된 워크플로우 작업이며, 다양한 시간 간격으로 작업을 반복실행할 수 있다. 특정 데이터 생성 시 바로 작업을 실행할 수 있도록 설정할 수 있다.
번들(Bundle)
여러 코디네이터 작업을 일괄 실행할 수 있는 한단계 높은 추상화 객체이다.

Oozie 노드 유형

Control flow nodes(제어 플로우 노드)
START, END, KILL 노드
워크 플로우의 시작과 끝을 정의한다.
FORK
현재 지점에서 다수의 분기를 생성한다.
JOIN
분기된 작업의 완료를 기다리는 랑데부 포인트를 지정한다.
DECISION
조건문을 사용하여 진행할 분기를 결정한다.
Action nodes(액션 노드)
실제로 처리되는 작업을 정의한다. 액션을 실행하는 원격 시스템이 액션 실행을 완료한 후, 그 사실을 Oozie에게 알리면 Oozie는 다음 노드를 실행할 수 있다. 하둡작업, 시스템 작업 이외에도 HDFS 명령을 실행할 수 있다.
Java MapReduce, Streaming MapReduce, Pig, Hive, Scoop, FileSystem tasks, Distributed copy, Java , rograms, Shell scripts, Http, Email, Oozie sub worklows 등을 포함한다.