我知道Map器总是执行一对Map操作,而reducer总是执行一对reduce操作。换句话说,Map器(reducer)和Map(reduce)操作之间的Map是一对多的。现在我有一个问题,tasktracker和mapper之间的Map是一对一还是一对多?
qcbq4gxm1#
最后一行不正确。更正是:集群中每个datanode有一个task tracker,而集群中每个namenode只有一个job tracker,这是假设您在mrv1(non-yarn)hadoop集群(hadoop1.x)上。
cclgggtu2#
首先,我将向您解释什么是任务追踪器:tasktracker是集群中的一个节点,它从jobtracker接受任务Map、reduce和shuffle操作。每个tasktracker都配置了一组插槽,这些插槽指示它可以接受的任务数。当jobtracker试图在mapreduce操作中找到安排任务的位置时,它首先会在承载包含数据的datanode的同一服务器上查找空插槽,如果没有,它会在同一机架中的计算机上查找空插槽。tasktracker生成一个单独的jvm进程来执行实际工作;这是为了确保进程失败不会导致任务跟踪器关闭。tasktracker监视这些派生的进程,捕获输出和退出代码。当进程完成时,不管是否成功,跟踪程序都会通知jobtracker。tasktracker还向jobtracker发送心跳消息,通常每隔几分钟发送一次,以确保jobtracker仍然活着。这些消息还通知jobtracker可用插槽的数量,以便jobtracker能够及时了解集群中可以委派工作的位置。是的,这让我们想到一个任务跟踪器用job tracker做很多操作(实际的任务,即map reduce任务),所以对你的问题的答案是一对多关系
tvokkenx3#
在mapreduce中-Map器的数量取决于输入拆分的数量。每个数据节点也将有一个任务跟踪器在这种情况下,如果单个节点中有多个输入拆分,则拆分(根据数据位置优化)将在相应机器jvm的队列中执行(默认情况下,每个节点有两个jvm来执行操作)。考虑到上面的场景-任务跟踪器和Map器将有一对多的Map。
3条答案
按热度按时间qcbq4gxm1#
最后一行不正确。
更正是:集群中每个datanode有一个task tracker,而集群中每个namenode只有一个job tracker,这是假设您在mrv1(non-yarn)hadoop集群(hadoop1.x)上。
cclgggtu2#
首先,我将向您解释什么是任务追踪器:
tasktracker是集群中的一个节点,它从jobtracker接受任务Map、reduce和shuffle操作。
每个tasktracker都配置了一组插槽,这些插槽指示它可以接受的任务数。当jobtracker试图在mapreduce操作中找到安排任务的位置时,它首先会在承载包含数据的datanode的同一服务器上查找空插槽,如果没有,它会在同一机架中的计算机上查找空插槽。
tasktracker生成一个单独的jvm进程来执行实际工作;这是为了确保进程失败不会导致任务跟踪器关闭。tasktracker监视这些派生的进程,捕获输出和退出代码。当进程完成时,不管是否成功,跟踪程序都会通知jobtracker。tasktracker还向jobtracker发送心跳消息,通常每隔几分钟发送一次,以确保jobtracker仍然活着。这些消息还通知jobtracker可用插槽的数量,以便jobtracker能够及时了解集群中可以委派工作的位置。
是的,这让我们想到一个任务跟踪器用job tracker做很多操作(实际的任务,即map reduce任务),所以对你的问题的答案是
一对多关系
tvokkenx3#
在mapreduce中-Map器的数量取决于输入拆分的数量。
每个数据节点也将有一个任务跟踪器
在这种情况下,如果单个节点中有多个输入拆分,则拆分(根据数据位置优化)将在相应机器jvm的队列中执行(默认情况下,每个节点有两个jvm来执行操作)。
考虑到上面的场景-任务跟踪器和Map器将有一对多的Map。