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

Is a tasktracker corresponding to a mapper or a reducer in hadoop?

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

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

A TaskTracker is a node in the cluster that accepts tasks - Map, Reduce and Shuffle operations - from a JobTracker.

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

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

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

one (job tracker) to many (task tracker) relation

最后一行不正确。

更正是:集群中每个数据节点有一个任务跟踪器,集群中每个名称节点只有一个作业跟踪器,这是假设您在 MRV1(非 YARN)Hadoop 集群上(Hadoop 1.x).

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

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

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

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