1

ここで、Hadoop に関するいくつかの優れたドキュメントを読みました。計算コストの高いデータ処理 (異種コンピューティングなど)に対する他のアプローチに対する Hadoop の主な利点の 1 つは、そのスケーラビリティです。単一の強力だが高価なマシンではなく、多数の適度なコストのハードウェアを活用します。

Hadoop コンピューティングに高性能だが高価なマシンを使用するオプションがあるとします。Hadoop はこれらの高価なリソースを効果的に利用できますか? 追加のEC2 コンピューティング ユニットを自動的に活用しますか、それとも並列プログラミングを自分で行う必要がありますか? パフォーマンスマシンの改善度は?より多くのEC2の価格でパフォーマンスの向上を定量化する方法はありますか?

4

1 に答える 1

1

Hadoop フレームワークは、利用可能な複数のコアを自動的に活用します。自分で並列プログラミングを行う必要はありません。これは、実際には Hadoop のセールス ポイントの 1 つです。スレッドの同期ロジックを気にせずにジョブを 1 回記述するだけで済みます。その後は、クラスターの構成に応じて、可能な限りすべてのコアを使用するようにしてください。

たとえば、数テラバイトのデータセットで実行されているジョブがあり、分割の計算後に 100 のタスクを実行する必要があるとします。ここで、10 個の m1.small ノード (コアが 1 つしかない) でジョブを実行する場合、クラスターには一度に 10 個のタスク (ノードごとに 1 個のタスク) の容量があります。ただし、たとえば 10 m1.large ノード (2 x 2 コア) で実行する場合、一度に 40 タスクの容量があるため、ジョブは同じものを使用していた場合よりも約 4 倍高速になります。追加のコアを利用するため、m1.small の数。

さらに、Hadoop で CUDA を使用している人の話を聞いたことがあります (一部の情報はこちら)。Amazon にはいくつかのクラスター GPU インスタンスがあるため、この場合はおそらく GPU も利用できます。

肝心なのは、Hadoop を使用する場合は、マシンの数ではなく、コアの数で推論する必要があるということです。適切なトレードオフを見つけたいと思うのは明らかです。私は過去に、各ノードに多数のコアがあるクラスタを見たことがありますが、ディスク I/O はあまり良くなかったので、クラスタ内で多くの競合が発生しました。ノードあたりのタスクの最大数を減らします (パラメーターmapred.tasktracker.map.tasks.maximumとを介して Hadoop 構成で制御できますmapred.tasktracker.reduce.tasks.maximum)。

m1.xlarge インスタンスが一部の Hadoop クラスターで非常にうまく機能することを個人的に発見しましたが、CPU の高いクラスターではディスクの競合が多すぎました。

于 2013-05-27T04:58:44.820 に答える