根据理论,以下属性将定义数据节点上的映射/红色任务槽的数量。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
,那么我可以得出什么结论。我可以说要在2个 map task 槽之间共享4个映射器对象。我可能走错了方向,任何澄清都将有所帮助。
最佳答案
map slots
确定任务跟踪程序可以运行多少个map tasks
。 map tasks
由输入拆分确定,您无法更改。如果map tasks
超过map slots
,则某些map tasks
将阻塞并运行,直到其他任务完成。
关于java - Hadoop Map任务/Map对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23200361/