これが MapReduce の適切な使用例かどうかはわかりません: 私が実装しようとしている OOZIE ワークフローの一部は、連番 (例: 1 から 20) で名前が付けられた一連のファイルをダウンロードすることです。これらのファイルを同時に (一度に 5 ファイル) ダウンロードしたかったので、次のように 5 つのテキスト ファイルを作成する Python スクリプトを作成しました。
1.txt: 1,2,3,4
2.txt: 5,6,7,8
3.txt: 9,10,11,12
4.txt: 13,14,15,16
5.txt: 17,18,19,20
次に、ワークフローの次のステップとして、download.sh
コンマ区切りの番号リストを使用して要求されたファイルをダウンロードするシェル スクリプトを作成しました。ワークフローでは、Oozie でストリーミングmapred.input.dir
アクションをセットアップし、上記で生成されたファイルを含むディレクトリを入力 ( ) として使用し、download.sh をマッパー コマンドとして使用し、"cat" をレデューサー コマンドとして使用しました。Hadoop は上記の入力ファイルごとに異なるマッパーを生成すると想定しました。
これは時々うまくいくようで、ファイルを正しくダウンロードしますが、実行しようとしてスタックしてしまい、その理由がわかりません。同時ダウンロードの数を増やすと、これが発生することに気付きました (たとえば、txt ファイルごとのファイルではなく、20 などとします)。
私の質問は、これは MapReduce と OOZIE を使用してファイルの並列検索を実装する正しい方法ですか? そうでない場合、これは通常 OOZIE を使用してどのように行われますか? Hive スクリプトを実行する前に CSV ファイルを HDFS に取り込もうとしていますが、それを実現する最善の方法がわかりません。