7

パラメータ「mapred.min.split.size」は、ファイルが以前に書き込まれたブロックのサイズを変更しますか? JOB を開始するときに、パラメーター「mapred.min.split.size」を 134217728 (128MB) の値で渡す状況を想定します。何が起こるかについて、何と言うのが正しいですか?

1 - 各 MAP は 2 つの HDFS ブロックに相当する処理を行います (各ブロックが 64MB と仮定)。

2 - HDFS 128M のブロックを占有するために、入力ファイル (以前は HDFS に含まれていた) の新しい分割があります。

4

3 に答える 3

32

分割サイズは次の式で計算されます:-

max(mapred.min.split.size, min(mapred.max.split.size, dfs.block.size))

あなたの場合は次のようになります:-

split size=max(128,min(Long.MAX_VALUE(default),64))

したがって、上記の推論:-

  1. 各マップは 2 つの hdfs ブロックを処理します (各ブロックが 64MB と仮定): True

  2. HDFS 128M のブロックを占有するために、入力ファイル (以前は HDFS に含まれていた) の新しい分割があります: False

ただし、最小分割サイズをブロック サイズよりも大きくすると、分割サイズが大きくなりますが、局所性が犠牲になります。

于 2013-10-05T09:12:47.757 に答える
1

最小分割サイズが 128mb に定義され、最小ブロック サイズが 64mb に定義されているとします。

注: デフォルトでは、各ブロックは HDFS によって 3 つの異なるデータノードに複製されます。また、各マップ タスクは、単一のブロックに対して操作を実行します。

したがって、128MB の分割サイズは、2 つのブロックを単一のブロックと見なし、単一のデータノードで実行される単一のマップ タスクを作成します。これは、データの局所性を犠牲にして発生します。「データ局所性のコスト」とは、map タスクが実行されていないデータノードに存在するブロックのことです。そのデータノードから取得し、マップタスクが実行されているデータノードで処理する必要があるため、パフォーマンスが低下します。

ただし、サイズが 128mb で、デフォルトのブロック サイズが 64mb、デフォルトの最小分割サイズが 64mb のファイルを考えると、その場合、通常のように、64mb のブロックごとに 2 つのマップ タスクが作成されます。

于 2015-08-06T06:50:07.233 に答える