1

Hadoop の仕事があります。仕事が決まったら、何人かのマッパーを開始します。そして、各マッパーは、part-m-00000、part-m-00001 などのファイルをディスクに書き込みます。私が理解しているように、各マッパーは 1 つのパーツ ファイルを作成します。私は大量のデータを持っているので、複数のマッパーが必要ですが、この出力ファイルの数をどうにかして制御できますか? つまり、hadoop が開始されます。たとえば、10 個のマッパーが起動しますが、パーツ ファイルは 3 つしかないのでしょうか?

この投稿を見つけました How do multiple reducers output only one part file in Hadoop? ただし、古いバージョンの Hadoop ライブラリを使用しています。org.apache.hadoop.mapreduce.* のクラスを使用していますが、org.apache.hadoop.mapred.* のクラスは使用していません。

Hadoop バージョン 0.20 と hadoop-core:1.2.0.jar を使用しています

新しい Hadoop API を使用して、これを行う可能性はありますか?

4

4 に答える 4

0

ジョブにレデューサー、パーティショナー、およびコンバイナーがない場合、各マッパーは 1 つの出力ファイルを出力します。ある時点で、後処理を実行して、出力を大きなファイルに収集する必要があります。

于 2015-11-11T07:13:17.500 に答える
0

MultipleOutputFormatを見たいと思うかもしれません

Javadoc の一部:

この抽象クラスは FileOutputFormat を拡張し、出力データを別の出力ファイルに書き込めるようにします。

Mapper と Reducer の両方がこれを使用できます。

HDFS に出力するために、さまざまなマッパーから出力ファイル名以上を指定する方法については、このリンクを確認してください。

注: さらに、10 個のマッパーから 10 個のファイルが作成されないように、context.write() を使用しないでください。出力には MultipleOutputFormat のみを使用してください。

于 2013-07-19T12:19:08.773 に答える
0

あなたがそれを行うことができるかどうかわかりません(あなたのリンクは複数の出力が1つだけに収束しないことに関するものです)、そしてなぜ1つの出力だけを使用するのですか? ソート時にすべての並列処理が失われますか?

また、大きなファイル(それぞれ約10GB)と私のMRプロセスはそれぞれ約100GBに取り組んでいます。したがって、Map の数値を下げるには、hdfs のブロック サイズの値を高く設定し (新しいファイルにのみ適用)、mapred.min.split.sizeinの値を高く設定します。mapred-site.xml

于 2013-07-19T11:55:56.113 に答える