Big Data/Apache Oozie
Apache Oozie 알아보기
Data Engineer
2017. 9. 21. 15:23
Oozie 개요
Oozie는 정식 홈페이지에 나와 있듯이 Hadoop ecosystem에서 사용하는 Workflow Scheduler(혹은 orchestration) 프레임워크이다.
Oozie에서 제공하는 기능은 크게 아래의 3가지와 같다.
- Scheduling
- 특정 시간에 액션 수행
- 주기적인 간격 이후에 액션 수행
- 이벤트가 발생하면 액션 수행
- Coordinating
- 이전 액션이 성공적으로 끝나면 다음 액션 시작
- Managing
- 액션이 성공하거나 실패했을 때 이메일 발송
- 액션 수행시간이나 액션의 단계를 저장
Oozie Terminology
- 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 실행 순서
(1) 클라이언트는 우지 서버에 연결하여 job properties을 제출
- job properties는 key-value 형태로 작업에 필요한 파라미터를 정의
- workflow.xml(Action들과 그들을 연결하는 로직은 Workflow를 정의) 파일의 NameNode와 Yarn ResourceManager(혹은 JobTracker)에 대한 URI를 포함하고 있음
(2) 우지 서버가 HDFS로 부터 workflow 파일을 읽는다.
(3) 우지 서버에서 workflow를 파싱해서 액션을 수행한다.
참고 : Oozie launcher
- 우지 런처는 하나의 맵태스크로 이루어진 맵리듀스 job
- 우지가 런처를 이용하는 이유는 모니터링과 관리와 같은 것을 Hadoop cluster에게 위임하기 위해서이다.