Apache Oozie 소개
Oozie 개요
Oozie는 정식 홈페이지에 나와 있듯이 Hadoop ecosystem에서 사용하는 Workflow Scheduler(혹은 orchestration) 프레임워크입니다. Oozie에서 제공하는 기능은 크게 아래의 3가지와 같습니다.
- Scheduling
- 특정 시간에 액션 수행
- 주기적인 간격 이후에 액션 수행
- 이벤트가 발생하면 액션 수행
- Coordinating
- 이전 액션이 성공적으로 끝나면 다음 액션 시작
- Managing
- 액션이 성공하거나 실패했을 때 이메일 발송
- 액션 수행시간이나 액션의 단계를 저장
Oozie 용어
- Action
- 우지에서 실행할 수 있는 하나의 작업 단위
- MapReduce 작업, Spark 작업, Shell script 등
- Workflow
- Action들의 제어와 의존 관계를 DAG(Directed acyclic graph) 표현
- Coordinator
- Data sets과 Workflow를 실행하는 스케줄을 정의
- Bundle
- 코디네이터의 모임
Oozie Architecture
우지는 Client-Server Model의 형태입니다. 아키텍처는 위의 그림과 같습니다.
Oozie 구성요소
- Workflow Engine
- 워크플로우를 실행
- 하나의 워크플로우는 여러개의 액션을 포함
- Coordinator(Scheduler)
- 미리 지정된 위치의 데이터셋의 존재 여부나 frequency에 따라 워크플로우를 스케줄링
- REST API
- 실행, 스케줄, 워크플로우 모니터링하는 API가 있음
- CLI
- 커맨드라인을 통하여 작업을 실행하거나 스케줄링, 모니터링 가능
- Bundle
- 코디네이터를 모아서 한번에 제어하게 해주는 단위
- Notifications
- 작업 상태가 변경 여부에 따라 이벤트를 보내줌
- SLA(Service Level Agreement) monitoring
- 시작, 종료 시간이나 지속 시간을 기반으로 하여 작업에 대한 SLA를 추적하는데 어떤 작업이 SLA를 달성하거나 못하는지 체크하여 사용자에게 통지해줌
- Database
- 코디네이터, 번들 SLA 및 workflow 이력 등을 저장
Oozie 실행 순서
- 클라이언트는 우지 서버에 연결하여 job properties을 제출
- job properties는 key-value 형태로 작업에 필요한 파라미터를 정의
- workflow.xml(Action들과 그들을 연결하는 로직은 Workflow를 정의) 파일의 NameNode와 Yarn ResourceManager(혹은 JobTracker)에 대한 URI를 포함하고 있음
- 우지 서버가 HDFS로 부터 workflow 파일을 읽습니다.
- 우지 서버에서 workflow를 파싱해서 액션을 수행합니다.
Oozie launcher
- 우지 런처는 하나의 맵태스크로 이루어진 맵리듀스 job
- 우지가 런처를 이용하는 이유는 모니터링과 관리와 같은 것을 Hadoop cluster에게 위임하기 위해서입니다.