cnzz网站建设,成品网站w灬源码999交友,开源之家,长春网站制作公司哪个好目录 一、引例#xff08;一#xff09;问题概述#xff08;二#xff09;常规解决方案#xff08;三#xff09;分布式下的解决方案#xff08;四#xff09;小结 自从云计算的概念被提出#xff0c;不断地有IT厂商推出自己的云计算平台#xff0c;但它们都是商业性… 目录 一、引例一问题概述二常规解决方案三分布式下的解决方案四小结 自从云计算的概念被提出不断地有IT厂商推出自己的云计算平台但它们都是商业性平台对于想要继续研究和发展云计算技术的个人和科研团体来说无法获得更多的了解Hadoop的出现给研究者带来了希望。
一、引例 一问题概述
【例1】 假设现有一些配置完全相同的机器cSlave0~cSlaveNcMaster0cMaster1并且每台机器都有1个双核CPU5GB硬盘。现有两个大小都是2GB的文件file0和file1。
第一类问题存储。
问题①将file0和file1存入两台不同机器但要求对外显示它们存于同一硬盘空间。 问题②不考虑①现有一新文件file2大小为6GB要求存入机器后对外显示依旧为一个完整文件。
第二类问题计算。
问题③在问题①下统计file0和file1这两个文件里每个单词出现的次数。
第三类问题可靠性。
问题④假设用于解决上述问题的机器宕机了问如何保证数据不丢失。
二常规解决方案
问题①解答取两台机器cSlave0和cSlave1cSlave0存储file0cSlave1存储file1。
问题②解答将file2拆成两个大小分别为3GB的文件file2-a和file2-b将file2-a存入cSlave0、file2-b存入cSlave1。 问题③解答 步骤一将cSlave1上的file1复制一份到cSlave0上这样cSlave0上同时存有file0和file1。 步骤二编写一简单程序程序里使用HashMapString, Integer顺序读取文件判断新读取的单词是否存在于HashMap存在Integer1不存在则HashMap里加入这个新单词Integer置为1记此程序为WordCount。 步骤三将此程序WordCount放在cSlave0上执行得出结果。
问题④解答为每台机器都做磁盘冗余阵列RAID购买更稳定的硬件配置最好的机房、最稳定的网络。
三分布式下的解决方案 上述方案并没有真正解决问题下面介绍的分布式方案也是Hadoop的架构思路
1、分布式存储 对于第一类存储问题若能将多台机器硬盘以某种方式连接到一起则问题迎刃而解。取机器cSlave0cSlave1和cMaster0采用客户-服务器模式构建分布式存储集群让cMaster0管理cSlave0cSlave1。 经过上述方式构建的集群对内采用客户-服务器模式只要保证store master正常工作我们很容易随意添加store slave硬盘存储空间无限大。对外统一存储空间统一文件接口整个集群就像是一台机器、一片云硬盘显示为统一存储空间文件接口统一。 称此构建的文件系统为分布式文件系统Distributed File SystemDFSHadoop分布式文件系统Hadoop DFSHDFS的架构思想和上述过程类似。 2、分布式计算 处理过程可分为三步本地计算Map、洗牌Shuffle和合并再计算Reduce。取新机器cMaster1采用客户-服务器模式构建由机器cSlave0、cSlave1和cMaster1组成的分布式计算集群。 cSlave0最好是处理存于本机硬盘上的file0而不是将file1从cSlave1调过来通过网络再处理file1这就是所谓的“本地计算”。 如何能够实现“合并”过程也由多机执行由此引入“洗牌”Shuffle过程即规定将Key值相同的KV对通过网络发往同一台机器。
第一步每台机器将各自KV对中的Value连接成一个链表。第二步各台机器可对Key,ValueList进行业务处理称此过程为Reduce。第三步将得出的结果再存于DFS。 容易看出无论是Map、Shuffle还是Reduce甚至是存储结果在每个阶段都是并行的整个过程则构成一个有向无环图DAG。 3、冗余存储与冗余计算 只要保证存于cSlave0上的数据同时还存在于别的机器上即使cSlave0宕机数据依旧不会丢失。 存储时引入新机器cSlave2和cSlave3将存于cSlave0的file0同样存储于cSlave2存于cSlave1的file1同样存一份于cSlave3。计算时cSlave0~3的计算任务统一由cMaster1指派。cMaster1选中先结束的那台机器的计算结果并停止另一台机器里还在计算的进程。 作用通过冗余存储不仅提高了分布式存储可靠性还提高了分布式计算的可靠性。
四小结
现实中Hadoop的实现机制则更加复杂但其架构的基本思路和本节很类似。分布式存储和分布式计算这两者间并没有关系它们各自都可以独立存在。当MapReduce运行于HDFS上时性能较好。