oozieoozieを使い始める


備考

Oozieは元々Yahooで開発されたApacheのオープンソースプロジェクトです。 Oozieは、多段Hadoopジョブの汎用スケジューリングシステムです。

  • Oozieは、関連するHadoopジョブをWorkflowというエンティティに論理的にグループ化することができます。 Oozieワークフローは、アクションのDAG(Directed cyclic graph)です。
  • Oozieは、 Coordinatorと呼ばれるエンティティを使用して、 時間またはデータに依存するワークフローをスケジュールする方法を提供します。
  • さらに、関連するコーディネータをBundleと呼ばれるエンティティに結合し、Oozieサーバ上で実行をスケジュールすることができます。

OozieはMapRedudeJavaFileSystem (HDFS操作)、 HiveHive2PigSparkSSHShellDistCpSqoopなどのOozieアクションノードとしてのHadoopジョブのほとんどをサポートしていFileSystem 。これは、 Decision Control Nodeアクションと、 Fork-Join 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. Unixボックス

ステップ1:Distファイル

oozie tar.gzファイルをhttp://www-eu.apache.org/dist/oozie/4.3.0/から入手して解凍します。

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 Webconsoleを有効にするため)ただし、ExtJSライブラリはOozieにバンドルされていません。別のライセンスを使用しているためです:(あなたはlibextディレクトリ内にhadoop jarを置く必要があります。 oozie.logファイルのエラー

WARN ActionStartXコマンド:523 - SERVER [data01.teg.io] USER [hadoop] GROUP [ - ] TOKEN [] APP [map-reduce-wf] JOB [0000000-161215143751620-oozie-hado-W] ACTION [0000000-161215143751620- oozie-hado-W @ mr-node]アクション[mr-node]の開始エラー。 ErrorType [TRANSIENT]、ErrorCode [JA009]、メッセージ[JA009:クラスタを初期化できません。 mapreduce.framework.nameと対応するサーバーアドレスの設定を確認してください。]

だから、libxディレクトリの中に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 [map-reduce-wf] JOB [0000000-161220104605103-oozie-hado-W] ACTION [0000000-161220104605103- oozie-hado-W @ mr-node]エラー、java.lang.NoSuchFieldError:HADOOP_CLASSPATH

どうして? Hadoop 2.7.3をオプション "-Dhadoop.version = 2.7.3"で指定しても、oozieコンパイルによってHadoop 2.6.0 jarが生成されたためです。

したがって、このエラーを回避するには、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バイナリをoozie用に再生成します。

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設定ファイルが存在する$ HADOOP_HOME / etc / 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ファイルの$ HOME / oozie-client / binをPATH変数に追加し、端末を再起動するか、

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 exampleを実行しているときに、以下のエラーが発生することがあります

java.io.IOException:java.net.ConnectException:localhost.localdomain / 127.0.0.1から0.0.0.0:10020への呼び出しが接続例外で失敗しました:java.net.ConnectException:接続が拒否されました。詳細はhttp://wiki.apache.org/hadoop/ConnectionRefusedを参照してください

解決策: mr-jobhistory-server.shを起動します。

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

job.propertiesファイルの変更に関するもう1つの注意点は次のとおりです。

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

あなたのケースでは、これは異なっている可能性があります。私はapache hadoopを使用しているので、cloudera / hdp / anythingを使用している可能性があります

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