Hadoop3 - MapReduce 并行机制

Posted 小毕超

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Hadoop3 - MapReduce 并行机制相关的知识,希望对你有一定的参考价值。

一、MapReduce 并行机制

MapReduce 并行分为 Map 阶段并行 和 Reduces 阶段并行,其中Reduces 阶段并行 是可以直接手动设置:

job.setNumReduceTasks(4);

但是 Map 阶段的并行好像没有这种直接设置数量的参数给我们,那正常处理文件 Map 阶段的并行是怎么分割呢。

Map 阶段并行度是由客户端在提交job时决定的,即客户端提交job之前会对待处理数据进行逻辑切片。切片完成会形成切片规划文件,每个逻辑切片最终对应启动一个 MapTask。

逻辑切片机制由 FileInputFormat 实现类的 getSplits() 方法完成。

其中拆分过程大致为:

找出指定输入目录下的每个文件的大小,对每个文件进行 block(默认 128M) 大小的分割,如果 <= block 的部分也会单独分割成一个,比如指定输入目录下有两个文件:

file1(300M)
file2(100M)

则会拆分成 :

file1.split1(0 - 128M)
file1.split2(128 - 256M)
file1.split3(256 - 300M)
file2.split1(0 - 100M)

总共 4 个 MapTask 进行处理。

其中设计到三个重要的参数:minSize、maxSize、blockSize,其中真正的切片大小,则是根据下面方式选择出来的

Math.max(minSize, Math.min(maxSize, blockSize));

修改 blockSize 的大小,可以修改 hdfs-site.xml 文件:

<property>
	<name>dfs.block.size</name>
	<value>268435456</value>
</property>

以上是关于Hadoop3 - MapReduce 并行机制的主要内容,如果未能解决你的问题,请参考以下文章

Hadoop3 - MapReduce SequenceFile MapFile 格式存储

Hadoop3 - MapReduce SequenceFile MapFile 格式存储

Hadoop3 - MapReduce 介绍于基本使用

Hadoop3 - MapReduce 介绍于基本使用

Hadoop3 - MapReduce 介绍于基本使用

大数据之Hadoop(MapReduce):切片与MapTask并行度决定机制