Welcome! 🙋‍♂️ View more

Engineering 💻/Hadoop

[Hadoop] 오케스트레이션 (feat. Oozie, Airflow)

DeepFlame 2022. 1. 13. 19:10

 

데이터 추출 배치 작업과 데이터 분석 파이프라인은 독립적인 여러 단계로 구성되어있으며, 각 단계마다 다른 기술이 사용될 수 있다. 

이런 파이프라인 작업에 대한 오케스트레이션 및 스케줄링과 같은 복잡한 상호 의존 관계를 나타낼 방법이 필요하다.

 

Oozie


하둡에서 사용되는 작업 스케줄링 및 실행 프레임워크이다. 

우지서버는 하둡 작업을 직접 실행하지 않고, 하둡 클러스터에 맡기는 아키텍처 덕분에 가볍다 따라서 수백 개의 액션을 동시에 쉽게 실행할 수 있다.

 

출처: https://seamless.tistory.com/31

프로세스

  1. Client: XML 파일로 정의된 작업을 제출한다. 처리 과정이 플로우 차트와 비슷하다고 볼 수 있다. 
  2. Workflow Engine: 기본 실행단위인 액션을 구성하고, 연쇄적으로 함께 실행돼야 하는 액션을 묶어 워크플로우를 구성한다.
  3. Scheduler: 구성된 워크플로우는 코디네이터를 통해서 스케줄링된다. 또한 관련있는 여러 코디네이터를 번들로 그룹지어 정해진 시간에 실행할 수 있다.

작업 정의와 관련된 모든 파일과 라이브러리는 반드시 HDFS에 저장한다.
(action, workflow, coordinator details, bundles 등)

 

 

 

Airflow


Python 코드로 워크플로우를 작성하고, 스케줄링, 모니터링하는 플랫폼이다.

출처: https://airflow.apache.org/docs/apache-airflow/stable/concepts/overview.html

 

워크플로우는 DAG(비순환 방향 그래프) 형태로 나타나고, DAG를 통해 실행하고 싶은 Task들의 관계와 종속성을 표현할 수 있다.
따라서 DAG를 정확히 설정해야 Task를 원하는 대로 스케줄링하고, 실행할 수 있다.

출처: https://airflow.apache.org/docs/apache-airflow/stable/concepts/overview.html

 

출처: https://airflow.apache.org/docs/apache-airflow/stable/concepts/overview.html

구성요소

  1. Scheduler: 실행해야할 Task를 스케줄링하고, Executor로 작업을 제출한다.
  2. Executor: Task를 Worker로 푸시하여 작업을 실행시킨다.
  3. Webserver: DAG 및 Task 동작을 트리거/검사/디버그할 수 있는 사용자 인터페이스 웹서버
  4. DAG Directory: Scheduler와 Executor가 읽는 DAG 파일의 폴더
  5. Metadata DB: Scheduler, Executor, Webserver의 상태를 저장하는 DB

 

 

 

 


해당 내용은 다음 책을 참고했습니다.

엔터프라이즈 데이터 플랫폼 구축 

 

엔터프라이즈 데이터 플랫폼 구축 - YES24

자체 시스템부터 클라우드까지 엔터프라이즈 하둡과 빅데이터 플랫폼 운영, 구축, 설계의 모든 것빅데이터 기술에 대한 정보는 넘쳐나지만 이 모든 기술을 매끄럽게 연결해서 완벽한 엔터프라

www.yes24.com

 

반응형