zoukankan      html  css  js  c++  java
  • Mapreduce详解Shuffle过程

    引自[https://www.iteye.com/blog/langyu-992916]
    shuffle的意义有三点:
    1.把map task端的数据完整传输到reduce task端
    2.减少不必要的宽带消耗
    3.减少磁盘IO消耗

    首先把Shuffle理解为map的shuffle和reduce的shuffle
    map task端的shuffle可以分为以下几个步骤:
    1.map,对key进行value赋值
    2.partitioner,对于不同的key值分配不同的reduce task端,个人理解key/value以及分哪个reduce信息写在一起。
    3.spill,写入内存缓冲区后,会造成以溢写,写入磁盘
    4.conbiner,溢写文件会相同的key做合并操作
    5.merge,对多个溢写文件进行合并,最后每个map task端只有一个溢写文件

    reduce task端的shuffle可以分为以下几个步骤:
    1.copy,首先根据jobtracker获取map task数据。从不同map task端copy数据过来。
    2.merge,将不同map task端的数据合并起来,作为reduce端的输入
    3,reduce,得到最终结果

    这次回顾,能更深理解其中过程,但仍然觉得有部分地方理解错误,需要继续对其学习。
    后面将对spark进行回顾,加强学习。
    目前Hadoop中的mapreduce更多已被spark替代。

  • 相关阅读:
    8.09_python_lx_shopping
    8.06_python_lx_day25
    8.05_python_lx_day24
    8.05_python_lx_day23
    8.03_python_lx_day21<2>
    Java注解
    Java多线程04
    Java多线程03
    Java多线程02
    Java多线程01
  • 原文地址:https://www.cnblogs.com/chenshaowei/p/12335110.html
Copyright © 2011-2022 走看看