tasktracker对应hadoop中的mapper还是reducer?

Posted

技术标签:

【中文标题】tasktracker对应hadoop中的mapper还是reducer?【英文标题】:Is a tasktracker corresponding to a mapper or a reducer in hadoop? 【发布时间】:2016-11-30 06:44:31 【问题描述】:

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

【问题讨论】:

【参考方案1】:

首先,我将向您解释什么是任务跟踪器:

TaskTracker 是集群中接受任务的节点 - Map, Reduce 和 Shuffle 操作 - 来自 JobTracker。

每个 TaskTracker 都配置了一组槽,这些槽表示它可以接受的任务数量。当 JobTracker 试图在 MapReduce 操作中找到某个地方来安排任务时,它首先在托管包含数据的 DataNode 的同一台服务器上查找一个空槽,如果没有,它会在同一个机架。

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

是的,这使我们得出一个结论,即一个任务跟踪器使用作业跟踪器执行许多操作(实际作业,即 map reduce 任务),因此您的问题的答案是

one (job tracker) to many (task tracker) 关系

【讨论】:

【参考方案2】:

最后一行不正确。

更正是:集群中每个 DataNode 有一个任务跟踪器,集群中每个 NameNode 只有一个作业跟踪器,这是假设您在 MRV1(非 YARN)Hadoop 集群(Hadoop 1.x )。

【讨论】:

【参考方案3】:

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

每个数据节点也会有一个任务跟踪器

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

考虑到上述情况——Task Tracker 与 MAPPER(s) 之间会有一对多的映射。

【讨论】:

以上是关于tasktracker对应hadoop中的mapper还是reducer?的主要内容,如果未能解决你的问题,请参考以下文章

Hadoop介绍-4.Hadoop中NameNodeDataNodeSecondaryNameNodeJobTracker TaskTracker

如何清理hadoop过期历史数据

Hadoop MapReduce 1.x 工作原理

Hadoop MapReduce 1.x 工作原理

Task运行过程分析2

Hadoop,MapReduce,YARN和Spark的区别与联系