4

我已经开始阅读有关大数据和 Hadoop 的内容,所以这个问题对你来说可能听起来很愚蠢。

这是我所知道的。

每个映射器处理少量数据并产生中间输出。在此之后,我们有洗牌和排序的步骤。

现在,Shuffle = 将中间输出移动到各自的 Reducer,每个 Reducer 处理一个特定的键/键。

那么,一个数据节点是否可以在其中运行 Mapper 和 Reducer 代码,或者我们每个节点都有不同的 DN?

4

2 回答 2

7
  1. 术语:Datanodes 用于 HDFS(存储)。Mappers 和 Reducers(计算)在具有 TaskTracker 守护进程的节点上运行。

  2. 每个 tasktracker 的 mapper 和 reducer 的数量由配置控制:mapred.tasktracker.map.tasks.maximum 和 mapred.tasktracker.reduce.tasks.maximum

受制于其他配置中的其他限制,理论上,只要 tasktracker 没有最大数量的 map 或 reduce 任务,它可能会被 jobtracker 分配更多的 map 或 reduce 任务。通常,jobtracker 会尝试分配任务以减少数据移动量。

所以,是的,您可以同时在同一个节点上运行映射器和化简器。

于 2013-12-30T06:13:55.157 回答
3

您可以在同一节点上同时运行映射器和减速器。例如,考虑一个单节点 hadoop 集群。在单节点 hadoop 集群中,整个 HDFS 存储(数据节点、名称节点)以及作业跟踪器和任务跟踪器都运行在同一个节点上。

在这种情况下,mapper 和 reducer 都运行在同一个节点上。

于 2013-12-30T07:20:15.570 回答