[ODI, Hadoop] Hadoop - Invoke Map Reduce

原文はこちら。
https://blogs.oracle.com/dataintegration/entry/hadoop_invoke_map_reduce

ODIパッケージとHadoopとHDFSに関する以前のエントリから引き続きますが、今回のエントリは別の必要な呼び出しタスクに関するもの、つまり既存のMap-ReduceコードをODIから呼び出す方法です。ODIパッケージとOpen Toolフレームワークを使用してご紹介します。
Hadoop and HDFS - file system tools
https://blogs.oracle.com/dataintegration/entry/hadoop_and_hdfs_file_system
http://orablogs-jp.blogspot.jp/2012/09/hadoop-and-hdfs-file-system-tools.html
HadoopのJobConf SDKはローカルもしくはリモートのジョブを初期化するためのクラスです。それゆえ、例えば、ODIエージェントをHadoopクラスタとは異なるシステムに配置することができ、ジョブをHadoopクラスタに投げるだけです。また、JavaからMap-Reduceのジョブを実行することについてこの古いエントリ(このエントリのThomas Jungblutからの返信に従います)のような有用な記事のおかげで、素早く習得できました。
WordCountサンプル(mapperとreducerと内部クラスのバージョンはこちらで確認してください)の前に、ODIパッケージからの呼び出し方法を見ていきましょう。以下のHadoopRunJonはOpen Toolフレームワークを通じて追加したツールですが、基本的にJobConf SDKのラッパーであり、パラメータをODIで定義しています。

以下でパラメータのいくつかをご覧頂けると思いますので、以下で必要なクラス名やHadoopジョブ名を含むパラメータを定義します。ジョブトラッカーを指定してジョブを起動することもできます(クライアント·サーバー型のアーキテクチャ向け)。入力パスと出力パスもパラメータとして定義されます。パッケージ内の最初のツールはファイルをHDFSにコピーする呼び出しであることがご覧頂けるかと思います。これは、WordCountプログラムが必要とするファイルを実行準備ができているHDFSにコピーするというデモです。

わかりやすく、簡単で、数多くの複雑さを簡単なツールの背後に隠す盾です。ODIエージェント(もしくはODI Studio。ローカルエージェントで呼び出したため)を使うためには、WordCountを含むJARファイルが必要でした。パッケージを呼び出すと、通常のようにエージェントがコードを処理しステップを実行します。上のパッケージを実行し、ふぁるをHDFSにコピーでき、文字数を計算するでしょう。パッケージの2回目の実行では、以下のように出力ディレクトリが存在しているため、エラーが報告されるでしょう。

パッケージの設計を拡張して、フローのあとエラーを処理させる条件分岐を持たせることができます。以下のような感じです。

ここでは単語数を数えた後、ステータスをチェックし、他のODIパッケージと同様、成功・失敗の条件分岐ができます。デモのときはビープ音を使用しました。
上で使われたHadoopRunJobツールはv1 MapReduce SDKを使って実装しましたが、MR2/Yamでまた変わるでしょう。こうした変更の結果、ユーザーが活用する一般的なコンセプトを抽象化するためのよりよいツールの必要性が強く求められています。
こうしたエントリから、HadoopやHDFSの基本機構の背後の有用なツールを非常に簡単に提供でき、以下のOracle By Exampleのリンクからおわかり頂けるように、UIからMap-Reduceのジョブを生成することができる、ということがおわかり頂けたかと思います。
ODI 11g - Hadoop integration self study
https://blogs.oracle.com/dataintegration/entry/odi_11g_hadoop_integration_self

0 件のコメント:

コメントを投稿