当前位置:   article > 正文

mapreduce运行的5个阶段_mapreduce执行的全过程包括以下几个主要阶段

mapreduce执行的全过程包括以下几个主要阶段

mapreduce运行的5个阶段

mapreduce在运行的过程中大致概括为5个步骤
1. [input阶段]获取输入数据进行分片作为map的输入
2. [map阶段]过程对某种输入格式的一条记录解析成一条或多条记录
3. [shffle阶段]对中间数据的控制,作为reduce的输入
4. [reduce阶段]对相同key的数据进行合并
5. [output阶段]按照格式输出到指定目录

运行过程图

运行过程图

input阶段

input阶段主要是从节点上反序列化数据,读取后切片,供map阶段使用
序列化格式和inputformat格式可以自定义设置
只有支持分片的压缩格式可以分片
记录格式:如serse 用正则表达式来转换文本hive

具体的步骤顺序如下:
1. 访问datanode中的数据反序列化数据并进行切片,为每一个切片分配一个map任务
2. 并发的执行这些任务
3. 通过recordReader读取切片中的每一条记录,按照记录格式读取,偏移值作为map的key,记录行作为value,当做map方法的参数

map阶段

通过对输入记录的处理,转换成一个或多个中间记录

shuffle阶段

需要注意:
1. shuffle阶段会对中间值进行优化,并且将分区的数据分发给各个reduce处理

  1. map任务的输出默认是放在本地磁盘的临时缓冲目录中的

  2. 分区,排序,combiner过程可自定义

  3. 由于受限于集群可用带宽,通常会对中间数据做压缩,combiner处理,减少网络带宽消耗

  4. 分区的作用就是决定根据map 输出的key值由哪个reduce处理

  5. mapper实现类读取配置文件属性,可以在配置中指定压缩的格式

  6. 每一个分组的后台线程对输出结果的key进行排序,在排序的过程中,有combine函数则会进行调用

  1. map数据会先输出到内存缓冲区中,到达默认的80%的阀值后,会像map任务本地写数据,每次写都会生成一个小文件。
  2. 在写到本地的过程中,会经历分区排序combiner(可选)的过程
  3. 当最后一个文件溢写到本地磁盘中的时候,区与区的文件就是合并排序压缩(可选)
  4. 经过分区的排序的大文件会按照不同的分区被拷贝到相应的reduce中处理
  5. reduce端通过http network复制map端传来的数据
  6. 将输入的数据排序后合并,经过2次排序后会返回一个value的迭代器
  7. 分组将相同key的value放到一起作为一个value集合,作为reduce的输入

reduce阶段

处理<key,list<value>>对,对每个key产生一个结果

output阶段

对输出数据通常会做压缩,节省磁盘空间

将reduce结果按照输出的格式写入文件中

  1. 按照输出文件的格式,将每个键值对结果输出一行,中间分隔符默认是‘\t’.默认调用键值对对象的toString()方法
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/羊村懒王/article/detail/396316
推荐阅读