Apache Oozie チュートリアル: とは、ワークフロー、例 – Hadoop

オージーとは何ですか?

Apache Oozie は、Hadoop 用のワークフロー スケジューラです。 依存ジョブのワークフローを実行するシステムです。 ここで、ユーザーは作成を許可されます 有向非巡回グラフ Hadoop で並列および順次に実行できるワークフロー。

これはXNUMXつの部分で構成されています。

  • ワークフロー エンジン: ワークフロー エンジンの役割は、MapReduce、Pig、Hive などの Hadoop ジョブで構成されるワークフローを保存および実行することです。
  • コーディネーターエンジン: 事前定義されたスケジュールとデータの可用性に基づいてワークフロー ジョブを実行します。

Oozie はスケーラブルで、Hadoop クラスター内の数千のワークフロー (それぞれが数十のジョブで構成されている) のタイムリーな実行を管理できます。

オージー

Oozie も非常に柔軟です。 ジョブを簡単に開始、停止、一時停止、再実行できます。 Oozie を使用すると、失敗したワークフローを非常に簡単に再実行できます。 ダウンタイムや障害により、見逃したジョブや失敗したジョブを取り戻すことがいかに難しいかは簡単に理解できます。 障害が発生した特定のノードをスキップすることも可能です。

OOZIEはどのように機能しますか?

Oozie はクラスター内のサービスとして実行され、クライアントは即時または即時にワークフロー定義を送信します。 later 処理。

Oozie ワークフローは次のもので構成されます アクションノード > 制御フローノード.

An アクションノード ワークフロー タスクを表します。例: HDFS へのファイルの移動、MapReduce、Pig、または ハイブ ジョブ、Sqoop を使用したデータのインポート、または Java で書かれたプログラムのシェル スクリプトの実行。

A 制御フローノード allo によるアクション間のワークフローの実行を制御しますwing 条件付きロジックのように構築され、以前のアクション ノードの結果に応じて異なる分岐をたどることができます。

開始ノード, エンドノード, エラーノード ノードのこのカテゴリに分類されます。

開始ノード、 ワークフロー ジョブの開始を指定します。

エンドノード、 ジョブの終了を知らせます。

エラーノード エラーの発生と、対応するエラーメッセージを出力することを指定します。

ワークフローの実行の終了時に、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 ファイル内のパラメーターの定義と、HDFS 内のワークフロー アプリケーションの場所を Oozie に伝える oozie.wf.application.path が含まれています。

プロパティ ファイルの内容の例:

nameNode=hdfs://localhost:8020
jobTracker=localhost:8021
oozie.wf.application.path=${nameNode}/user/${user.name}/<name of workflow>

3. ワークフロー ジョブのステータスを取得します。

ワークフロー ジョブのステータスは、サブコマンド 'job' と '-info' オプションを使用し、'-info' の後にジョブ ID を指定することで確認できます。

e.g., % oozie job -info <job id>

出力には、RUNNING、KILLED、SUCCEEDED のいずれかのステータスが表示されます。

4. ワークフローの実行が成功した結果は、次のような Hadoop コマンドを使用して確認できます。

% hadoop fs -cat <location of result>

なぜオージーを使うのか?

Oozie を使用する主な目的は、Hadoop システムで処理されるさまざまな種類のジョブを管理することです。

ジョブ間の依存関係は、有向非巡回グラフの形式でユーザーによって指定されます。 Oozie はこの情報を使用し、ワークフローで指定された正しい順序で実行を処理します。 これにより、ユーザーが完全なワークフローを管理する時間が節約されます。 さらに、Oozie には、特定のジョブの実行頻度を指定する機能があります。

オージーの特徴

  • Oozie には、Java アプリケーションからジョブを起動、制御、監視するために使用できるクライアント API とコマンドライン インターフェイスがあります。
  • Web サービス API を使用すると、どこからでもジョブを制御できます。
  • Oozie には、定期的に実行するようにスケジュールされたジョブを実行する機能があります。
  • Oozie には電子メールを送信する規定があります。mail ジョブ完了時の通知。