[解決済み] Hadoopで複数のMapReduceジョブを連鎖させる
質問
MapReduceを適用する多くの現実の場面で、最終的なアルゴリズムはいくつかのMapReduceのステップで終わっています。
すなわち、Map1 , Reduce1 , Map2 , Reduce2 ,...といった具合です。
つまり、次のMapの入力として必要な最後のReduceからの出力があるわけです。
中間データは、パイプラインが正常に終了した後は、(一般的には)保持したくないものです。また、この中間データは一般的に何らかのデータ構造(「マップ」や「セット」など)であるため、これらのキーと値のペアを書いたり読んだりすることにあまり労力を費やしたくありません。
Hadoopでそれを行うには、どのような方法が推奨されますか?
この中間データを、その後のクリーンアップも含めて正しい方法で処理する方法を示す(簡単な)例はありますか?
どのように解決するのですか?
Yahoo's developer networkにあるこのチュートリアルが役に立つと思います。 ジョブの連鎖
ジョブチェーンには
JobClient.runJob()
. 最初のジョブからのデータの出力パスは、2番目のジョブの入力パスになります。これらを解析し、ジョブのパラメータを設定するための適切なコードで、ジョブの引数として渡す必要があります。
上記の方法は、現在では古いmapred APIが行っていた方法かもしれませんが、それでも動作するはずです。新しいmapreduce APIにも似たような方法があるでしょうが、それが何であるかはわかりません。
ジョブが終了した後に中間データを削除することに関しては、あなたのコードでこれを行うことができます。私が以前それをした方法は、次のようなものを使用しています。
FileSystem.delete(Path f, boolean recursive);
ここで、pathはデータのHDFS上の場所です。他のジョブがこのデータを必要としなくなったら、このデータのみを削除することを確認する必要があります。
関連
-
Hbase公式ドキュメント(中国語
-
HDFSソースコード解析 --- デコミッション
-
Hadoopデータディレクトリの移行
-
コンテナがゼロ以外の終了コード1で終了しました。エラーファイル: prelaunch.err.org.apache.hadoop.mapreduce.
-
Kerberosに関するFailed to find any Kerberos tgt問題を解決する。
-
[解決済み】Hadoop、HBase、Hive、Pigはいつ使う?
-
[解決済み] HDFSからローカルファイルシステムにファイルをコピーする方法
-
[解決済み] Hiveでテーブルをパーティショニングすることとバケット化することの違いは何ですか?
-
[解決済み] HBaseとHadoop/HDFSの違いについて
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
Hbase公式ドキュメント(中国語
-
HDFSソースコード解析 --- デコミッション
-
Hadoopデータディレクトリの移行
-
コンテナがゼロ以外の終了コード1で終了しました。エラーファイル: prelaunch.err.org.apache.hadoop.mapreduce.
-
Kerberosに関するFailed to find any Kerberos tgt問題を解決する。
-
[解決済み】Hadoop、HBase、Hive、Pigはいつ使う?
-
[解決済み] HDFSからローカルファイルシステムにファイルをコピーする方法
-
[解決済み] Hiveでテーブルをパーティショニングすることとバケット化することの違いは何ですか?
-
[解決済み] HBaseとHadoop/HDFSの違いについて