考虑以下情况:
我有4个文件,每个6MB。 HDFS
块大小为64 mb。
1 block
将保存所有这些文件。它有一些额外的空间。如果添加了新文件,它将适应这里
现在当 input splits
是为 Map-reduce
作业依据 Input format
, ( split size
通常是 HDFS block size
因此,可以将每个分割加载到内存中进行处理,从而减少寻道时间。)
这里有多少个输入拆分:
是因为所有4个文件都包含在一个 block
?
或者是每个文件一个输入分割?
这是如何确定的?如果我想把所有的文件作为一个单一的输入分割来处理呢?
2条答案
按热度按时间qltillow1#
每个文件将被存储在一个单独的块中,但文件不会占用底层存储的完整块,它将使用较少的物理存储。
hdfs不适用于较小的文件-请看这个
sirbozc52#
1个块将保存所有这些文件。它有一些额外的空间。如果添加了新文件,它将在这里容纳[…]是因为所有4个文件都包含在一个块中吗?
你实际上有4个街区。所有文件是否都可以放入一个块并不重要。
编辑:块属于一个文件,而不是相反。hdfs被设计用来存储大文件,这些文件几乎肯定会大于块大小。每个块存储多个文件会给namenode增加不必要的复杂性。。。
而不是一个文件
blk0001
,是现在blk0001 {file-start -> file-end}
.如何附加到文件?
删除文件时会发生什么?
等。。。
或者是每个文件一个输入分割?
仍然是每个文件1个分割。
这是如何确定的?
这就是为什么。
如果我想把所有的文件作为一个单一的输入分割来处理呢?
使用不同的输入格式,例如
MultipleFileInputFormat
.