우지(Oozie) 란?

: 하둡의 잡(job)을 관리하기 위한 서버 기반의 워크플로 스케줄링 시스템입니다. 자바 기반의 웹 애플리케이션으로서 Java servlet-container에서 수행되는 서버 기반의 워크플로 엔진으로 정의할 수 있습니다.

 

 

 

우지(Oozie)의 등장 배경

: 반복적이면서 복잡한 후처리 job을 처리하기 위해 방향성 있는 비순환 그래프(DAG:Direct Acyclic Graph)로 정의해서 job에 시작, 처리, 분기, 종료점 등의 액션(Action)으로 구성하는 워크플로(workflow)가 필요했습니다. 또한 수집 및 적재된 수백 개 이상의 데이터셋을 대상으로 다양한 후처리 job이 데이터 간의 의존성과 무결성을 유지하며 복잡하게 실행되었습니다. 이러한 필요성에 의해서 우지가 만들어졌습니다.

 

 

 

우지(Oozie)의 기능

 

1) Scheduling

  - 특정 시간에 액션 수행

  - 주기적인 간격 이후에 액션 수행

  - 이벤트가 발생하면 액션 수행

 

2) Coordinating

  - 이전 액션이 성공적으로 끝나면 다음 액션 시작

 

3) Managing

  - 액션이 성공하거나 실패했을 때 이메일 발송

  - 액션 수행시간이나 액션의 단계를 저장

 

 

 

우지(Oozie) 아키텍처

 

- Oozie Workflow : 주요 액션에 대한 작업 규칙과 플로우를 정의

 

- Oozie Client : 워크플로를 Server에 전송하고 관리하기 위한 환경

 

- Oozie Server : 워크플로 정보가 잡으로 등록되어 잡의 실행, 중지, 모니터링 등을 관리

 

- Control 노드 : 워크플로의 흐름을 제어하기 위한 Start , End , Decision 노드 등의 기능을 제공

 

- Action 노드 : 잡의 실제 수행 태스크를 정의 하는 노드로서 하이브, 피그, 맵리듀스 등의 액션으로 구성

                    (우지에서 실행 할 수 있는 하나의 작업 단위)

 

- Coodinator : 워크플로 잡을 실행하기 위한 스케줄 정책을 관리(Data sets과 Workflow를 실행하는 스케줄러 정의)

 

 

 

우지(Oozie)의 실행 순서

 

1. 클라이언트는 우지 서버에 연결하여 job properties을 제출합니다.

- job properties는 key-value 형태로 작업에 필요한 파라미터를 정의합니다.

- workflow.xml(Action들과 그들을 연결하는 로직은 Workflow를 정의) 파일의 NameNode와 Yarn ResourceManager(혹은 JobTracker)에 대한 URI를 포함하고 있습니다.

 

2. 우지 서버가 HDFS로 부터 workflow 파일을 읽습니다. .

3. 우지 서버에서 workflow를 파싱해서 액션을 수행합니다.

+ Recent posts