私はHadoopを使用して1000個の小さなファイルを処理するシナリオを持っています。 Hadoopジョブの出力は、非Hadoopアルゴリズムの入力として使用されます。現在のワークフローでは、データが読み込まれ、シーケンスファイルに変換され、処理された小さなファイルがシーケンスファイルの形式でHDFSに出力されます。しかし、非Hadoopアルゴリズムはシーケンスファイルを理解できません。したがって、シーケンスファイルから結果のファイルのデータを読み込んで、非Hadoopアルゴリズムで使用できる最終的な小さなファイルを作成する、もう1つの単純なHadoopジョブを作成しました。Hadoop Yarnローカルファイルシステムへの書き込み
最後の仕事では、HDFSからシーケンスファイルを読み込み、各ノードのローカルファイルシステムに書き込んで、非Hadoopアルゴリズムで処理する必要があります。出力パスをfile:///<local-fs-path>
に設定し、Hadoop LocalFileSystem
クラスを使用してみました。しかし、そうすることで最終結果がnamenodeのローカルファイルシステムにのみ出力されます。
ちょうど画像を完成させるために、私は10ノードのHadoopを糸でセットアップしました。 Hadoop YarnモードでHDFSからデータを読み取り、各処理ノードのローカルファイルシステムに結果を書き込む方法はありますか?
ありがとうございました
NFSドライブをマウントすることができます。とにかくすべての結果を収集するだけであれば、ローカルのデータノードに書き込む利点はありません。また、hadoopは何千もの小さなファイルでうまく動作しないので、正しいプロセスを使用していることを確認していますか? –
残念ながら、プロジェクトの要件は明記されているとおりです。 Hadoopを使って処理すると、たくさんのファイルがあっても実際に20時間以上の作業時間を節約できたので、Hadoopはうまくいきます。 NFSを提案してくれてありがとう、私たちはすでにそれを考えました。 –