mapreduce—hadoop中的文件存储、块大小和输入拆分

fslejnso  于 2021-06-04  发布在  Hadoop
关注(0)|答案(2)|浏览(346)

考虑以下情况:
我有4个文件,每个6MB。 HDFS 块大小为64 mb。
1 block 将保存所有这些文件。它有一些额外的空间。如果添加了新文件,它将适应这里
现在当 input splits 是为 Map-reduce 作业依据 Input format , ( split size 通常是 HDFS block size 因此,可以将每个分割加载到内存中进行处理,从而减少寻道时间。)
这里有多少个输入拆分:
是因为所有4个文件都包含在一个 block ?
或者是每个文件一个输入分割?
这是如何确定的?如果我想把所有的文件作为一个单一的输入分割来处理呢?

qltillow

qltillow1#

每个文件将被存储在一个单独的块中,但文件不会占用底层存储的完整块,它将使用较少的物理存储。
hdfs不适用于较小的文件-请看这个

sirbozc5

sirbozc52#

1个块将保存所有这些文件。它有一些额外的空间。如果添加了新文件,它将在这里容纳[…]是因为所有4个文件都包含在一个块中吗?
你实际上有4个街区。所有文件是否都可以放入一个块并不重要。
编辑:块属于一个文件,而不是相反。hdfs被设计用来存储大文件,这些文件几乎肯定会大于块大小。每个块存储多个文件会给namenode增加不必要的复杂性。。。
而不是一个文件 blk0001 ,是现在 blk0001 {file-start -> file-end} .
如何附加到文件?
删除文件时会发生什么?
等。。。
或者是每个文件一个输入分割?
仍然是每个文件1个分割。
这是如何确定的?
这就是为什么。
如果我想把所有的文件作为一个单一的输入分割来处理呢?
使用不同的输入格式,例如 MultipleFileInputFormat .

相关问题