2016-11-30 64 views
0

我知道映射器总是执行几个映射操作,而reducer总是执行几个reduce操作。换句话说,mapper(reducer)和map(reduce)操作之间的映射是一对多的映射。
现在我有一个问题,是tasktracker和mapper之间的一对一或一对多的映射吗?是一个tasktracker对应hadoop中的mapper还是reducer?

回答

2

首先,我会向你解释一个任务跟踪器正是:

一个的TaskTracker是接受任务的集群中的节点 - 地图, 减少和整理操作 - 从JobTracker的。

每个TaskTracker都配置了一组插槽,这些插槽指示它可以接受的任务数量。当JobTracker尝试在MapReduce操作中查找某处安排任务时,它首先在承载包含数据的DataNode的同一台服务器上查找一个空插槽,如果没有,则会在该计算机上的一个计算机上查找空插槽相同的机架。

TaskTracker生成一个单独的JVM进程来完成实际的工作;这是为了确保流程失败不会使任务跟踪器失效。 TaskTracker监视这些产生的进程,捕获输出和退出代码。当流程成功或失败时,跟踪器通知JobTracker。 TaskTracker通常每隔几分钟发送一次心跳消息给JobTracker,以确保JobTracker它仍然活着。这些消息还通知JobTracker可用插槽的数量,因此JobTracker可以及时了解群集工作中可以委派的位置。

,是的,这导致我们到一个点一个任务跟踪器做的作业服务器很多操作(实际工作,即,地图reduce任务),所以回答你的问题会

一个(作业服务器)到很多(任务跟踪器)关系

1

最后一行是不正确的。

纠正方法:群集中每个DataNode有一个任务跟踪器,并且群集中每个NameNode只有一个作业跟踪器,假设您位于MRV1(非YARN)Hadoop群集(Hadoop 1。 X)。

0

在mapreduce中 - 映射器的数量取决于输入拆分的数量。

又会有每个数据节点的一个任务服务器

在情况下,如果有多个输入分割单个节点-的分裂(按照数据局部性优化)内将在队列中被执行在相应的机器JVM中(默认情况下,每个节点有两个JVM执行操作)。

考虑到上述情况,将会有任务跟踪器与MAPPER的一对多映射。

相关问题