1 台のマシンで map reduce タスクを実行し、マシンのすべてのコアを使用したいと考えています。最適なアプローチはどれですか? 疑似分散モードで Hadoop をインストールすると、すべてのコアを使用できますか?
2 に答える
プロパティmapred.tasktracker.map.tasks.maximumおよびmapred.tasktracker.reduce.tasks.maximumを使用して、ハードウェア仕様に従って、TaskTracker で同時に生成される Mapper/Reducer の数を増やすことができます。デフォルトでは 2 に設定されているため、特定のインスタンスで最大 2 つのマップと 2 つの reduce が実行されます。ただし、入力が非常に小さい場合、フレームワークは実行を並列化する価値がないと判断することに注意してください。そのような場合、デフォルトの分割サイズをmapred.max.split.sizeで微調整して処理する必要があります。
そうは言っても、個人的な経験に基づいて、MR ジョブは通常 I/O (おそらくメモリ、場合によっては) バインドされていることに気付きました。したがって、通常の状況では CPU が実際にボトルネックになることはありません。その結果、1 つのジョブで一度に 1 台のマシンのすべてのコアを完全に活用することが困難になる場合があります。
マッパー/リデューサーは各ノードのスロットを占有するため、適切な数のマッパー/リデューサーを決定して処理を効率的に実行し、CPU を適切に使用していることを確認するための戦略を考案することをお勧めします。1 つの方法として、 coresの数に.75を掛けてから、必要に応じて Mapper と Reducer の数を設定することができます。たとえば、12 個の物理コアまたは 24 個の仮想コアがある場合、 24*.75 = 18スロットを持つことができます。必要に応じて、 9Mappers+9Reducersまたは12Mappers+6Reducersなどを使用するかどうかを決定できます。
この質問からの回答を再投稿します:マルチコア マシンでの Hadoop と map-reduce
Apache Hadoop 2.7.3 の場合、私の経験では、YARN を有効にするとマルチコア サポートも有効になります。以下は、単一ノードで YARN を有効にするための簡単なガイドです。
デフォルトの構成はかなりうまく機能しているようです。コアの使用を調整したい場合は、yarn-site.xml ( https://hadoop. apache.org/docs/r2.7.1/hadoop-yarn/hadoop-yarn-common/yarn-default.xml )
また、マルチコアをサポートする単純な Hadoop サンドボックスを構成する方法については、https ://bitbucket.org/aperezrathke/hadoop-aee を参照してください。