繁体   English   中英

HDFS块大小混乱

[英]HDFS Block size Confusion

由于HDFS的默认块大小为64MB。因此,例如200MB Data。 根据HDFS的块大小,将其分为4个块,分别为64Mb,64MB,64MB和8MB。 我的问题是,为什么不将数据分成50MB的4个块,以便将它们每个保存为64MB的块大小。

why the data not divided into same 4 block of 50MB in order to save them each one of them in 64MB of block size. -因为默认配置为在hadoop配置中存储64 MB。 您可以通过在hdfs-site.xml更改/添加dfs.block.size属性将其更改为50 MB,但HDFS是用于BIG数据处理的存储。 由于以下原因,默认块大小设置为更高(64MB / 128MB):

  • 考虑一下在Namenode中存储这些文件/块的元数据,在Namenode中存储更多具有元数据的较小文件。

    • 例如,存储1GB文件-Namenode必须存储16个64 MB的块与21个50 MB的块的元数据
  • 处理文件时的网络开销,hadoop在较大的文件中表现更好:

    • 例如,(此计算中使用的传输速率为1 MB / s,开销为10%)
      • 3块64 MB的块和1块8 MB的块通过网络传输需要218秒
      • 4个50 MB的块耗时-220秒

    在大数据世界中,并行处理TB数据的200 MB示例非常小。

另请注意:当最后一块存储为8MB时(在您的示例中)。 该块仅占用8MB的存储空间,不会使用完整的64 MB作为块大小。

Hadoop处理大量数据。 它不喜欢小文件。 拥有小的块意味着启动更多的映射器并浪费资源,NameNode也承受着巨大的压力,因为它必须保留对集群中每个块的地址的引用。 这将增加通过网络访问数据的时间,并且会大大降低性能。

Apache团队引入64Mb作为最佳的最小建议块大小,以便它可以给您的名称节点施加合理的压力,同时允许您在MapReduce作业中并行处理数据。

在某些Hadoop发行版(例如Cloudera)中,默认情况下使用128Mb块。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM