1、映射任务并行度的确定机制
job的映射阶段的并行度由客户端提交job时确定
客户端规划对映射阶段并行度的基本逻辑如下:
将处理对象数据按逻辑切片、即特定的切片大小在逻辑上分割为多个分割,并对各分割分配mapTask并行实例处理
此逻辑和创建的切片规划描述文件是通过FileInputFormat实现类的getSplits )方法完成的,如下图所示。
2、切片是在InputFormat类中定义的getSplit ) )方法
3、FileInputFormat中的默认切片机制:
)1)简单地按照文件的内容长度进行切片
)2)切片大小,默认值等于块大小
)3)不考虑整个数据集,对每个文件分别进行切片
例如,要处理的数据有两个文件。
file1.txt 320M
file2.txt 10M
经过FileInputFormat的切片机制运算,形成的切片信息如下。
file1. txt.split1----0至128
file1. txt.split2----128至256
file1. txt.split3----256至320
file2. txt.split1----0至10m
4、FileInputFormat中切片大小的参数配置
通过分析源代码,在FileInputFormat中,计算片大小的逻辑: math.max(minsize,math.min ) maxsize,blockSize )片主要是这些值
minsize :默认值: 1
配置参数: MapReduce.input.fileinputformat.split.minsize
maxsize :默认值: Long.MAXValue
配置参数: MapReduce.input.fileinputformat.split.maxsize
blockSize:HADOOP 2.X后,HDFS的默认blocksize为128M
因此,http://www.Sina.com/http://www.Sina.com /
最大切片值:
如果参数小于blocksize,切片会变小,与设置的参数值相同
minsize (切片最小值) :
如果参数大于块大小,则切片可以大于块大小