Apache Oozie 튜토리얼: 워크플로란 무엇인가, 예 – Hadoop
오지(OOZIE)란 무엇인가요?
Apache Oozie는 Hadoop용 워크플로 스케줄러입니다. 종속 작업의 워크플로를 실행하는 시스템입니다. 여기에서 사용자는 다음을 생성할 수 있습니다. 방향성 비순환 그래프 Hadoop에서 병렬 및 순차적으로 실행될 수 있는 워크플로우입니다.
두 부분으로 구성됩니다.
-
워크플로 엔진: 워크플로 엔진의 역할은 MapReduce, Pig, Hive와 같은 Hadoop 작업으로 구성된 워크플로를 저장하고 실행하는 것입니다.
- 코디네이터 엔진: 사전 정의된 일정과 데이터 가용성을 기반으로 워크플로 작업을 실행합니다.
Oozie는 확장 가능하며 Hadoop 클러스터에서 수천 개의 워크플로(각각 수십 개의 작업으로 구성됨)의 적시 실행을 관리할 수 있습니다.
Oozie는 매우 유연합니다. 작업을 쉽게 시작, 중지, 일시 중지 및 재실행할 수 있습니다. Oozie를 사용하면 실패한 워크플로를 매우 쉽게 다시 실행할 수 있습니다. 다운타임이나 실패로 인해 놓쳤거나 실패한 작업을 따라잡는 것이 얼마나 어려운지 쉽게 이해할 수 있습니다. 실패한 특정 노드를 건너뛰는 것도 가능합니다.
OOZIE는 어떻게 작동하나요?
Oozie는 클러스터에서 서비스로 실행되고 클라이언트는 즉시 또는 나중에 처리할 워크플로 정의를 제출합니다.
Oozie 워크플로우는 다음으로 구성됩니다. 액션 노드 그리고 제어 흐름 노드.
An 액션 노드 파일을 HDFS로 이동, MapReduce, Pig 실행 등의 워크플로 작업을 나타냅니다. 하이브 작업, Sqoop을 사용하여 데이터 가져오기 또는 다음으로 작성된 프로그램의 쉘 스크립트 실행 Java.
A 제어 흐름 노드 이전 작업 노드의 결과에 따라 다른 분기를 따를 수 있는 조건 논리와 같은 구문을 허용하여 작업 간의 워크플로 실행을 제어합니다.
시작 노드, 끝 노드및 오류 노드 이 노드 범주에 속합니다.
노드 시작, 워크플로 작업의 시작을 지정합니다.
엔드 노드, 작업 종료를 알립니다.
오류 노드 오류 발생 및 해당 오류 메시지를 인쇄하도록 지정합니다.
워크플로 실행이 끝나면 Oozie에서 HTTP 콜백을 사용하여 워크플로 상태로 클라이언트를 업데이트합니다. 작업 노드에 들어가거나 나가면 콜백이 트리거될 수도 있습니다.
예제 워크플로 다이어그램
Oozie 워크플로 애플리케이션 패키징 및 배포
워크플로 애플리케이션은 워크플로 정의와 MapReduce Jar 파일, Pig 스크립트 등과 같은 모든 관련 리소스로 구성됩니다. 애플리케이션은 간단한 디렉토리 구조를 따라야 하며 다음에 배포됩니다. HDFS Oozie가 액세스할 수 있도록 말이죠.
예제 디렉토리 구조는 아래와 같습니다.
<name of workflow>/</name> ??? lib/ ? ??? hadoop-examples.jar ??? workflow.xml
Workflow.xml(워크플로 정의 파일)을 최상위 디렉터리(워크플로 이름이 있는 상위 디렉터리)에 보관해야 합니다. Lib 디렉토리에는 MapReduce 클래스가 포함된 Jar 파일이 포함되어 있습니다. 이 레이아웃을 준수하는 워크플로우 애플리케이션은 Ant 또는 Maven과 같은 빌드 도구를 사용하여 빌드할 수 있습니다.
이러한 빌드는 다음과 같은 명령을 사용하여 HDFS에 복사해야 합니다.
% hadoop fs -put hadoop-examples/target/<name of workflow dir> name of workflow
Oozie 워크플로 작업 실행 단계
이 섹션에서는 워크플로 작업을 실행하는 방법을 살펴보겠습니다. 이를 실행하기 위해 Oozie 명령줄 도구(Oozie 서버와 통신하는 클라이언트 프로그램)를 사용합니다.
1. 사용할 Oozie 서버를 oozie 명령에 알려주는 OOZIE_URL 환경 변수를 내보냅니다(여기에서는 로컬로 실행되는 서버를 사용함).
% export OOZIE_URL="http://localhost:11000/oozie"
2. 다음을 사용하여 워크플로 작업을 실행합니다.
% oozie job -config ch05/src/main/resources/max-temp-workflow.properties -run
-config 옵션은 로컬을 나타냅니다. Java 워크플로 XML 파일의 매개 변수에 대한 정의가 포함된 속성 파일과 Oozie에게 HDFS에서 워크플로 애플리케이션의 위치를 알려주는 oozie.wf.application.path.
속성 파일의 내용 예:
nameNode=hdfs://localhost:8020 jobTracker=localhost:8021 oozie.wf.application.path=${nameNode}/user/${user.name}/<name of workflow>
3. 워크플로 작업 상태 가져오기-
워크플로우 작업의 상태는 '-info' 옵션과 함께 'job' 하위 명령을 사용하고 '-info' 뒤에 작업 ID를 지정하여 볼 수 있습니다.
e.g., % oozie job -info <job id>
출력에는 RUNNING, KILLED 또는 SUCCEEDED 중 하나의 상태가 표시됩니다.
4. 성공적인 워크플로 실행 결과는 다음과 같은 Hadoop 명령을 사용하여 볼 수 있습니다.
% hadoop fs -cat <location of result>
Oozie를 사용하는 이유는 무엇입니까?
Oozie를 사용하는 주요 목적은 Hadoop 시스템에서 처리되는 다양한 유형의 작업을 관리하는 것입니다.
작업 간의 종속성은 사용자가 방향성 비순환 그래프 형식으로 지정합니다. Oozie는 이 정보를 사용하고 워크플로에 지정된 대로 올바른 순서로 실행을 관리합니다. 이렇게 하면 사용자가 전체 작업 흐름을 관리하는 데 소요되는 시간이 절약됩니다. 또한 Oozie에는 특정 작업의 실행 빈도를 지정하는 기능이 있습니다.
오지의 특징
- Oozie에는 작업을 시작, 제어 및 모니터링하는 데 사용할 수 있는 클라이언트 API 및 명령줄 인터페이스가 있습니다. Java 응용 프로그램.
- 웹 서비스 API를 사용하면 어디서나 작업을 제어할 수 있습니다.
- Oozie에는 정기적으로 실행되도록 예약된 작업을 실행하는 기능이 있습니다.
- Oozie에는 작업 완료 시 이메일 알림을 보내는 기능이 있습니다.