2016-07-26 75 views
0

作为HDFS的默认块大小为64MB。因此,如果我们对示例200MB数据说 。根据HDFS的块大小将它分成4块64Mb,64MB,64MB和8MB。 我的问题是,为什么数据没有分成相同的4个50MB的块,以便将它们中的每一个都保存在64MB的块大小中。HDFS块大小混乱

+0

你可以参考这个链接http://stackoverflow.com/questions/19473772/data-block-size-in-hdfs-why-64mb –

回答

0

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具有存储元数据的64 MB的16个块与50 MB
  • 网络开销21块处理文件时,和Hadoop与更大效果更好文件:

    • 例如,(在该计算中使用的传输速率是1百万字节/秒,和10%的开销)的
      • 3块64 MB,和8 MB 1块需要 - 218秒通过网络
      • 4块传送的50 MB需要 - 220秒

    本200 MB的例子是在大数据世界非常小数据的TB并行处理。

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

+0

谢谢你的回答先生 –

0

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

64Mb由Apache团队作为最佳推荐块大小引入,因此它可以给您的namenode带来合理的压力,同时还允许您在MapReduce作业中并行处理数据。

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

+0

谢谢先生,,,,我得到了概念 –