根据理论,以下属性定义了数据节点上的map/red任务槽的数量。mapred.tasktracker.map.tasks.maximum | mapred.map.tasks。
此外,映射器对象的数量由MapReduce作业中的输入拆分数量决定。我们实现map/red功能,框架创建对象并将它们发送到最接近数据块的位置。
那么映射任务槽和框架创建的映射器对象之间有什么不同呢?
假设我在5个数据节点上存储2TB的文件,每个节点有400Mb。如果我定义dfs.block.size =100Mb,那么每个节点将保存400/100 =4个数据块。在这里,在4个数据块中,理想情况下我们可以有4个输入拆分,进而每个节点有4个映射器对象。同时,如果我定义了mapred.tasktracker.map.tasks.maximum = 2 & mapred.map.tasks=2,那么我能从中得出什么结论。我可以说4个映射器对象将在2个map任务槽中共享。我可能走错了方向,任何澄清都会有帮助。
发布于 2014-04-22 00:13:58
map slots决定了任务跟踪器可以运行多少个map tasks。map tasks由输入拆分决定,您不能更改它。如果map tasks超过map slots,一些map tasks将阻塞并运行,直到其他任务完成。
https://stackoverflow.com/questions/23200361
复制相似问题