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