Hadoop がデータのサイズに対してあまりにも多くのマップ タスクを作成していると思われるため、非常に進行が遅いジョブがあります。一部の Web サイトで、より少ないマップでより大きなデータのチャンクを処理するのが効率的であると読みました。これを強制する方法はありますか? ありがとう
1024 次
3 に答える
1
マップタスクの開始のオーバーヘッドは設定とハードウェアに応じて1〜3秒であるため、多くのマップは実際にパフォーマンスに深刻な影響を与える可能性があります。
ここでの主な設定は、JVMの再利用(mapred.job.reuse.jvm.num.tasks)です。-1に設定すると、おそらくパフォーマンスが大幅に向上します。
この問題の通常の根本的な原因は、多数の小さなファイルです。ここで説明します
。Hadoopを使用した小さなファイルの大きなセットの処理ソリューションは、それらを一緒に編成することです。
ファイルが実際に大きいが分割可能である場合-ブロック側を増やすことができるため、分割数とその数を減らすことができます-マップの数
于 2012-05-23T05:36:19.827 に答える
1
2 つの可能性:
- 90 GB データのブロック サイズを増やします。これを 128 m 以上に設定すると、マップ タスクが「より多く」機能します。
- を使用して
CombineFileInputFormat
、適切だと思われるサイズにブロックをまとめてバッチ処理します。
最初の解決策では、データを書き直してブロック サイズを変更する必要があります。2 番目の解決策は、ジョブに埋め込むことができます。
于 2012-05-23T05:31:29.927 に答える
0
分割サイズを大きくするか、CombineFileInputFormat を使用して複数のファイルを 1 つの分割にまとめ、データの処理に必要なマップ タスクの数を減らします。
于 2014-03-28T20:18:41.073 に答える