【MapReduce】03.MapReduce框架原理

目录

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

相关推荐

  1. MapReduce原理

    2024-03-10 08:02:04       28 阅读
  2. MapReduce

    2024-03-10 08:02:04       38 阅读
  3. MapReduce

    2024-03-10 08:02:04       36 阅读
  4. MapReduce

    2024-03-10 08:02:04       22 阅读
  5. <span style='color:red;'>MapReduce</span>

    MapReduce

    2024-03-10 08:02:04      36 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-03-10 08:02:04       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-03-10 08:02:04       100 阅读
  3. 在Django里面运行非项目文件

    2024-03-10 08:02:04       82 阅读
  4. Python语言-面向对象

    2024-03-10 08:02:04       91 阅读

热门阅读

  1. PHP伪协议详解

    2024-03-10 08:02:04       47 阅读
  2. 【MapReduce】02.Hadoop序列化

    2024-03-10 08:02:04       46 阅读
  3. Spring Boot面试系列-01

    2024-03-10 08:02:04       48 阅读
  4. 商品上传上货搬家使用1688商品采集api接口

    2024-03-10 08:02:04       37 阅读
  5. 基于MapReduce的汽车数据清洗与统计案例

    2024-03-10 08:02:04       40 阅读
  6. wpf中的Border和Background

    2024-03-10 08:02:04       43 阅读
  7. Neo4J图数据库入门示例

    2024-03-10 08:02:04       45 阅读
  8. SQL 注入攻击 - insert注入

    2024-03-10 08:02:04       51 阅读
  9. SQL之常用字符串函数

    2024-03-10 08:02:04       47 阅读
  10. Apache HBase

    2024-03-10 08:02:04       43 阅读