質問

このシナリオを検討してください:

それぞれ6 MBそれぞれ4つのファイルを持っています。HDFSブロックサイズは64 MBです。

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

input splitsによってMap-reduceジョブの場合にInput formatを計算した場合(split sizeは通常HDFS block sizeで、各スプリットは処理のためにメモリにロードすることができます。)

ここでの入力分割数:

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

  2. またはファイルごとに1つの入力分割はありますか?

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

役に立ちましたか?

解決

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

実際には4ブロックがあります。すべてのファイルが単一のブロックに収まるかどうかに適していません。

編集: ブロックはその他の方法ではなくファイルに属します。 HDFSは、ほぼ確実にあなたのブロックサイズよりも大きくなるようになる大きなファイルを格納するように設計されています。ブロックごとに複数のファイルを格納すると、NameNode ...

に不要な複雑さを追加します。

  • blk0001のファイルの代わりに、それは現在blk0001 {file-start -> file-end}です。
  • ファイルにどのように追加しますか?
  • ファイルを削除するとどうなりますか?
  • etc ...

またはファイルごとに1つの入力分割ですか?

1ファイルあたり1分割。

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

これはです。

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

MultipleFileInputFormatなどの異なる入力フォーマットを使用します。

他のヒント

  1. 各ファイルは別のブロックに格納されますが、ファイルはその基礎となるストレージのフルブロックを占有しません。

  2. HDFSは小さいファイルではありません - チェックこれは

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top