Hadoop性能模型(1)
MapReduce Job的执行分为map任务和reduce任务,map任务分为几个阶段:Read(读map的输入),Map(map函数处理),Collect(序列化到buffer和分区),Spill(排序、组合、压缩、写map输出到本地磁盘),Merge(合并排序了的spill文件)。Reduce任务分为几个阶段:Shuffle(传输map输出到reduce任务,必要时解压缩),Merge(合并排序了的map输出),Reduce(reduce函数处理),Write(写reduce输出到分布式文件系统)。
1. 模型参数
性能模型依靠参数集来评估MapReduce job的消耗,把参数分为三个范畴:
1. Hadoop参数:影响job执行的hadoop配置参数。
2. 统计属性参数:输入数据和用户定义函数的一些统计值。
3. 消耗因子属性参数: job执行期间的I/O,CPU,网络等的消耗。
Hadoop参数:
变量 Hadoop参数 缺省值 影响
pNumNodes 节点数 System
pTaskMem mapred.child.java.opts -Xmx200m System
pMaxMapsPerNode mapred.tasktracker.map.tasks.max 2 System
pMaxRedPerNode mapred.tasktracker.reduce.tasks.max 2 System
pNumMappers mapred.map.tasks Job
pSortMB io.sort.mb 100 MB Job
pSpillPerc io.sort.spill.percent 0.8 Job
pSortRecPerc io.sort.record.percent 0.05 Job
pSortFactor io.sort.factor 10 Job
pNumSpillsForComb min.num.spills.for.combine 3 Job
pNumReducers mapred.reduce.tasks Job
pInMemMergeThr mapred.inmem.merge.threshold 1000 Job
pShu?eInBufPerc mapred.job.shuffle.input.buffer.percent 0.7 Job
pShu?eMergePerc mapred.job.shuffle.merge.percent 0.66 Job
pReducerInBufPerc mapred.job.reduce.input.buffer.percent 0 Job
pUseCombine mapred.combine.class or mapreduce.combine.class null Job
pIsIntermCompressed mapred.compress.map.output false Job
pIsOutCompressed mapred.output.compress false Job
pReduceSlowstart mapred.reduce.slowstart.completed.maps 0.05 Job
pIsInCompressed 输入是否压缩 Input
pSplitSize 输入spilt的大小 Input
统计属性参数:
变量 描述
sInputPairWidth 输入kv对的平均宽度
sMapSizeSel mapper 大小
sMapPairsSel mapper kv对数量
sReduceSizeSel reducer 大小
sReducePairsSel reducer kv对数量
sCombineSizeSel combine 大小
sCombinePairsSel combine kv对数量
sInputCompressRatio 输入数据压缩率
sIntermCompressRatio 中间map输出压缩率
sOutCompressRatio 最终结果压缩率
消耗因子属性参数:
变量 描述
cHdfsReadCost 从HDFS读消耗
cHdfsWriteCost 写HDFS消耗
cLocalIOCost 从本地磁盘执行I/O的消耗
cNetworkCost 网络传输消耗
cMapCPUCost 执行MAP函数的CPU消耗
cReduceCPUCost 执行Reduce函数的CPU消耗
cCombineCPUCost 执行Combine函数的CPU消耗
cPartitionCPUCost 分区的CPU消耗
cSerdeCPUCost 序列化的CPU消耗
cSortCPUCost 排序的CPU消耗
cMergeCPUCost 合并的CPU消耗
cInUncomprCPUCost 解压输入数据的CPU消耗
cIntermUncomprCPUCost 解压中间数据的CPU消耗
cIntermComprCPUCost 压缩中间结果的CPU消耗
cOutComprCPUCost 压缩输出结果的CPU消耗
定义标记函数I:
初始化: