当前位置:   article > 正文

Mapreduce复习日记_mapreduce 分片是物理分片还是逻辑分片

mapreduce 分片是物理分片还是逻辑分片

目录

1.mr的核心思想

1.1 什么是Mpareduce

 1.2 MR的优缺点

1.3 MR的分片机制

1.3.1输入分片的概念

 1.3.2 分片大小的选择

 1.3.3 分片与块的区别

 1.4 运行流程

1.4.1 MapTask的整体概述

 1.4.2 ReduceTask的整体概述

1.5 Shulle流程

1.5.1 map端shuffle

 1.5.2 reduce端的shuffle

 1.6 combiner函数

1.6.1 为什么要使用combiner函数

 1.6.2combiner函数的特点

2、mr的实例进程

3、MapReduce程序的组成

4、WordCount的经典案例

4.1 图解

4.2 开发


1.mr的核心思想

maptask并发实例,完全并行运行,互不相干
reducetask并发实例互不相干,依赖与上一个阶段所有的maptask并发实例

1.1 什么是Mpareduce

1. mapreduce是hadoop的三大重要模块之一
2. mapreduce是一个并发的计算和分析框架,用于计算和分析分布式文件系统上的大数据集。
3. 将计算划分为两个阶段:一个map(映射)阶段,一个reduce(归约)阶段
4. 该框架的开发灵感来源于google的《mapreduce》论文
5. 方便开发人员在不会分布式计算的情况下,开发和运行相关计算程序。

 1.2 MR的优缺点

1. 优点
    - 适合离线数据处理
    - mapreduce编程简单
    - 扩展性良好
    - 高容错性
2. 缺点
    - 不适合实时计算(实时计算:毫秒级别/秒级别,离线计算:秒级别以上)
    - 不适合流式计算(mapreduce处理的数据是静态的,不是流式的数据)
    - 不适合DAG(有向图)计算

1.3 MR的分片机制

1.3.1输入分片的概念

MapReduce在进行作业提交时,会预先对将要分析的原始数据进行划分处理,形成一个个等长的逻辑数据对象,称之为输入分片(inputSplit),简称“分片”。MapReduce为每一个分片构建一个单独的MapTask,并由该任务来运行用户自定义的map方法,从而处理分片中的每一条记录。

a文件  1025MB  ---  9块,最后一块是1MB


分析:分片就是记录MapTask要处理的是哪一个块,通过属性记录,因此称之为逻辑数据。

 1.3.2 分片大小的选择

#1. 分片数量越多,优势如下:
    -- 处理分片对应的原始数据所花的时间更少,也就是小于一个分片处理整个文件的时间。
    -- 每一个分片对应一个MapTask,MapTask是并行运行的,效率高
    -- 分片越多,负载均衡就越好。
    -- 计算机硬件越好,处理速度越快,就可以腾出时间,计算其他任务。
#2. 分片太小的缺点:
    如果分片太小,管理分片的总时间和构建map任务的总时间将决定作业的整个执行时间
#3. 分片太大的缺点:    
    如果分片跨越两个数据块,那么分片的部分数据需要通过网络传输到map任务运行的节点,占用网络带宽,效率更低
#4 得出结论:
    因此最佳分片大小应该和HDFS上的块大小一致。hadoop2.x默认128M.

 1.3.3 分片与块的区别

1. 分片是逻辑数据,记录的是要处理的物理块的信息而已
    path,start,length,hosts
2. 块是物理的,是真实存储在文件系统上的原始数据文件。
   本质:  逻辑数据
          物理数据
   出现的时机:  
              mapreduce程序进行计算时,才会遇到分片概念
              hdfs的存储才会涉及到分块的概念

 1.4 运行流程

1.4.1 MapTask的整体概述

1. maptask调用FileInputFormat的createRecordReader通过分片数据来读取原始数据    
2. 会调用nextKeyValue方法获取每行数据,然后返回一个(K,V)对,K是offset,V是一行数据
3. 将k-v对交给Map函数进行处理
4. 每对k-v调用一次map(K,V,context)方法,经过处理,使用context.write(k,v)
5. 写出的数据交给收集器OutputCollector.collect()处理
6. 将数据写入环形缓冲区,并记录写入的起始偏移量,终止偏移量,环形缓冲区默认大小100M
7. 默认写到80%的时候要溢写到磁盘,溢写磁盘的过程中数据继续写入剩余20%
8. 溢写磁盘之前要先进行分区然后分区内进行排序
9. 默认的

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/2023面试高手/article/detail/701995
推荐阅读
相关标签
  

闽ICP备14008679号