【MapReduce】03.MapReduce框架原理

3 篇文章 0 订阅
3 篇文章 0 订阅

目录

1.InputFormat数据输入

1.1.切片与MapTask并行度决定机制

1.2.Job提交流程源码和切片源码

1.3.FileInputFormat切片机制

1.4.TextInputFormat

1.5.CombineTextInputFormat切片机制

1.6.CombineTextInputFormat


1.InputFormat数据输入

1.1.切片与MapTask并行度决定机制

        MapTask的并行度决定Map阶段的任务处理并发度,进而影响到整个Job的处理速度。

MapTask并行度决定机制

        数据块:Block是HDFS物理上的数据分割,数据块是HDFS存储数据单位

        数据切片:数据切片是MapReduce程序计算输入数据的单位,一个切片会对应一个MapTask(逻辑切分,并非物理切分)

        1.一个Job的Map阶段并行度由客户端在提交Job时的切片数决定

        2.每一个Split切片分配一个MapTask并行实例处理

        3.默认情况下,切片大小=BlockSize

        4.切片时不考虑数据集整体,而是逐个针对每个文件单独切片

1.2.Job提交流程源码和切片源码

1)Job提交流程源码

2)FileInputFormat切片源码

        1.程序先找到数据存储的目录

        2.开始遍历处理(规划切片)目录下的每一个文件

        3.遍历第一个文件

                3.1.获取文件大小fs.sizeOf(txt)

                3.2.计算切片大小computeSplitSize(Math.max(minSize.Math.min(maxSize.blocksize)))=blocksize=128M

                3.3.默认情况下,切片大小=blocksize

                3.4.开始切片,(0-128M)(128-256M)(256-300M)每次切片时,都要判断切完剩下的部分是否大于块的1.1倍,不大于1.1倍就划分一块切片

                3.5.将切片信息写到一个切片规划文件中

                3.6.InputSplit只记录切片的元数据信息,比如起始位置、长度以及所在节点列表

        4.提交切片规划文件到Yarn上,Yarn上的MrAppMaster就可以根据切片规划文件计算开启MapTask个数

1.3.FileInputFormat切片机制

1)切片机制

        1.简单的按照文件的长度进行切片

        2.切片大小,默认等于bolck大小

        3.切片时不考虑数据集整体,而是逐个针对每一个文件单独切片

2)FileInputFormat切片大小的参数配置

        源码中计算切片大小的公式

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

        mapreduce.input.fileinputformat.split.minsize=1(默认值为1)

        mapreduce.input.fileinputformat.split.maxsize=Long.MAXValue(默认值Long.MAXValue)

        因此,默认情况下, 切片大小=blockSize

        切片大小设置

        maxsize(切片最大值):参数如果调的比blockSize小,则会让切片变小,而且等于配置的这个参数的值

        minSize(切片最小值):参数调的比blockSize大,则可以让切片变得比blockSize大

        获取切片信息API

        

//获取切片的文件名称
String name = inputSplit.getPath().getName();
//根据文件类型获取切片信息
FileSplit inputSplit = (FileSplit)context.getInputSplit();
1.4.TextInputFormat
1.5.CombineTextInputFormat切片机制

1)应用场景

        用于小文件过多的场景,可以将多个小文件从逻辑上规划到一个切片中,这样多个小文件就可以交给一个MapTask处理

2)虚拟存储切片最大值设置

        CombineTextInputFormat.setMaxInputSplitSize(job,4194304);//4M

3)切片机制

        生成切片过程包括:虚拟存储过程和切片过程两部分

1.6.CombineTextInputFormat

  • 8
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值