Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/hadoop/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Hadoop Wordcount:每个块超过1个映射任务,并关闭推测执行_Hadoop_Mapper_Input Split - Fatal编程技术网

Hadoop Wordcount:每个块超过1个映射任务,并关闭推测执行

Hadoop Wordcount:每个块超过1个映射任务,并关闭推测执行,hadoop,mapper,input-split,Hadoop,Mapper,Input Split,在Wordcount中,在关闭推测性执行的情况下,每个块可以获得多于1个映射任务 jobtracker是否在幕后发挥了一些神奇的作用,以分配比InputSplits提供的任务更多的任务?块和拆分是两件不同的事情。如果一个块有多个拆分,则该块可能会有多个映射器。答案在于Hadoop InputFormats的工作方式: 在HDFS中: 让我们举一个例子,其中块大小为1MB,HDFS的输入文件大小为10MB,最小分割大小>1MB 1) 首先,将一个文件添加到HDFS中 2) 该文件分为10个块,每个

在Wordcount中,在关闭推测性执行的情况下,每个块可以获得多于1个映射任务


jobtracker是否在幕后发挥了一些神奇的作用,以分配比InputSplits提供的任务更多的任务?

块和拆分是两件不同的事情。如果一个块有多个拆分,则该块可能会有多个映射器。

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

在HDFS中:

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

1) 首先,将一个文件添加到HDFS中

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

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

4) 由于1MB块小于最小分割大小,HDFS一次处理1MB,无需额外分割

这个故事的寓意是:如果拆分小于最小拆分大小,FileInputFormat实际上会为您执行额外的拆分

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


这里比较棘手的一点是,在toy mapreduce作业中,在所有情况下都希望每个分割一个块,而在实际集群中,我们忽略了分割默认大小参数,除非使用大文件,否则这些参数不会起作用

有趣。你为什么这么认为?这当然是答案的一部分。细节是FileInputFormat不是“转储”输入,而是为您拆分数据,如果您的块特别大,它将自行拆分。