我是hadoop的新手和地图缩小模型并试图让这些概念正确。
我首先想要获得输入拆分的概念和映射器的数量。
我正在运行mapreduce wordcount程序,以下是我的问题。
1)如何确定输入分割? 我在同一个集群上运行相同的程序,有两个不同大小的输入。
conf.get("mapred.map.tasks")
不应该是126 mb文件的分割数等于2?因为我已经读过块大小为64 MB。所以它必须创建2个分裂。
2)如何确定地图制作者的数量?我试图通过以下行来获得映射器的数量来理解mapreduce的工作流程。
{{1}}
每次返回2。
3)分裂数和映射器数之间是否有任何关系?
4)做上面的事情取决于集群?对于伪分布式模式和其他集群是否相同或不同?谢谢。
答案 0 :(得分:9)
在MapReduce中,InputFormat
类负责提供拆分信息。输入拆分是进入一个地图任务的数据量。
number of splits = number of mappers
所说,除非Hadoop知道如何计算分割。例如,对于像Gzip这样的压缩文件格式,在这种情况下number of files = number of mappers
不可拆分。更多信息: