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

sczxawaw  于 2021-06-02  发布在  Hadoop
关注(0)|答案(2)|浏览(473)

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

pnwntuvh

pnwntuvh1#

这会影响很多事情。最明显的是,如果块的大小更大,文件的块会更少。这可能使客户机能够在不与namenode交互的情况下读取/写入更多数据,并且还可以减少namenode的元数据大小,减少namenode负载(这对于非常大的文件系统来说是一个重要的考虑因素)。
使用更少的块,文件可能总共存储在更少的节点上;这会降低并行访问的总吞吐量,并使mapreduce调度器更难调度数据本地任务。
当使用这样的文件作为mapreduce的输入时(并且不将最大分割大小限制为小于块大小),它将减少可以减少开销的任务数。但是拥有更少、更长的任务也意味着您可能无法获得最大的并行性(如果任务数量少于您的集群可以同时运行的任务),增加了掉队的机会,如果任务失败,则需要重新做更多的工作。增加每个任务处理的数据量还可能导致额外的读/写操作(例如,如果一个Map任务从只有一个溢出更改为有多个溢出,因此需要在最后进行合并)。
通常,这取决于输入数据。如果您想最大化非常大的输入文件的吞吐量,最好使用非常大的块(128mb甚至256mb)。对于较小的文件,使用较小的块大小更好。请注意,通过更改 dfs.block.size 写入文件时的参数,例如使用命令行工具上载时: "hdfs dfs -put localpath dfspath -D dfs.block.size=x" 资料来源:http://channel9.msdn.com/forums/techoff/impact-of-changing-block-size-in-hadoop-hdfs
有用的链接:
更改dfs文件的块大小
Map绘制者如何分配。

n9vozmp4

n9vozmp42#

你不能仅仅通过调整blocksize来判断hadoop系统的优劣。
但是根据我在hadoop中使用不同块大小的测试,256m是一个不错的选择。

相关问题