如何在hadoop中设置地图块大小?
Posted
技术标签:
【中文标题】如何在hadoop中设置地图块大小?【英文标题】:How can i set the map chunk size in hadoop? 【发布时间】:2016-11-13 09:56:05 【问题描述】:我知道 hadoop 中块的默认大小是 64 MB。我想改变它。我怎样才能做到这一点? 谢谢
【问题讨论】:
【参考方案1】:在 Hadoop 1.0 版中,默认大小为 64MB,在 2.0 版中,默认大小为 128MB。但是如果你想改变块大小然后去 hdfs-site.xml 文件并添加以下属性
<property>
<name>dfs.block.size<name>
<value>134217728<value>
<description>Block size<description>
<property>
注意:我们应该以位为单位提及大小。例如:134217728 位 = 128 MB。
如需进一步查询,请转到此链接(额外)
Change Block size of existing files in Hadoop
【讨论】:
【参考方案2】:有两个参数dfs.block.size(已弃用,新的为dfs.blocksize)和mapred.max.split.size(已弃用和新的参数是mapreduce.input.fileinputformat.split.maxsize)。当您运行 mapreduce 程序并且不为 mapred.max.split.size 提供任何值时,它采用默认的 dfs.block.size 但您可以配置该值并控制映射器的数量(但必须注意性能影响,尤其是当拆分大小大于块大小时,您的映射器会通过网络寻找数据,因为数据块将分布在节点之间)。
如果您真的想控制地图块的大小,最好为每个 mapreduce 程序执行此操作,而不是设置 dfs.block.size,因为它是一个全局参数,会影响存储在 hdfs 中的所有文件。
此链接非常详细地讨论了相同的内容 - Split size vs Block size in Hadoop
【讨论】:
【参考方案3】:Hadoop 1.x:dfs 块的默认大小为 64 MB
Hadoop 2.x:dfs 块的默认大小为 128 MB。
从官方网站查看hdfs-default.xml。
dfs.blocksize
134217728
新文件的默认块大小,以字节为单位。您可以使用以下后缀(不区分大小写):k(kilo)、m(mega)、g(giga)、t(tera)、p(peta)、e(exa) 来指定大小(如 128k、512m , 1g 等),或者提供完整的字节大小(例如 128 MB 为 134217728)
【讨论】:
以上是关于如何在hadoop中设置地图块大小?的主要内容,如果未能解决你的问题,请参考以下文章