15.【云计算 精品讲义】之十五:第5章 Hadoop 2.0 主流开源云架构(一二三四五 五部分全)
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
5.1 引例
问题概述
【例5-1】假设现有一些配置完全相同的机器cSlave0~cSlaveN,cMaster0,cMaster1, 并且每台机器都有1个双核CPU,5GB硬盘。现有两个大小都是2GB的文件file0和 file1。 第一类问题,存储。
问题①:将file0和file1存入两台不同机器,但要求对外显示它们存于同一硬盘空间。 问题②:不考虑①,现有一新文件file2,大小为6GB,要求存入机器后对外显示依旧为一个完整文 件。
<china,1> <cstor,2>
分布式存储
本地计算Map
16
如何能够实现
“合并”
过程也由多机执行?
17
“洗牌”Shuffle
规定将Key值相同的KV对,通过网络发往同一台机器。
5.1 引例 分布式计算
第一步 每台机器将各自KV对中的Value连接成一个链表 第二步 各台机器可对<Key,ValueList>进行业务处理,称此过程为Reduce。 第三步 将得出的结果再存于DFS。
问题④解答 为每台机器都做磁盘冗余阵列(RAID),购买更稳定的硬件,配置最好的机房、最 稳定的网络。
7
5.1 引例
5.1.1 5.1.2 5.1.3 5.1.4
问题概述 常规解决方案 分布式下的解决方案 小结
Hadoop
上述方案并没有真正解决问题,下面介绍的 分布式方案也是Hadoop的架构思路:
容易看出,无论是Map、Shuffle还是Reduce,甚至是存储结果,在每个阶段都是 并行的,整个过程则构成一个有向无环图(DAG)
19
5.1 引例
cMaster 0 存储主节点
常规解决方案
问题①解答 取两台机器cSlave0和cSlave1,cSlave0存储file0,cSlave1存储file1。 问题②解答 将file2拆成两个大小分别为3GB的文件file2-a和file2-b,将file2-a存入cSlave0、file2-b 存入cSlave1。
5.1 引例
分布式文件系统
Distributed File System,DFS
≈ Hadoop分布式文件系统 Hadoop DFS,HDFS
11
移动计算 比移动数据更划算
——来自Google论文
5.1 引例 分布式计算
cSlave0存储file0 china cstor china
cSlave1存储file1 cstor china cstor
分布式存储
cSlave0处理file0 <china,2> <cstor,1>
cSlave1处理file1 <china,1> <cstor,1>
本地计算
网络
cSlave0处理 汇总至本机数据
<china,2> <china,1>
计算后 得结果
<china,3>
结果存至DFS
cSlave1处理 汇总至本机数据
cSlave0 存储真实数据
cSlave1
cSlaveN
存储真实数据
……
存储真实数据
10
5.1 引例 分布式存储
对内 对外
客户-服务器模式
只要保证store master正常工作,我们很容易随意添加 store slave,硬盘存储空间无限大。
统一存储空间,统一文件接口
整个集群就像是一台机器、一片云,硬盘显示为统一 存储空间,文件接口统一。
常规解决方案
问题③解答 步骤一,将cSlave1上的file1复制一份到cSlave0上,这样cSlave0上同时存有file0和 file1。 步骤二,编写一简单程序,程序里使用HashMap<String, Integer>,顺序读取文件, 判断新读取的单词是否存在于HashMap,存在Integer+1,不存在则HashMap里加入 这个新单词,Integer置为1,记此程序为WordCount。 步骤三,将此程序WordCount放在cSlave0上执行,得出结果。
<cstor,1> <cstor,2>
计算后 得结果
<cstor,3>
结果存至DFS
洗牌
汇总计算
存结果
分布式计算
13
5.1 引例 分布式计算
本地计算 (Map)
洗牌 (Shuffle)
合并再计算 (Reduce)
14
5.1 引例
分布式计算
取新机器cMaster1,采用客户-服务器模式构建由机器cSlave0、cSlave1和 cMaster1组成的分布式计算集群。
CMaster0 计算主节点
处理本机数据
CMaster1 计算主节点
来自百度文库
cSlave0存储file0 cstor cstor china
cSlave0处理file0
<china,2> <cstor,1>
处理本机数据
cSlave1存储file1 cstor china cstor
cSlave1处理file1
cMaster1 统一分配cSlave0~N
计算任务
cSlave0
cSlave1
cSlaveN
计算某一具体数据 计算某一具体数据 …… 计算某一具体数据
15
5.1 引例
分布式计算
cSlave0最好是处理存于本机硬盘上的file0,而不是将file1从cSlave1调过来(通过 网络)再处理file1,这就是所谓的“本地计算”。
5.1 引例 5.2 Hadoop 2.0简述 5.3 Hadoop 2.0部署 5.4 Hadoop 2.0体系架构 5.5 Hadoop 2.0访问接口 5.6 Hadoop 2.0编程接口
人均5TB
5.1 引例
5.1.1 5.1.2 5.1.3 5.1.4
问题概述 常规解决方案 分布式下的解决方案 小结
5.1 引例
分布式存储
对于第一类存储问题,若能将多台机器硬盘以某种方式连接到一起,则问题迎刃 而解。取机器cSlave0,cSlave1和cMaster0,采用客户-服务器模式构建分布式存储 集群,让cMaster0管理cSlave0,cSlave1。
cMaster0 统一管理cSlave0~N
存储空间
第二类问题,计算。
问题③:在问题①下,统计file0和file1这两个文件里每个单词出现的次数。
第三类问题,可靠性。
问题④:假设用于解决上述问题的机器宕机了,问如何保证数据不丢失。
4
5.1 引例
5.1.1 5.1.2 5.1.3 5.1.4
问题概述 常规解决方案 分布式下的解决方案 小结
5.1 引例