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