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

オージーとは何ですか?

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

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

  • ワークフロー エンジン: ワークフロー エンジンの役割は、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 ファイル内のパラメーターの定義と、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にはクライアントAPIとコマンドラインインターフェースがあり、これを使ってジョブを起動、制御、監視することができます。 Java アプリケーション。
  • Web サービス API を使用すると、どこからでもジョブを制御できます。
  • Oozie には、定期的に実行するようにスケジュールされたジョブを実行する機能があります。
  • Oozie には、ジョブの完了時に電子メール通知を送信する機能があります。