質問

私は2つのMapReduceジョブを持っているシナリオにいます。私はPythonにもっと慣れており、MapReduceスクリプトを作成し、Hadoopストリーミングを使用するために使用することを計画しています。 Hadoopストリーミングが使用されているときに、フォームに続くジョブの両方をチェーンするのに便利ですか?

map1-> resid1-> map2-> resid2

Javaでこれを達成するための多くの方法を聞いたことがありますが、Hadoopストリーミングには何かが必要です。

役に立ちましたか?

解決

これは、カスケードとストリーミングの使用方法に関する素晴らしいブログ投稿です。http://www.xcombinator.com/2009/11/18/how-to-use-cascading-with-hadoop-streaming/

ここでの値は、同じアプリでJava(Cascadingクエリフロー)とカスタムストリーミング操作を混合できることです。これは他の方法よりもはるかに脆くないと思います。

カスケードのカスケードオブジェクトを使用すると、複数のフローをチェーンできます(上記のブログ投稿では、ストリーミングジョブがMapReduceFlowになります)。

免責事項:私はCascadingの著者です

他のヒント

試してみることができます YelpのMrjob 仕事を成し遂げるために.. OpenSource MapReduceライブラリは、HadoopクラスターまたはEC2でHadoopストリーミングの上で実行できるチェーンジョブを作成できるようにします。オーバーライドして、データを通過したいマッパーと還元剤の正確なチェーンを指定できます。

でソースをチェックアウトします https://github.com/yelp/mrjob
とドキュメント http://packages.python.org/mrjob/

通常、HadoopストリーミングとPythonでこれを行う方法は、そもそもジョブを実行するために作成したBashスクリプト内からのものです。常にバッシュスクリプトから実行されます。このようにして、エラーや電子メールを成功に関するメールで取得し、より大きなイベント処理システムで機能する別のRubyまたはPythonスクリプトのパラメーターをより柔軟に渡すことができます。

したがって、最初のコマンド(job)の出力は、コマンドラインからの引数として渡されたバッシュスクリプトの変数(シンプルでクイック)に渡すことができる次のコマンド(ジョブ)への入力です。

Oozieをチェックアウトしたいかもしれません http://yahoo.github.com/oozie/design.html これもこれに役立つHadoopのワークフローエンジン(問題ではなく、ストリーミングをサポートします)。私が始めたとき、私はこれを持っていなかったので、私は自分のものを構築する必要がありましたが、これはKewlシステムであり、便利です!!!!

すでにPythonでマッパーとレデューサーを書いている場合は、そのような操作が簡単な場合にDumboを使用することを検討します。マップのシーケンスは、ジョブ、マッパー、レデューサーなどを削減します。すべてがコマンドラインから実行できる1つのPythonスクリプトに含まれています。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top