2

次のシナリオを検討してください。

それぞれ6 MBの4つのファイルがあります。HDFSブロックサイズは 64 MB です。

1blockは、これらすべてのファイルを保持します。余分なスペースがあります。新しいファイルが追加された場合、ここに収容されます

によってジョブのinput splitsが計算される場合 (通常は、各分割を処理のためにメモリにロードできるため、シーク時間が短縮されます。)Map-reduceInput formatsplit sizeHDFS block size

ここで行われる入力分割の数:

  1. 4つのファイルすべてがaに含まれているため、1つblockですか?

  2. それともファイルごとに1つの入力分割ですか?

  3. これはどのように決定されますか?すべてのファイルを単一の入力分割として処理したい場合はどうすればよいですか?

4

2 に答える 2

3

1 つのブロックは、これらすべてのファイルを保持します。余分なスペースがあります。新しいファイルが追加されると、ここに収まります[...] 4つのファイルがすべてブロックに含まれているため、1つですか?

実際には 4 つのブロックがあります。すべてのファイルが 1 つのブロックに収まるかどうかは問題ではありません。

編集: ブロックはファイルに属し、その逆ではありません。HDFS は、ほぼ確実にブロック サイズよりも大きくなる大きなファイルを格納するように設計されています。ブロックごとに複数のファイルを保存すると、namenode が不必要に複雑になります...

  • ファイルはblk0001ではなく、 になりましたblk0001 {file-start -> file-end}
  • ファイルにどのように追加しますか?
  • ファイルを削除するとどうなりますか?
  • 等...

それともファイルごとに1つの入力分割ですか?

それでもファイルごとに 1 分割します。

これはどのように決定されますか?

これが方法です。

すべてのファイルを単一の入力分割として処理したい場合はどうすればよいですか?

などの別の入力形式を使用しますMultipleFileInputFormat

于 2014-07-28T22:05:48.263 に答える
0
  1. 各ファイルは個別のブロックに保存されますが、ファイルは基礎となるストレージの完全なブロックを占有しないため、使用する物理ストレージが少なくなります。

  2. HDFS は小さなファイル用ではありません -これをチェックしてください

于 2014-07-29T06:16:14.563 に答える