前言

在MapReduce程序中,待处理的数据最开始是放在HDFS上的,这点无异议。

接下来,数据被会被送往一个个Map节点中去,这也无异议。

下面问题来了:数据在被Map节点处理完后,再何去何从呢?

这就是本文探讨的话题。

Shuffle

在Map进行完计算后,将会让数据经过一个名为Shuffle的过程交给Reduce节点;

然后Reduce节点在收到了数据并完成了自己的计算后,会将结果输出到Hdfs。

那么,什么是Shuffle阶段,它具体做什么事情?

需要知道,这可是Hadoop最为核心的所在,也是号称“奇迹出现的地方“  = =#

Shuffle具体分析

首先,给出官方对于Shuffle流程的示意图:

  Shuffle过程植入于Map端和Reduce端两边

1. Map端工作:

a. 分区:根据键值对的Key值,选定键值对所属的Partition区间(与Reduce节点对应)。

b. 排序:对各分区内的键值对根据键进行排序。

c. 分割:Map端的结果先是存放在缓冲区内的,如果超出,自然就要执行分割的处理,将一部分数据发往硬盘。

d. 合并:对于要发送往同一个节点的键值对,我们需要对它进行合并。(这一步很可能针对硬盘,对于海量数据处理,缓冲区溢出是很正常的事情)

2. Reduce端工作:

a. Copy:以HTTP的方式从指定的Map端拉数据,注意是Map端的本地磁盘。

b. 合并:一个Reduce节点有可能从多个Map节点获取数据,获取到之后

c. 排序:对各分区内的键值对根据键进行排序。和Map端操作一样。

小结

对于这部分的内容,以后有机会做Hadoop性能方面的工作时,会继续学习研究。

最新文章

  1. URL无法显示某些特殊符号
  2. 在css嵌套中的html的table里的字左右不对齐
  3. IE9或以上的浏览器flash值为空时,导致domready不触发
  4. static作用
  5. [Android学习笔记]View的draw过程学习
  6. 微软最牛MS08-067漏洞各系统补丁下载地址
  7. Java基础(00)
  8. 把时间留给重要的事——Markdown 模板功能上线
  9. python Tags 母板 组件 静态文件相关 自定义simpletag inclusion_tag
  10. 校园wifi
  11. tensorflow学习之(七)使用tensorboard 展示神经网络的graph/histogram/scalar
  12. composer阿里云短信服务不支持传参为数值--为2017年短信接口,2018阿里云有更新http://www.cnblogs.com/q1104460935/p/8916096.html
  13. python测试开发django-53.xadmin里Model分类管理(proxy=True)
  14. what's the python之基本运算符及字符串、列表、元祖、集合、字典的内置方法
  15. 美图DPOS以太坊教程(Docker版)
  16. 【Java并发】JUC—ReentrantReadWriteLock有坑,小心读锁!
  17. Linux gprof命令
  18. Android 开发 命名规范(基础回顾)
  19. dubbo服务治理中间件,zookeeper注册中心 安装配置
  20. C++实现矩阵的相加/相称/转置/求鞍点

热门文章

  1. jenkins入门系列之一 jenkins的安装
  2. JavaScript正则表达式函数总结
  3. LeetCode - 596. Classes More Than 5 Students
  4. POJ 1021 2D-Nim
  5. haproxy下X-Frame-Options修复方法
  6. vue.js 与iview官网
  7. bzoj 2209 [Jsoi2011]括号序列 平衡树
  8. Https访问
  9. linux中的三个文件时间
  10. filebeat.yml(中文配置详解)