字数统计:每个块超过 1 个地图任务,推测执行关闭



在字数统计中,您似乎可以为每个块获得 1 个以上的映射任务,并关闭推测执行。

作业跟踪器是否在引擎盖下施展了一些魔力来分配比输入拆分提供的更多的任务?

块和分裂是两个不同的东西。如果一个块有多个拆分,则可能会为该块获得多个映射器。

答案在于Hadoop InputFormats的工作方式:

在HDFS中:

让我们举一个例子,其中块的大小为1MB,HDFS的输入文件的大小为10MB,最小拆分大小为>1MB

1)首先,将文件添加到HDFS。

2)文件分为10个块,每个块的大小为1MB。

3)然后,每个1MB块由输入分配器读取。

4)由于1MB块比MIN_SPLIT_SIZE块小,HDFS一次处理1MB,没有额外的拆分。

故事的寓意:如果您的拆分低于最小拆分大小,FileInputFormat 实际上会为您进行额外的拆分。

我想我完全忘记了这一点,但回想起来,这从一开始就是 hadoop 中的一个功能。 许多生态系统工具使用输入格式在运行时任意拆分块的能力,以应用程序特定的方式分配负载。

这里棘手的部分是,在玩具mapreduce作业中,在所有情况下都期望每次拆分一个块,然后在实际集群中,我们忽略了拆分默认大小参数,除非您使用大文件,否则这些参数不会发挥作用。

最新更新