随机排序,节点少于配对

时间:2018-11-15 09:47:04

标签: hadoop

我试图了解MapReduce,所以这是一个非常菜鸟的问题。我正在看下面的图片。根据我的理解,这很可能是错误的,在映射阶段有四个节点,然后在混洗阶段有7个节点。每个key:value对都移到不同的节点。我的问题是,如果在洗牌阶段只有3个节点,会发生什么?如果您有四个大小相等的key:value对,是否可以将它们任意移动到节点上,所以一个大小是其余两个大小的大小无关紧要,还是将其中一个对拆分并均匀地分布?

mapreduce

1 个答案:

答案 0 :(得分:0)

此图像未显示实际节点。相反,每个随机播放/缩小矩形都是对reduce()函数的单个 call 。之所以有7个,是因为mapper阶段发出了7个不同的键。这些调用分布在reduce tasks 中。您可以自己使用job.setNumReduceTasks(5)配置化简任务的数量。如果您有一个reduce任务,那么所有调用都将在那里发生。如果您有两个reduce任务,则一些调用将在第一个reduce任务中发生,而其他调用将在另一个(由Partitioner控制)中发生。如果您有1000个reduce任务,则只有一些reduce任务将获得reduce()调用,而另一些根本不会处理任何数据。

Reduce任务在物理群集节点上作为单独的进程启动。它们可能同时启动,也可能同时启动(取决于您拥有多少资源以及您的调度程序)。