我已经开始阅读有关大数据和 Hadoop 的内容,所以这个问题对你来说可能听起来很愚蠢。
这是我所知道的。
每个映射器处理少量数据并产生中间输出。在此之后,我们有洗牌和排序的步骤。
现在,Shuffle = 将中间输出移动到各自的 Reducer,每个 Reducer 处理一个特定的键/键。
那么,一个数据节点是否可以在其中运行 Mapper 和 Reducer 代码,或者我们每个节点都有不同的 DN?
术语:Datanodes 用于 HDFS(存储)。Mappers 和 Reducers(计算)在具有 TaskTracker 守护进程的节点上运行。
每个 tasktracker 的 mapper 和 reducer 的数量由配置控制:mapred.tasktracker.map.tasks.maximum 和 mapred.tasktracker.reduce.tasks.maximum
受制于其他配置中的其他限制,理论上,只要 tasktracker 没有最大数量的 map 或 reduce 任务,它可能会被 jobtracker 分配更多的 map 或 reduce 任务。通常,jobtracker 会尝试分配任务以减少数据移动量。
所以,是的,您可以同时在同一个节点上运行映射器和化简器。
您可以在同一节点上同时运行映射器和减速器。例如,考虑一个单节点 hadoop 集群。在单节点 hadoop 集群中,整个 HDFS 存储(数据节点、名称节点)以及作业跟踪器和任务跟踪器都运行在同一个节点上。
在这种情况下,mapper 和 reducer 都运行在同一个节点上。