Oozie 자습서 : Hadoop 작업을 예약하는 방법 알아보기



Apache Oozie 자습서 : Oozie는 Hadoop 작업을 관리하기위한 워크 플로 스케줄러 시스템입니다. 확장 가능하고 안정적이며 확장 가능한 시스템입니다.

이 Apache Oozie 자습서를 시작하기 전에 스케줄러 시스템이 사용되는 위치를 이해하겠습니다. 실시간 시나리오에서는 MapReduce 작업의 출력이 추가 처리를 위해 Hive 작업에 전달 될 수있는 것처럼 하나의 작업이 다른 작업에 종속됩니다. 다음 시나리오는 매일, 매주, 매월 또는 데이터 가용성에 따라 시간을 기준으로 작업 집합을 예약하는 것입니다. Apache Oozie는 이러한 종류의 시나리오를 쉽게 처리 할 수있는 기능을 제공합니다. 이것이 Apache Oozie가 .

이 Apache Oozie 자습서 블로그에서는 다음 내용을 다룹니다.





  • Apache Oozie 소개
  • Oozie 워크 플로
  • Oozie 코디네이터
  • Oozie 번들
  • 단어 수 워크 플로 작업
  • 시간 기반 단어 수 코디네이터 작업

Apache Oozie를 소개하여이 Oozie 자습서를 시작합니다. 그런 다음 계속해서 Apache Oozie를 사용하여 생성 및 실행할 수있는 작업 유형을 이해합니다.

Apache Oozie 자습서 : Apache Oozie 소개

Apache Oozie-Oozie 자습서-EdurekaApache Oozie는 분산 환경에서 Hadoop 작업을 관리하고 실행하는 스케줄러 시스템입니다. 다른 종류의 작업을 결합하여 원하는 파이프 라인을 만들 수 있습니다. Hive, Pig, Sqoop 또는 MapReduce 작업이 될 수 있습니다. Apache Oozie를 사용하여 작업을 예약 할 수도 있습니다. 작업 시퀀스 내에서 두 개 이상의 작업이 서로 병렬로 실행되도록 프로그래밍 할 수도 있습니다. 확장 가능하고 안정적이며 확장 가능한 시스템입니다.



Oozie는 워크 플로 작업을 트리거하는 오픈 소스 Java 웹 애플리케이션입니다. 그런 다음 Hadoop 실행 엔진을 사용하여 작업을 실행합니다.

Apache Oozie는 콜백 및 폴링을 통해 작업 완료를 감지합니다. Oozie가 작업을 시작하면 작업에 고유 한 콜백 HTTP URL을 제공하고 작업이 완료되면 해당 URL에 알립니다. 태스크가 콜백 URL 호출에 실패하면 Oozie는 완료를 위해 태스크를 폴링 할 수 있습니다.

Apache Oozie에는 세 가지 유형의 작업이 있습니다.



  • Oozie 워크 플로우 채용 & minus 실행될 일련의 작업을 지정하는 DAG (Directed Acyclic Graph)입니다.
  • Oozie Coordinator 채용 정보 & minus 시간 및 데이터 가용성에 따라 트리거되는 워크 플로우 작업으로 구성됩니다.
  • Oozie 번들 & minus 여러 코디네이터 및 워크 플로 작업의 패키지라고 할 수 있습니다.

이제이 모든 일을 하나씩 이해합시다.

Apache Oozie 자습서 : Oozie 워크 플로

워크 플로는 DAG (Direct Acyclic Graph)에 정렬 된 일련의 작업입니다. 다음 작업은 현재 작업의 출력 후에 만 ​​실행될 수 있으므로 작업은 서로 종속됩니다. 워크 플로 작업은 Pig 작업, Hive 작업, MapReduce 작업, Shell 작업, Java 작업 등이 될 수 있습니다. 작업을 실행하는 방법과 조건을 결정하는 의사 결정 트리가있을 수 있습니다.

작업에 따라 다양한 유형의 작업을 만들 수 있으며 각 작업 유형에는 고유 한 유형의 태그가있을 수 있습니다.워크 플로우를 실행하기 전에 워크 플로우와 스크립트 또는 jar를 HDFS 경로에 배치해야합니다.

명령: oozie 작업 –oozie http : // localhost : 11000 / oozie -config job.properties -run

작업 상태를 확인하려면 Oozie 웹 콘솔로 이동할 수 있습니다. http : // host_name : 11000 . 작업을 클릭하면 작업 상태를 볼 수 있습니다.

여러 작업을 병렬로 실행하려는 시나리오에서는 다음을 사용할 수 있습니다. 포크 . fork를 사용할 때마다 Join을 끝 노드로 사용해야합니다. 각 분기마다 조인이 있어야합니다. Join은 병렬로 실행되는 모든 노드가 단일 포크의 자식이라고 가정합니다. 예를 들어 동시에 두 개의 테이블을 병렬로 생성 할 수 있습니다.

결정 결과에 따라 작업을 실행하려면 결정 태그를 추가 할 수 있습니다. 예를 들어 이미 하이브 테이블이있는 경우 다시 만들 필요가 없습니다. 이 상황에서 테이블이 이미 존재하는 경우 테이블 생성 단계를 실행하지 않도록 결정 태그를 추가 할 수 있습니다. 의사 결정 노드에는 스위치 케이스와 유사한 스위치 태그가 있습니다.

작업 추적기, 이름 노드, 스크립트 및 매개 변수의 값을 직접 전달할 수 있습니다. 그러나 이것은 관리하기가 어려워집니다. 여기에서 구성 파일 (예 : .property 파일)이 편리합니다.

Apache Oozie 자습서 : Oozie 코디네이터

Coordinator를 사용하여 정기적으로 예약 된 워크 플로는 물론 복잡한 워크 플로를 예약 할 수 있습니다. Oozie Coordinators는 시간, 데이터 또는 이벤트 조건자를 기반으로 워크 플로 작업을 트리거합니다. 작업 코디네이터 내부의 워크 플로는 주어진 조건이 충족 될 때 시작됩니다.

코디네이터 작업에 필요한 정의는 다음과 같습니다.

  • 스타트 & minus 작업의 시작 날짜 / 시간입니다.
  • 종료 & 마이너스 작업의 종료 날짜 시간입니다.
  • 시간대 & 마이너스 코디네이터 애플리케이션의 시간대입니다.
  • 회수 & minus 작업 실행 빈도 (분)입니다.

제어 정보에 대해 몇 가지 추가 속성을 사용할 수 있습니다.

  • 타임 아웃 & minus 취소되기 전에 추가 조건을 충족하기 위해 조치가 대기하는 최대 시간 (분)입니다. 0은 조치 구체화 시점에 모든 입력 이벤트가 충족되지 않으면 조치가 즉시 시간 초과되어야 함을 나타냅니다. -1은 시간 초과가 없음을 나타내며 작업이 영원히 대기합니다. 기본값은 -1입니다.
  • 동시성 & minus 병렬로 실행할 수있는 작업에 대한 최대 조치 수입니다. 기본값은 1입니다.
  • 실행 – 코디네이터 작업의 여러 인스턴스가 실행 기준을 충족하는 경우 실행 순서를 지정합니다. 그것은 될 수 있습니다:
    • FIFO (기본값)
    • LIFO
    • LAST_ONLY

명령: oozie 작업 –oozie http : // localhost : 11000 / oozie -config -run

코디네이터 작업을 제출하는 동안 정의에 사용 된 구성 속성이 작업 구성과 함께 제공되지 않으면 작업 제출이 실패합니다.

Apache Oozie 자습서 : Oozie 번들

Oozie 번들 시스템데이터 파이프 라인이라고하는 코디네이터 애플리케이션 세트를 정의하고 실행할 수 있습니다. Oozie 번들에서는 코디네이터 애플리케이션간에 명시적인 종속성이 없습니다. 그러나 코디네이터 애플리케이션의 데이터 종속성을 사용하여 암시 적 데이터 애플리케이션 파이프 라인을 만들 수 있습니다.번들을 시작 / 중지 / 일시 중단 / 재개 / 재실행 할 수 있습니다. 더 좋고 쉬운 운영 제어를 제공합니다.

킥오프 시간 & minus 번들이 시작되고 코디네이터 애플리케이션을 제출해야하는 시간입니다.

이 Apache Oozie 자습서에서 워크 플로 작업을 만드는 방법을 이해합니다.

Apache Oozie 자습서 : 단어 수 워크 플로 작업

이 예에서는 Apache Oozie를 사용하여 Word Count Job을 실행합니다. 여기서는 MapReduce 단어 수 프로그램을 작성하는 방법에 대해 논의하지 않습니다. 따라서이 Apache Oozie 자습서를 따르기 전에 이것을 다운로드해야합니다. 단어 수 항아리 파일. 이제 모든 파일을 배치 할 WordCountTest 디렉터리를 만듭니다. 아래 이미지와 같이 단어 개수 jar를 배치 할 lib 디렉토리를 만듭니다.

이제 앞으로 나아가고 job.properties & workflow.xml 파일과 관련된 작업 및 매개 변수를 지정합니다.

job.properties

첫째, 우리는 job.properties NameNode 및 ResourceManager의 경로를 정의하는 파일입니다. 워크 플로 디렉터리 경로를 확인하려면 NameNode 경로가 필요하며 jobTracker 경로는 YARN에 작업을 제출하는 데 도움이됩니다. 우리는 경로를 제공해야합니다 workflow.xml HDFS에 저장되어야합니다.

workflow.xml

다음으로, 우리는 workflow.xml 모든 작업을 정의하고 실행합니다. 먼저 워크 플로우 앱 이름을 지정해야합니다. WorkflowRunnerTest . 그런 다음 시작 노드 . 시작 노드 ( 그만큼 시작하다 꼬리표 ) 워크 플로 작업의 진입 점입니다. 작업이 시작되어야하는 첫 번째 워크 플로 노드를 가리 킵니다. 아래 이미지에서 볼 수 있듯이 다음 노드는 교차로 0 작업이 시작되는 곳에서.

다음으로 액션 노드에서 수행 할 작업을 지정합니다. 여기서 MapReduce WordCount 작업을 실행하고 있습니다. 이 MapReduce 작업을 실행하는 데 필요한 구성을 지정해야합니다. 작업 추적기 및 네임 노드 주소를 정의하고 있습니다.

다음은 조치를 실행하기 전에 디렉토리 정리 전용으로 사용되는 준비된 요소입니다. 여기에서는 HDFS에서 삭제 작업을 수행하여 out1 이미 만들어진 경우 폴더. 준비 태그는 작업을 실행하기 전에 폴더를 만들거나 삭제하는 데 사용됩니다. 그런 다음 작업 대기열 이름, 매퍼 클래스, 감속기 클래스, 출력 키 클래스 및 출력 값 클래스와 같은 MapReduce 속성을 지정합니다.

마지막 MapReduce 작업 구성은 HDFS의 입력 및 출력 디렉터리입니다. 입력 디렉토리는 데이터 NameNode의 루트 경로에 저장된 디렉토리 . 마지막으로 작업이 실패하면 kill 요소를 지정합니다.

이제 우리는 WordCountTest HDFS의 폴더입니다. oozie.wf.application.path 속성 job.properties 파일. 그래서 우리는 WordCountTest Hadoop 루트 디렉토리의 폴더.

명령: hadoop fs -put WordCountTest /

확인하려면 NameNode 웹 UI로 이동하여 폴더가 HDFS 루트 디렉토리에 업로드되었는지 여부를 확인할 수 있습니다.

이제 우리는 모두 워크 플로우 작업을 진행하고 실행할 준비가되었습니다.

대는 자바가 있습니다

명령: oozie 작업 –oozie http : // localhost : 11000 / oozie -config job.properties -run

작업을 실행하면 작업 ID (예 : 0000009-171219160449620-oozie-edur-W ) 위 이미지와 같이. Oozie 웹 UI에서 제출 한 작업을 확인할 수 있습니다. localhost : 11000 . 아래 이미지에서 우리가 제출 한 작업이 나열되어있는 것을 볼 수 있습니다.

위의 이미지에서 관찰하면 작업 ID, 작업 이름, 작업 상태, 작업을 제출 한 사용자, 생성 시간, 시작 및 마지막 수정이 표시됩니다. 작업을 클릭하면 다음과 같은 세부 정보를 얻을 수 있습니다.

  • 직업 정보

  • 직무 정의

  • 작업 구성

작업 상태가 성공 했으므로 HDFS 루트 디렉터리로 이동하여 출력 디렉터리가 생성되었는지 여부를 확인해야합니다.

오름차순 C ++

보시다시피 oozieout HDFS에 디렉토리가 생성되었으므로 이제 생성 된 출력 파일을 살펴 보겠습니다.

Oozie 워크 플로 작업을 만드는 방법을 살펴 보았으므로 이제이 Apache Oozie Tutorial 블로그에서 진행하여 코디네이터 작업을 만드는 방법을 이해하겠습니다.

Apache Oozie 자습서 : 시간 기반 단어 수 코디네이터 작업

이 예에서는 특정 시간 간격 후에 실행될 시간 기반 단어 수 조정자 작업을 생성합니다. 매일 또는 주기적으로 실행해야하는 Apache Oozie를 사용하여 작업을 만들고 예약 할 수 있습니다.

이 Apache Oozie 자습서를 빠르게 진행하고 코디네이터 작업을 생성하겠습니다. 여기서 우리는 세 개의 파일을 만들 것입니다. coordinator.properties , coordinator.xml & workflow.xml 파일. 다시 여기에 w를 배치합니다. ordcount 안에 항아리 lib 아래 이미지와 같이 디렉토리.

이제 이러한 파일을 개별적으로 살펴 보겠습니다. 먼저 coordinator.properties 파일부터 시작하겠습니다.

여기서는 워크 플로가 실행되는 빈도를 지정합니다. 빈도는 항상 분으로 표시됩니다. 우리의 경우이 코디네이터 작업은 지정된 시간 사이에 매시간 한 번씩 실행됩니다. 빈도는 데이터 세트가 생성되고 코디네이터 애플리케이션이 실행되도록 스케줄되는 주기적 간격을 캡처하는 데 사용됩니다.

분, 시간, 일 및 월 단위로 빈도를 정의하려면 다음 형식을 사용하십시오.

$ {coord : 분 (int n)} $ {coord : minutes (45)} –> 45
$ {coord : 시간 (int n)} n * 60 $ {coord : hours (3)} –> 180
$ {coord : days (int n)} 변하기 쉬운 $ {coord : days (2)} –> 현재 날짜로부터 2 일 동안 분
$ {coord : months (int n)} 변하기 쉬운 $ {coord : months (1)} –> 현재 날짜로부터 1 개월 동안 분

다음으로 위 이미지와 같이 작업의 시작 및 종료 시간을 정의합니다. 시작 시간 작업의 시작 날짜 및 endTime 작업의 종료 날짜 / 시간입니다.

다음으로, HDFS에서 workflow.xml 파일을 참조하고 각각 YARN에 작업을 제출하는 데 사용되는 NameNode 및 ResourceManager URL을 지정합니다. 마지막으로 우리는 HDFS에 저장할 workflow.xml 경로를 지정합니다. 또한 모든 파일 및 lib 디렉토리가 저장 될 응용 프로그램 경로를 지정합니다.

두 번째 파일은 coordinator.xml 여기서 지정한 모든 속성을 coordinator.properties 파일. 이제 먼저 코디네이터 애플리케이션의 속성 (예 : 이름, 빈도 및 시간대)을 지정합니다. 다음으로 워크 플로를 하나씩 지정합니다. 여기에는 하나의 워크 플로 만 있습니다. 따라서 action 요소 내에서 워크 플로 요소를 만들고 여기서 응용 프로그램 경로를 지정합니다.

다음으로, 앞으로 나아가서 우리는 workflow.xml 작업을 지정할 파일. 다음과 유사합니다. workflow.xml 워크 플로 작업에서 만든 파일입니다.

이제 다시 한 번 WordCountTest_TimedBased HDFS에 대한 디렉토리.

명령 : hadoop fs -put WordCountTest_TimeBased /

이제 우리는 모두이 Oozie Tutorial에서이 코디네이터 작업을 진행하고 실행할 준비가되었습니다. 계속해서 실행 해 보겠습니다.

명령 : oozie 작업 –oozie http : // localhost : 11000 / oozie -config coordinator.properties -run

이 코디네이터 작업 ID (예 : 0000010-171219160449620-oozie-edur-C)를 기록해 둡니다. Oozie 웹 UI에서 작업을 추적하는 데 도움이됩니다.

Oozie 웹 UI의 코디네이터 작업 탭에 나열된 작업을 볼 수 있습니다. 워크 플로 작업과 유사하게 작업의 이름, 상태, 사용자, 빈도, 시작 및 종료 시간이 있습니다. 특정 작업을 클릭하면 아래 이미지와 같이 작업의 세부 정보가 표시됩니다.

  • 코디네이터 작업 정보

  • 코디네이터 작업 정의

  • 코디네이터 작업 구성

이제 다른 탭을 살펴 보았습니다. 출력 폴더가 생성 될 HDFS 루트 디렉토리로 돌아갑니다. 아래 이미지에서 볼 수 있듯이 oozieTimeBasedout 디렉토리가 생성되었습니다. workflow.xml 파일.

이제 생성 된 출력 파일을 살펴 보겠습니다.

이 Apache Oozie Tutorial 블로그가 유익했으면합니다. 더 많은 것을 배우고 싶다면이 과정을 통해 빅 데이터에 대해 설명하고 Hadoop이 빅 데이터와 관련된 문제를 어떻게 해결하는지 알려줍니다.

이제 Apache Oozie를 이해 했으므로 전 세계에 걸쳐 250,000 명 이상의 만족 한 학습자 네트워크를 보유한 신뢰할 수있는 온라인 학습 회사 인 Edureka에서 작성했습니다. Edureka BigData Hadoop 인증 교육 과정은 학습자가 소매, 소셜 미디어, 항공, 관광, 금융 도메인에서 실시간 사용 사례를 사용하여 HDFS, Yarn, MapReduce, Pig, Hive, HBase, Oozie, Flume 및 Sqoop의 전문가가 될 수 있도록 도와줍니다.

질문이 있으십니까? 의견란에 언급 해 주시면 연락 드리겠습니다.