oozieoozie 시작하기


비고

Oozie는 원래 야후에서 개발 된 Apache 오픈 소스 프로젝트입니다. Oozie는 다단계 Hadoop 작업을위한 범용 스케줄링 시스템입니다.

  • Oozie는 관련 Hadoop 작업을 Workflow 라는 엔티티에 논리적으로 그룹화 할 수 있습니다. Oozie 워크 플로는 DAG (Directed cyclic graph) 작업입니다.
  • Oozie는 Coordinator 라는 엔티티를 사용하여 시간 또는 데이터 종속 워크 플로를 예약하는 방법을 제공합니다.
  • 또한 관련 코디네이터를 Bundle 이라는 엔티티에 결합 할 수 있으며 실행을 위해 Oozie 서버에서 예약 할 수 있습니다.

Oozie는 MapRedude , Java , FileSystem (HDFS 작업), Hive , Hive2 , Pig , Spark , SSH , Shell , DistCpSqoop 과 같은 Oozie Action Nodes와 같은 대부분의 Hadoop 작업을 지원합니다. Decision Control Node 조치 및 Fork-Join Control Node 사용하는 작업의 병렬 실행을 사용하여 Decision Control Node 결정 기능을 제공합니다. 그것은 사용자가 사용하는 워크 플로의 성공 / 실패 알림 이메일 옵션을 구성 할 수 있습니다 Email 조치를.

버전

Oozie 버전 출시일
4.3.0 2016-12-02

설치 또는 설정

사전 요구 사항

이 기사에서는 Hadoop 2.7.3에 oozie-4.3.0을 설치하는 방법을 설명했습니다.

  1. Java 1.7 이상
  2. Hadoop 2.x (여기, 2.7.3)
  3. Maven3 +
  4. 유닉스 박스

1 단계 : Dist 파일

http://www-eu.apache.org/dist/oozie/4.3.0/ 에서 oozie tar.gz 파일을 가져와 압축을 풉니 다.

cd $HOME
tar -xvf oozie-4.3.0.tar.gz
 

2 단계 : Oozie 빌드

cd $HOME/oozie-4.3.0/bin
./mkdistro.sh -DskipTests
 

3 단계 : 서버 설치

빌드 된 바이너리를 'oozie'로 홈 디렉토리에 복사하십시오.

cd $HOME
cp -R $HOME/oozie-4.3.0/distro/target/oozie-4.3.0-distro/oozie-4.3.0 .
 

3.1 단계 : libext oozie 디렉토리 안에 libext 디렉토리를 만듭니다 .

 cd $HOME/oozie
 mkdir libext
 

참고 : ExtJS (2.2+) 라이브러리 (옵션, Oozie 웹 콘솔 사용 가능) 그러나 ExtJS 라이브러리는 다른 라이센스를 사용하기 때문에 Oozie와 번들로 제공되지 않습니다. (이제 hadoop jar 파일을 libext 디렉토리에 넣어야합니다. oozie.log 파일의 오류

WARN ActionStartXCommand : 523 - SERVER [data01.teg.io] USER [hadoop] GROUP [-] TOKEN [] APP [지도 축소판] JOB [0000000-161215143751620-oozie-hado-W] ACTION [0000000-161215143751620- oozie-hado-W @ mr-node] [mr-node] 작업 시작 오류. 오류 유형 [TRANSIENT], ErrorCode [JA009], 메시지 [JA009 : 클러스터를 초기화 할 수 없습니다. mapreduce.framework.name 및 해당 서버 주소에 대한 구성을 확인하십시오.]

자, libext 디렉토리 안에 jar 파일을 넣자.

cp $HADOOP_HOME/share/hadoop/common/*.jar oozie/libext/
cp $HADOOP_HOME/share/hadoop/common/lib/*.jar oozie/libext/
cp $HADOOP_HOME/share/hadoop/hdfs/*.jar oozie/libext/
cp $HADOOP_HOME/share/hadoop/hdfs/lib/*.jar oozie/libext/
cp $HADOOP_HOME/share/hadoop/mapreduce/*.jar oozie/libext/
cp $HADOOP_HOME/share/hadoop/mapreduce/lib/*.jar oozie/libext/
cp $HADOOP_HOME/share/hadoop/yarn/*.jar oozie/libext/
cp $HADOOP_HOME/share/hadoop/yarn/lib/*.jar oozie/libext/
 

3.2 단계 : Oozie Impersonate oozie에서 가장 을 방지하려면 core-site.xml을 아래와 같이 수정하십시오.

<!-- OOZIE -->
  <property>
    <name>hadoop.proxyuser.[OOZIE_SERVER_USER].hosts</name>
    <value>[OOZIE_SERVER_HOSTNAME]</value>
  </property>
  <property>
    <name>hadoop.proxyuser.[OOZIE_SERVER_USER].groups</name>
    <value>[USER_GROUPS_THAT_ALLOW_IMPERSONATION]</value>
  </property>
 

내 귀한 사용자가 huser이고 호스트가 localhost이고 그룹이 hadoop이라고 가정합니다.

<!-- OOZIE -->
  <property>
    <name>hadoop.proxyuser.huser.hosts</name>
    <value>localhost</value>
  </property>
  <property>
    <name>hadoop.proxyuser.huser.groups</name>
    <value>hadoop</value>
  </property>
 

참고 : 혼란이 생길 ​​경우 모든 값에 *를 사용할 수 있습니다.

3.3 단계 : 전쟁 준비

cd $HOME/oozie/bin
./oozie-setup.sh prepare-war
 

그러면 oozie 디렉토리에 oozie.war 파일이 작성됩니다. 이 전쟁이 더 많이 사용될 경우이 오류가 발생할 수 있습니다.

ERROR ActionStartXCommand : 517 - SERVER [data01.teg.io] USER [hadoop] GROUP [-] TOKEN [] APP [맵 축소 -wf] JOB [0000000-161220104605103-oozie-hado-W] ACTION [0000000-161220104605103- oozie-hado-W @ mr-node] 오류, java.lang.NoSuchFieldError : HADOOP_CLASSPATH

왜? 왜냐하면, "-Dhadoop.version = 2.7.3"옵션으로 Hadoop 2.7.3을 지정할 때조차도 oozie 컴파일은 Hadoop 2.6.0 jars를 생성했기 때문입니다.

따라서이 오류를 방지하려면 oozie.war 파일을 다른 디렉토리로 복사하십시오.

mkdir $HOME/oozie_war_dir
cp $HOME/oozie/oozie.war $HOME/oozie_war_dir
cd $HOME/oozie_war_dir
jar -xvf oozie.war
rm -f oozie.war/WEB-INF/lib/hadoop-*.jar
rm -f oozie.war/WEB-INF/lib/hive-*.jar
rm oozie.war
jar -cvf oozie.war ./*
cp oozie.war $HOME/oozie/
 

그런 다음 전쟁 준비를 위해 oozie.war 바이너리를 재생성합니다.

cd $HOME/oozie/bin
./oozie-setup.sh prepare-war
 

3.4 단계 : HDFS에서 sharelib 만들기

cd $HOME/oozie/bin
./oozie-setup.sh sharelib create -fs hdfs://localhost:9000
 

자,이 sharelib 설정 오류 아래에 있습니다 :

org.apache.oozie.service.ServiceException : E0104 : 서비스 [org.apache.oozie.service.ShareLibService]를 완전히 초기화 할 수 없습니다. sharelib를 캐시 할 수 없습니다. 관리자는 oozie-setup.sh를 사용하여 sharelib을 설치하고 'oozie admin'CLI 명령을 실행하여 sharelib를 업데이트해야합니다.

이를 방지하려면 아래처럼 oozie-site.xml을 수정하십시오.

cd $HOME/oozie
vi conf/oozie-site.xml
 

아래 속성 추가

<property>
    <name>oozie.service.HadoopAccessorService.hadoop.configurations</name> 
    <value>*=/usr/local/hadoop/etc/hadoop/</value>
</property>
 

값은 $ HADOOP_HOME / etc / hadoop이어야하며 여기서 모든 hadoop 구성 파일이 있습니다.

3.5 단계 : Oozie DB 생성

cd $HOME/oozie
./bin/ooziedb.sh create -sqlfile oozie.sql -run
 

3.6 단계 : 데몬 시작

Oozie를 데몬으로 시작하려면 다음 명령을 사용하십시오.

./bin/oozied.sh start
 

그만하다

./bin/oozied.sh stop
 

로그에 오류가 있는지 확인하십시오 (있는 경우).

cd $HOME/oozie/logs
tail -100f oozie.log
 

다음 명령을 사용하여 명령 줄에서 Oozie의 상태를 확인하십시오.

$ ./bin/oozie admin -oozie http://localhost:11000/oozie -status
System mode: NORMAL
 

4 단계 : 클라이언트 설치

$ cd
$ cp oozie/oozie-client-4.3.0.tar.gz .
$ tar -xvf oozie-client-4.3.0.tar.gz
$ mv oozie-client-3.3.2 oozie-client
$ cd bin
 

.bashrc 파일의 PATH 변수에 $ HOME / oozie-client / bin을 추가하고 터미널을 다시 시작하거나 실행하십시오.

source $HOME/.bashrc
 

설정에 대한 자세한 내용은 다음 URL을 참조하십시오. https://oozie.apache.org/docs/4.3.0/DG_QuickStart.html

이제는 터미널에 누출 된 작업을 제출할 수 있습니다.

예제를 실행하려면이 URL을 따라 첫 번째 예를 설정하여 https://oozie.apache.org/docs/4.3.0/DG_Examples.html 을 실행하면 됩니다.

위 URL에서 map reduce 예제를 실행하는 중에 오류가 발생할 수 있습니다.

java.io.IOException : java.net.ConnectException : 호출 localhost.localdomain / 127.0.0.1에서 0.0.0.0:10020 연결에 예외가 발생했습니다 : java.net.ConnectException : Connection refused; 자세한 내용은 http://wiki.apache.org/hadoop/ConnectionRefused를 참조하십시오.

해결책 : mr-jobhistory-server.sh를 시작하십시오.

cd $HADOOP_HOME/sbin
./mr-jobhistory-server.sh start historyserver
 

job.properties 파일 수정에 대한 또 다른 요점은 다음과 같습니다.

nameNode=hdfs://localhost:9000
jobTracker=localhost:8032
 

귀하의 경우,이 다를 수 있습니다, 내가 아파치를 사용하고있다, 당신은 cloudera / hdp / 아무것도 사용할 수 있습니다.

To run spark job, I have tried running in local[*], yarn-client and
yarn-cluster as master, but succeeded in local[*] only