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