2016-10-02 91 views

回答

1

HDFS的块大小非常巨大以尽量减少查找时间。最佳块大小取决于平均文件大小,查找时间和传输速率。

磁盘越快,数据块越大,但有一个限制。

要利用数据局部性分割具有相同大小的数据块,因为我们为每个分割开始一个线程,太大的块会减少并行性。 所以最好的是:

  1. 保持寻道时间低。 ( - >在快速磁盘上增加块大小)
  2. 保持分割不能太低。 ( - >减少块大小)
  3. 利用数据局部性。 ( - >保持分割大小与块大小接近)

128MB是当今磁盘速度和大小以及计算性能的不错选择。

+0

我想,应该有适当的理由。 我在Deloitte采访中遇到过这个问题。 –

+0

https://community.hortonworks.com/questions/16278/best-practises-beetwen-size-block-size-file-and-re.html – ozw1z5rd

2

增加块大小有一些原因。如果您正在管理大型Hadoop数据集的peta字节,它可以提高性能。

如果你正在管理的1地图字节集群,64 MB块大小的结果为15+百万块,其是很难的Namenode有效地管理。

在执行MapReduce的过程中,拥有大量的块也会导致大量的映射器。

根据您的数据要求,你可以微调dfs.blocksize

通过正确设置你的块大小(64MB或128 MB或256 MB或512 MB),你可以acheive

  1. Namenode性能的提高
  2. 由于映射器的数量直接取决于块大小,所以Map reduce作业的性能有所提高。

有关更多详细信息,请参阅此link

+0

谢谢你的回答。 如果是这种情况,那么为什么Hadoop 1.x中的默认块大小不是128MB? –