• Hadoop3:MapReduce源码解读之Map阶段的数据输入过程整体概览(0)


    一、MapReduce中数据流向

    在这里插入图片描述

    二、MapTask并行度

    1、原理概览

    数据块:BlockHDFS物理上把数据分成一块一块。数据块是HDFS存储数据单位。
    数据切片:数据切片只是在逻辑上对输入进行分片,并不会在磁盘上将其切分成片进行存储。数据切片是MapReduce程序计算输入数据的单位,一个切片会对应启动一个MapTask

    1)一个JobMap阶段并行度由客户端在提交Job时的切片数决定
    2)每一个Split切片分配一个MapTask并行实例处理
    3)默认情况下,切片大小=BlockSize
    4)切片时不考虑数据集整体,而是逐个针对每一个文件单独切片

    所以,会开启几个MapTask线程并发处理任务,是由切片数量决定的。
    一般,切片大小的设置要与Block大小保持一致。这样性能最优。

    2、相关配置

    切片大小的配置
    mapred-default.xml
    最小切片大小配置
    默认0,如果配置0,则代码层面分配是1

    <property>
      <name>mapreduce.input.fileinputformat.split.minsizename>
      <value>0value>
      <description>The minimum size chunk that map input should be split
      into.  Note that some file formats may have minimum split sizes that
      take priority over this setting.description>
    property>
    

    在这里插入图片描述
    最大切片大小配置
    默认不配置,所以代码获取不到,代码给予Long.MAX_VALUE
    mapreduce.input.fileinputformat.split.maxsize
    在这里插入图片描述


    BlockSize的配置
    hdfs-default.xml

    <property>
      <name>dfs.blocksizename>
      <value>134217728value>
      <description>
          The default block size for new files, in bytes.
          You can use the following suffix (case insensitive):
          k(kilo), m(mega), g(giga), t(tera), p(peta), e(exa) to specify the size (such as 128k, 512m, 1g, etc.),
          Or provide complete size in bytes (such as 134217728 for 128 MB).
      description>
    property>
    
  • 相关阅读:
    通过python管理mysql
    【Verilog】inout 端口信号的使用
    Jmeter接口测试工具的一些使用小技巧
    springboot simple (6) springboot thrift
    [qt]vs2022+qt5.13.2代码报错QChartView不明确
    【C++技能树】Lambda表达式
    使用Spring Boot进行分页
    LeetCode 94. 二叉树的中序遍历
    MySQL进阶05_索引_SQL优化
    【好书分享第十三期】AI数据处理实战108招:ChatGPT+Excel+VBA
  • 原文地址:https://blog.csdn.net/Brave_heart4pzj/article/details/139466903