2015-11-04 78 views
0

我只有10 MB大小的文件。我认为在HDFS中,第一个文件消耗10 MB,剩余54 MB被释放到可用空间。 我的问题是 -HDFS - 块大小相关

  1. 的10 MB(或10 MB的文件的下一个序列)的第二个文件将继续增加,直到它成为64 MB? 例如 - 如果我们消耗2块64 MB的每块和20 MB的第3块,那么输入分割将产生3个输出2 64MB和1 20MB?这是真的吗?

回答

1

随着从Hadoop的参考 - 权威指南

HDFS存储小文件低效,因为每个文件存储在一个块和块元数据在存储器中由名称节点保持。因此,大量的小文件会在namenode上占用大量内存。 (但是,请注意,小文件不会占用比存储文件的原始内容所需的更多磁盘空间。例如,存储有块大小为128 MB的1 MB文件使用1 MB磁盘空间,而不是128 MB)。

所以你说得对:“HDFS第一个文件消耗10 MB,其余54 MB被释放到可用空间。”但是,HDFS块不是一个物理存储分配单元,而是一个逻辑存储分配单元。所以它不会像它一直添加到这个块中,直到它变为64 MB或块大小(随着释放磁盘空间将被添加到可用存储)

映射器的数量取决于inputsplits的数量和招聘客户端计算输入分割上位于输入路径上运行的工作,而指定的HDFS数据。按照你的例子,它将创建3个输入分割,2个64MB和1个20MB(假设默认的HDFS块大小)。

0

块大小(64MB或128MB)指的是文件分割大小的最大值。即使您的文件大小小于64,也意味着它将被视为块/分割。

考虑块大小为64MB,那么如果假设你要保存10MB文件意味着它将只需要10MB,即块/溢出你的文件。 如果假设您要保存70MB文件,则意味着您的文件会将其拆分为64MB和6MB块/分区。有没有像块应该有64MB或128MB。