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