如果我将hdfs blocksize设置为1 GB?

时间:2015-05-23 05:16:14

标签: hadoop size containers block hdfs

我想问。如果我将hdfs blocksize设置为1 GB,我将上传大小接近1 GB的文件。处理mapreduce会变得更快吗?我认为,对于更大的块大小,对资源管理器(映射任务)的容器请求将少于默认值。因此,它将减少初始化容器的延迟,也会减少网络延迟。

那么,你觉得怎么样?

由于

2 个答案:

答案 0 :(得分:2)

这会影响很多事情。最明显的是,如果块大小较大,则文件将具有较少的块。这可能使客户端可以在不与Namenode交互的情况下读取/写入更多数据,并且还可以减少Namenode的元数据大小,从而减少Namenode负载(对于极大的文件系统,这可能是一个重要的考虑因素)。 p>

使用较少的块,文件可能总共存储在较少的节点上;这可以降低并行访问的总吞吐量,并使MapReduce调度程序更难以安排数据本地任务。

当使用这样的文件作为MapReduce的输入(并且不限制最大分割大小小于块大小)时,它将减少可以减少开销的任务数量。但是,拥有更少,更长的任务也意味着您可能无法获得最大并行度(如果任务比集群可以同时运行的少),则增加了落后者的可能性,如果任务失败,则需要重做更多工作。增加每个任务处理的数据量也会导致额外的读/写操作(例如,如果映射任务从只有一个溢出变为多个,从而需要在最后进行合并)。

通常,它取决于输入数据。如果要为非常大的输入文件最大化吞吐量,最好使用非常大的块(128MB甚至256MB)。对于较小的文件,使用较小的块大小更好。请注意,通过在写入文件时更改dfs.block.size参数,您可以在同一文件系统上拥有不同块大小的文件,例如:使用命令行工具上传时:"hdfs dfs -put localpath dfspath -D dfs.block.size=xxxxxxx"

来源:http://channel9.msdn.com/Forums/TechOff/Impact-of-changing-block-size-in-Hadoop-HDFS

阅读的有用链接:

Change block size of dfs file

How Mappers get assigned.

答案 1 :(得分:0)

向上是正确的。你不能通过调整块大小来确定Hadoop系统的优缺点。

但根据我在hadoop中使用不同块大小的测试,256M是一个不错的选择。