[英]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中存储更多具有元数据的较小文件。
处理文件时的网络开销,hadoop在较大的文件中表现更好:
在大数据世界中,并行处理TB
数据的200 MB示例非常小。
另请注意:当最后一块存储为8MB时(在您的示例中)。 该块仅占用8MB的存储空间,不会使用完整的64 MB作为块大小。
Hadoop处理大量数据。 它不喜欢小文件。 拥有小的块意味着启动更多的映射器并浪费资源,NameNode也承受着巨大的压力,因为它必须保留对集群中每个块的地址的引用。 这将增加通过网络访问数据的时间,并且会大大降低性能。
Apache团队引入64Mb作为最佳的最小建议块大小,以便它可以给您的名称节点施加合理的压力,同时允许您在MapReduce作业中并行处理数据。
在某些Hadoop发行版(例如Cloudera)中,默认情况下使用128Mb块。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.