0

各HadoopマッパーがM/Rジョブでデータの個別の部分を処理するようにしたいのですが、結果として多数のマッパーが存在する必要がある場合の疑似分散(単一ノード)セットアップでテストしたいと思います。より大きな入力データサイズ。現在の入力のサイズと実験しているスタンドアロンモードを考えると、1つのマップタスクしか表示できません。

私の入力はhbaseテーブルからのものであり、hbaseテーブルごとの領域の数は、テーブルのデータを処理するために使用されるマッパーの数に等しいと思いました。

したがって、多くのマッパーが入力データを処理する場合を再現するために、次のようにシェルを介してテーブルの領域を事前定義しました。

't1'、'f1'、{NUMREGIONS => 4、SPLITALGO=>'HexStringSplit'}を作成します

または「UniformSplit」をSPLITALGOとして設定しますが、マッパーが実際に指定された数の領域に増加した場合でも(それぞれのテーブルにデータをインポートした後)、すべての入力データ(このテーブルから読み取ろうとする後続のテストジョブで)は合格します1つのマッパーのみを介して-他のマッパーは入力行を処理しません。

私は疑似分散(単一ノード)セットアップに取り組んでいますが、これを解決する方法が本当にわかりません。誰かアイデアはありますか?ありがとう!

4

1 に答える 1

0

テーブル全体をスキャンしていますか、それとも一部だけをスキャンしていますか? テーブルのセクションをスキャンしている場合、データ ソースが複数のマッパーをトリガーするのに十分な大きさではないため、それが問題の原因である可能性があります。

hbase-size.xml 構成でリージョン サイズを減らし、hbase を再起動して目的の効果を得ることができます。

最後に、mapred-site.xml 構成で、マッパー スロットはいくつありますか? 1 だけの場合、マップ ジョブの数は制限されませんが、そのサーバーで一度に実行できるマップ ジョブの数が制限されます。

それ以外は、ジョブごとのマッパーの数を指定することをあまり制御できないと思います-リデューサーの数とは異なります。

于 2012-07-16T21:41:25.273 に答える