由于HDFS的默认块大小为64MB。因此如果我们说
例如200MB数据。根据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。您可以通过在dfs.block.size中更改/添加hdfs-site.xml属性将其更改为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秒

  • 这个200 MB的示例在大数据世界中很小,在大数据世界中,数据的TB被并行处理。
    另请注意:
    当最后一块存储为8MB时(在您的示例中)。该块将仅占用8MB的存储空间,并且不会使用完整的64 MB作为块大小。

    关于hadoop - HDFS块大小困惑,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/38590200/

    10-16 03:01