MapReduce并行度决定机制

举报
剑指南天 发表于 2021/03/15 03:06:09 2021/03/15
【摘要】 本文主要介绍了MapTask和ReduceTask并行度的决定机制

1    MapTask

1.1 MapTask的并行度指的是在MapReduce处理任务过程中的map阶段有多少个并行的task处理任务.map阶段的并行度由客户端在提交job时决定,即客户端提交job之前会对处理数据进行逻辑切片,每个逻辑切片对应启动一个MapTask.源码运行逻辑如下图1.png2.png3.png4.png5.png

6.png7.png

从下图可以看出一个job的map阶段并行度由客户端在提交job时切片数决定

8.png

1.2 从源码运行逻辑可以看出,逻辑切片机制由FileInputFormat实现类的getSplits()方法完成.生成切片的部分源码如下:

下图可以看出逻辑切片不考虑数据整体,而是针对每个文件进行切片

12.png

下面代码是确定切片大小的代码.可以看出默认情况下切片的大小为BlockSize,以及如果自定义修改切片大小,需要修改minSize和maxSize的值,配置参数为mapreduce.input.fileinputformat.split.minsize和mapreduce.input.fileinputformat.split.maxsize

13.png

14.png

从下面可以看出虽然一般情况下切片是按照splitSize来切,但是并不是每块切片的大小都是小于等于splitSize.因为切片的条件是按照1.1倍的splitSize进行判断的.

15.png

2. ReduceTask

2.1 ReduceTask的并行度指的是在MapReduce处理任务过程中的reduce阶段有多少个并行的task处理任务. 其并行度是由提交任务时参数配置的,默认为1.如:job.setNumReduceTasks(4),其并行度为4.

【版权声明】本文为华为云社区用户原创内容,未经允许不得转载,如需转载请自行联系原作者进行授权。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。