tasktracker是对应于hadoop中的mapper还是reducer?

bvk5enib  于 2021-05-29  发布在  Hadoop
关注(0)|答案(3)|浏览(402)

我知道Map器总是执行一对Map操作,而reducer总是执行一对reduce操作。换句话说,Map器(reducer)和Map(reduce)操作之间的Map是一对多的。
现在我有一个问题,tasktracker和mapper之间的Map是一对一还是一对多?

qcbq4gxm

qcbq4gxm1#

最后一行不正确。
更正是:集群中每个datanode有一个task tracker,而集群中每个namenode只有一个job tracker,这是假设您在mrv1(non-yarn)hadoop集群(hadoop1.x)上。

cclgggtu

cclgggtu2#

首先,我将向您解释什么是任务追踪器:
tasktracker是集群中的一个节点,它从jobtracker接受任务Map、reduce和shuffle操作。
每个tasktracker都配置了一组插槽,这些插槽指示它可以接受的任务数。当jobtracker试图在mapreduce操作中找到安排任务的位置时,它首先会在承载包含数据的datanode的同一服务器上查找空插槽,如果没有,它会在同一机架中的计算机上查找空插槽。
tasktracker生成一个单独的jvm进程来执行实际工作;这是为了确保进程失败不会导致任务跟踪器关闭。tasktracker监视这些派生的进程,捕获输出和退出代码。当进程完成时,不管是否成功,跟踪程序都会通知jobtracker。tasktracker还向jobtracker发送心跳消息,通常每隔几分钟发送一次,以确保jobtracker仍然活着。这些消息还通知jobtracker可用插槽的数量,以便jobtracker能够及时了解集群中可以委派工作的位置。
是的,这让我们想到一个任务跟踪器用job tracker做很多操作(实际的任务,即map reduce任务),所以对你的问题的答案是
一对多关系

tvokkenx

tvokkenx3#

在mapreduce中-Map器的数量取决于输入拆分的数量。
每个数据节点也将有一个任务跟踪器
在这种情况下,如果单个节点中有多个输入拆分,则拆分(根据数据位置优化)将在相应机器jvm的队列中执行(默认情况下,每个节点有两个jvm来执行操作)。
考虑到上面的场景-任务跟踪器和Map器将有一对多的Map。

相关问题