大家好~今天非常高兴能够我来到这个场合和大家一起分享一下Google在云计算技术方面的一些成绩还有一些思考,我今天演讲的提纲主要涉及到几方面:
一、云计算的规模与极端
二、云计算平台设计挑战
三、Google云计算基础技术
四、Google云计算新技术
我们讲到云计算且不管是什么样的商业要求,回归基本的话,三个要求一是要有数据存储、二是要有计算的能力,三是工作的调度,怎么在几万台机器之间的进行任务的调度及时最后的结果达到额快和最好。
Google在存储方面做了Google文件系统,这个工作是比较早期的,是2000年左右开发,2003年在国际上SOSP上面发表,它的基本理念是我们不介意用非常差的硬件,但是要用可以承受所有软件来管理这些硬件,为了满足这个要求,我们会把所有的数据分三份存在所有的机器上面,同时在比较高级的机器上会存Master,会让Master来管理。最后会和Master交流得到所需要的数据。这个文件系统虽然看上去很简单,但是事实上它是对于传统文件系统的革命,因为在之前比较常用的NSI备份不会做这么多,而这个备份维度可以满足大规模系统的需求。除了存储我们有了进一步的要求,希望存储能够像数据库一样,这就是Google的Big Table,就是一个网站,怎么存在一个Big Table里面,就是我们做一个网站的名字,后面存储相关的内容。所以大家可以看到,如果全世界有100亿个网页的话,这个大表格应该有多大呢,所以在Google的Big Table系统里面主要涉及到两个重大问题,一个是内存管理,因为你是不可能把这个表格放到一个数据中心里面,我们怎么样把几十万台机器的内存用很有效地方式管理起来,这是非常大的技术挑战。但是这个Big Table也是在几年前向全世界计算机界进行了发表,大家有兴趣可以看一下。我们讲了数据的存储以后,下面就是计算,Google传统的做法就是是MapReduce,大家想一想Map就是对每一行进行操作,Reduce就是对最后结果的列进行操作,这个概念不是新概念,已经有二、三十年的历史,但是Google在这方面的贡献就是把它变大,可以让它在很大的数据中心量级上进行运行,同时Google对于硬件的要求很低,所以它需要用软件实行。
在刚才讲到的MapReduce里面我们Google要进行什么样的计算,比如说这是月球的距离、太阳系、银河系等等,最后Google可以做的计算里面,现在可以到达千万亿级的计算。所以,我们如果对于计算做一个比较,一般来讲科学计算是很少、精确度很高,但是数据量很小,大家一步一步往下排可以搜索到非常大的用户,Google现在在全世界支持了10亿以上的用户,它精确度要求并不是非常高,因为有的时候如果一个用户不能被满足的话,用户可以重新申请一次,刚才银联的郝先生和华胜天成的杨总讲的情况不太一样,因为在刚才的情况里面如果你需要金融服务操作的话,可能会对精确度要求更高一点,所以有时候我们做云计算系统设计的时候也要考虑到你所需要提供的服务是什么样子的,根据这个服务可以反过来设计你的系统,有的时候精确度需要高,可靠度需要高,这个问题就不那么严重。对Google来说,精确度、可靠度并不是那么高,但是用户数和每秒钟需要处理的量级是很大的。
下面稍微介绍一下在Google这种做搜索引擎的公司,Google如果做云计算平台涉及的挑战和基础技术。首先,看一下样本平台,一个计算机可以提供多么大的Rack,一个计算中心可以有多少,刚才讲过Google有36个数据中心,这个数据可能不是准确的,但是我觉得可以讲的是Google的数据只要有需要就可以随时用,如果在世界某个地方有用户请求过来,我们就可以非常方便的去调整我们的计算中心。
我们来看一下,如果对计算机的单机来说,它对存储和网络用户的要求反映是怎么样的,随着从单机变成计算机机架的话,对用户请求的能力会成倍的增长,但是对于Latency的要求变化不会太大,计算中心会达到下一个层次的水准,所以我们认为在云计算中主要的能力,尤其是对搜索引擎来说最大的好处还是对用户请求能力成倍的增长。虽然我们有这样的要求,可是在设计方面随着计算机数量的增长,会有非常多的挑战,下面我也想在几方面跟大家分享一下。
首先是能耗,刚才两位嘉宾也在讲,随着世界对IT更多的要求,在过去30多年里面对能源的消耗已经增长了两倍,亚太区是增长的非常快的,有两个原因:一个是经济的增长速度;另外一个是对能源方面的理解,还有一些工作没有达到世界上最好的水准。比如说拿油当量作为一个单位,如果用你的电脑一个小时会需要20克,就是说用电脑一个小时可以做100次query,是非常耗能源。如果你喝一瓶啤酒需要500多克query,可见喝啤酒还是非常耗费query的。电源的使用效率,的确在大多数的云计算数据中心里面使用效率基本上是2.0,其中有50%的能源是消耗在IT正常计算上,另外50%消耗在必需或者无用的工作上,比如说冷却等等。Google经过十年的发展基本上可以做到1.16,就是说其中有86%的能源是用来做和用户query相关的计算,这1.16亿是不是所有的云计算中心都可以做到的,答案是不是。原因是有的时候你要根据自己的应用,比如说像金融类的应用就不应该一位的追求PUE,因为你对用户的可靠性和精确性的要求,远远比搜索引擎要高,所以当我们做系统设计的时候应该把这个考虑进去。另一方面来讲,假如说如果需要做离线的处理,比如说像计费,就可以用比较高的PUE,因为不必再白天用户请求高峰期的时候请求处理,可以放到夜里没有什么用户的时候去做,这样就可以保持比较平均的峰值。
在电源处理方面我们还有很多创新,比如说在Google现在新的数据中心的设计方面,有的时候会考虑把数据中心放在比较冷的地方,像放在欧洲的北部,在做冷却的时候就不需要用冷却水进行,而是可以利用当地的气温让它自然的冷却。比如说在比利时的数据中心就用了这种方式,可是有一年比利时夏天很热,在这种情况下数据中心不能够支持所有的计算,因为机器的温度已经太高了,这时候也需要用云计算的软件,用工作的调度来把比利时数据中心所有的query调到另外一个数据中心区,这是设计架构的考量,我们公司内部在这方面做了很多的优化。
故障恢复,刚才两位演讲人都有提到,因为当数据中心大了以后故障是不可避免的。我给大家举一个数字,比如说任何一台机器SOA是99.9,如果一个计算中心里面有1万台这样的机器,它的意义是什么呢,意义就是至少一年有1000次的计算机故障,折合每一天有3次故障,针对这些故障我们应该怎么办,我们如何用软件的方式、用自动的方式把它处理。其实故障恢复是一个比较传统的计算的话题,所以我们能够做的是在下面几方面:
一是数据的复制,刚才我也稍微提到了。
二是Checkpoint,当你完成一个任务以后,就把之前所有的数据进行备份,如果之后计算机再发生故障的话,可以恢复到前面的Checkpoint,重新进行计算。
另外,对搜索引擎的处理,比如说所有的机器不需要完全的一致,只要有差不多一样的结果就可以了。
最后是新程式设计模型,这个主要和我们的业务相关,因为我们需要对全世界所有的网站进行处理,所有的Query更多的是并行计算,而不是像一些非常复杂的业务逻辑,需要进行串行处理。
最后跟大家分享一些新的技术,在我讲这页以前跟大家探讨一下,公有云和私有云,Google是一个公有云的系统,不做私有云,这个跟我们的业务模式相关。虽然Google可以卖自己的数据存储,可以卖计算能力,甚至我们可以卖DaTa,我们可以知道今年在法国热卖的东西是什么,我们可以知道在海地自然灾害以后当地人最大的需求是什么,我们都可以
知道。这是因为我们业务模式的关系,不太可能跟所有的用户或者各大企业进行分享。因为我们能够做的是什么呢,我们能够做的是一个平台,在这个平台上面所有的互联网的用户,或者各个企业可以把自己的业务模式建立在上面,可以使用Google的后台为他们提供技术的支持。跟Google做一个比较类似的对比是亚马逊,他们愿意卖存储、卖计算,在这方面两家公司的理念也稍有不同,我不是说谁对谁错,只是各自的理念不同,Google的理念是做一个非常坚实的基础架构,在这个架构之上可以为所有的用户和企业提供应用级的云计算支持,而不是直接卖基础架构。
刚才讲到新的技术思考,最新的文件系统叫Colossus,在这里进行下一代集群级文件系统的分布,使用新的数据读写的技术,主要是算法方面的改进,可以进行数据移动的预测,进行优化和移动。所以针对这个文件系统我们就有能力服务下一代的互联网,因为互联网在过去十年里面数据的量级有了成倍和几十倍的增长。
另外,随着云计算中心的开发,随着我们拥有越来越多的数据,这些数据到底能够给我们提供什么样的智慧,这也是Google思考很多的问题,有的时候一个非常精确非常先进的算法,并不一定能给人们带来非常好的结果。原因是它可能在小一点的数量级的情况下会表现的很好,但是随着数量的增长,有的时候看上去很笨很简单的算法,反而会得到很不错的结果。举个例子,这五条线是五个算法,小数据量是黄线指示的算法,随着数据量的增长,大家可以看到星星的部分迅速的会超越其他所有的算法。
比如说Google的翻译,当我们有全世界1/10的互联网数据量的时候,翻译的准确度大概在52—54%之间,当你有了全世界50%的数据量的时候,准确率就可以超过60%,这个自动算法可以帮助全世界的人用自动的翻译机制做前人做不了的工作。
Google的趋势,比如说无论在中国还是在美国,每年大家要想知道这个社会上发生了什么事情,健康领域发生了什么事情,可能需要等卫生部每个季度的季度报告告诉大家过去三个月在全国范围内什么地方发生了什么病,可是有了搜索引擎之后就不用那么麻烦了,比如说今天互联网上很多人在搜流感,第二天搜索引擎会看到昨天搜索流感的Query数据量有了快速的增长,实际上这是给我们一个暗示,说明流感这种病最近准备爆发。所以,我们看到这张图,这2009到2010年间搜索流感的词在美国的分布,很明显在2009年10、11月间达到高峰,说明在那个时候美国流感很流行,而美国卫生部什么时候可以告诉大家这个信息,可能需要在圣诞节之后才可以。所以大家比较关心自己的健康,可以看一下Google的趋势,看一下是不是北京正在爆发流感。
我今天的演讲到这里就结束,最后给大家总结一下Google的思考,Google是公有云技术背景,我们希望建立全世界最大的互联网云计算平台,这个平台不光是可以给我们的搜索引擎提供服务,同时希望在上面做一个应用引擎,这个应用引擎可以让用户、企业发挥自己的创造性,在很大的互联网平台上做一些创造性,或者为你的客户或者世界上其他的用户提供更好的服务应用。
下面资料为赠送的地产广告语不需要的下载后可以编辑删除就
可以,谢谢选择,
祝您工作顺利,生活愉快~
地产广告语
1、让世界向往的故乡
2、某沿河楼盘:生活,在水岸停泊
3、一江春水一种人生
4、某钱塘江边楼盘:面对潮流 经典依旧 5、海景房:站在家里,海是美景;站在海上,家是美景 6、以山水为卖点的楼盘:山水是真正的不动产 7、某城区的山腰上的楼盘:凌驾尊贵 俯瞰繁华 8、某地势较高的楼盘:高人,只住有高度的房子 9、某学区房:不要让孩子输在起跑线上
10、尾盘:最后,最珍贵
11、回家就是度假的生活
12、生命就该浪费在美好的事情上
我们造城——
2、我的工作就是享受生活——
3、 我家的客厅,就是我的生活名片—— 4、在自己的阳台 看上海的未来—— 5、公园不在我家里 我家住在公园里—— 6、这里的花园没有四季——
7、***,装饰城市的风景——
8、***,我把天空搬回家——
9、房在林中,人在树下——
10、生活,就是居住在别人的爱慕里—— 11、到〖星河湾〗看看好房子的标准—— 12、好生活在〖珠江〗——
13、爱家的男人住〖百合〗
城市岸泊: 城市的岸泊,生活的小镇 生活之美不缺少,在于发现
情趣不在于奢华,在于精彩
生活有了美感才值得思考……
玫瑰庄园: 山地生态,健康人生
卓越地段,超大社区
一种完整且完善的环境,像原生一样和谐 原生景象 自然天成
人本理念 精品建筑
知名物业 智能安防
诚信为本 实力铸造
比华利山庄:海岸生活——引领世界的生活方式 海岸生活——22公里的奢华
海岸生活——高尚人生的序曲
海岸生活——人与自然的融合
苹果二十二院街:人文 自然 现代 铺的蔓伸
荣和山水美地:让世界向往的故乡 香港时代: 时代精英 开拓未来
领衔建筑,彰显尊贵
绿地崴廉公寓:金桥 40万平方米德国音乐艺术生活
汇都国际: 昆明都心,城市引擎
财富之都 风情之都 梦幻之都 文化之都 商贸之都 西部首座巨型商业之城
颠峰商圈的原动力,缔造西部财富新领地 新江湾城: 绿色生态港 国际智慧城 新江湾城,一座承载上海新梦想的城区 上海城投,全心以赴
建设知识型,生态型花园城区
风和日丽: 入住准现楼,升值在望 湾区大户,空中花园
大格局下的西海岸
市中心: 市中心 少数人的专属
颠峰珍贵市中心的稀世名宅
正中心 城市颠峰领地
颠峰 勾勒稀世名宅
繁华 不落幕的居家风景
地利 皇者尽得先机
稀世经典180席
阳光国际公寓:阳光金桥来自纽约的生活蓝本 钟宅湾: 海峡西岸生态人居 休闲商务区 汇聚国际财富与人居梦想的绝版宝地 二十一世纪是城市的世纪,二十一世纪也是海洋的世纪
谁控制了海洋,谁就控制了一切
站在蓝色海岸的前沿,开启一个新的地产时代 东南门户 海湾之心
海峡西岸生态人居 休闲商务区
让所有财富的目光聚集钟宅湾,这里每一天都在创造历史
上海A座(科维大厦):创富人生的黄金眼 掘金上海~创富人生~
远东大厦: 花小公司的钱,做大公司的事 未来城: 无可挑战的优势 无可限量的空间 绿地集团: 居住问题的答疑者,舒适生活的提案人 茶马驿栈: 精明置业时机 享受附加值 财富最大化 雪山下的世外桃源 茶马古道上千年清泉之乡 金地格林春岸:城市精英的梦想家园 繁华与宁静共存,阔绰身份不显自露 建筑覆盖率仅20%,令视野更为广阔 占据最佳景观位置,用高度提炼生活 完美演绎自然精髓,谱写古城新篇章 创新房型推陈出新,阔气空间彰显不凡 365天的贴身护卫,阔度管理以您为尊 金地格林小城:心没有界限,身没有界限 春光永驻童话之城
我的家,我的天下
东渡国际: 梦想建筑,建筑梦想
齐鲁置业: 传承经典,创新生活
比天空更宽广的是人的思想
创新 远见 生活
嘉德 中央公园:一群绝不妥协的居住理想家 完成一座改变你对住宅想象的超越作品
极至的资源整合 丰富住家的生活内涵 苛求的建造细节 提升住家的生活品质 地段优势,就是永恒价值优势
设计优势,就是生活质量优势
景观优势,就是生命健康优势
管理优势,就是生活品味优势
空中华尔兹: 自然而来的气质,华尔兹的生活等级 享受,没有不可逾越的极限
所谓完美的习惯,是舒适空间的心情定格~ 临江花园: 经典生活品质
风景中的舞台
美林别墅: 源欧美经典 纯自然空间 住原味别墅 赏园林艺术
淡雅 怡景 温馨 自然
钱江时代: 核心时代,核心生活
核心位置 创意空间 优雅规划 人文景观 财富未来 城市精神,自然风景,渗透私人空间 泰达时尚广场: 是球场更是剧场
城市经济活力源
时尚天津 水舞中国
未来都会休闲之居
创意时尚 天天嘉年华
健康快乐新境界
商旅新天地 缔造好生意
城市运营战略联盟,参与协作,多方共赢 华龙碧水豪园: 浪漫一次,相守一生 东方莱茵: 品鉴品位 宜家宜人
建筑一道贵族色彩
品鉴一方美学空间
品位一份怡然自得
荡漾一股生命活力
坐拥一处旺地静宅
体会一种尊崇感受
常青花园(新康苑):新康苑 生活感受凌驾常规 大非凡生活领域 成功人士的生活礼遇 拥有与自己身份地位相等的花园社区 在属于自己的宴会餐厅里会宾邀朋
只与自己品味爱好相同的成功人士为邻 孩子的起步就与优越同步
酒店式物管礼遇
拥有[一屋两公园 前后是氧吧]的美极环境 水木清华: 住在你心里
福星惠誉(金色华府):金色华府,市府街 才智名门——释放生命的金色魅力
真正了解一个人,要看他的朋友,看他的对手。 真正了解一种生活,也当如此。
核心地段(区位是一面镜子,照见家的质素) 隐逸空间(环境是一面镜子,照见家的质素) 超大规模(点亮与过往不同的“大”生活) 成熟配套(周边一切是镜子,照见家的质素)
精品建筑(外揽天下,内宜室家)
均好户型(每天每秒都被释放到四壁之外) 大唐新都: 原创生活,非常空间
住宅不是炫耀的标签,生活是用来享受的。 人信.千年美丽: 森庭画意.千年美丽 宁静是一种内在的力量
生活是与自然的恋爱
在自然中体验自由的生存
建筑让人迷恋的核心是思想
华智.翡翠星空: 创意生活由此进
时代美博城: 繁华领地 时尚生活
浪漫无极限
阳光海岸: 美景与生活的邂逅
带着些许闲散情绪,安享私藏一片湖的幸福 梦幻湖畔 温柔横亘在回归前方 这是你的见.心的家 景江华庭: 静享都市繁华 新锐生活核心 海虹.景: 城市在变 世界观也要变 海虹.景 国际社区
一个改变你世界观的城市文化住宅
海虹.景 区位世界观
一块好地 不仅要放到空间中 更要放到时间中去评价 海虹.景 美景世界观
先成为园林鉴赏家才能鉴赏城市
海虹.景 享受世界观
放手生活是享受的开始
海虹.景 生活世界观
洞悉时尚潮流才能洞悉生活的变化
海虹.景 空间世界观
空间随意识而变 空间是流动变化的 碧水晴天: 生活就是……寻开心
驾奴.桥的前途 路的前程 城市的前景 守望.江的神奇 滩的神话 岸边的神韵 品尝.园的风景 家的风采 眼前的风情 沐浴.屋的明亮 窗的明净 心底的明朗 闽东电力集团.楚都地产:璀璨,用诚信打造 辉煌,用实力说话
领跑,用行动证明
昆明走廊: 昆明走廊,一场与众不同的城市诡计游戏,全情体验行走的变幻情趣.
2004.场景.商业地产
西南商圈.重获新生,王者复活
2004.剧情.昆明走廊
昆明走廊的实体不是一个建筑,而是一个场所。 2004.主角.城市FI客
概念商街,体验生活进行中
2004.精彩.正式开始
乐得家.金瀚家园: 水边的香格里拉 生活的真谛源于自然,
自然的奥意在于和谐,
和谐的精髓表达完美。
江畔语林: 距璀璨不远,离自然更近 在这里,学习过悠然人生
非凡礼遇,成就居者高人一等的气质 金地香蜜山: 山在这里,我在这里 城市山居生活再升级
白描香蜜山
山林生活的升级演绎
真正的健康住宅
长在山上的房子
城市中的山地建筑
坚持 简约的后现代美学
原生态私家山野公园
四季分明的山中岁月
健康、趣味、质朴、自然是最好的设计师 风、光、水、石、云五大庭院艺术 空间是用来收藏自然的
山中的有氧运动
网球也是一种生活方式
健康成为一种习惯
山是一件运动装备
上海五角世贸商城: 百舸争流,谁能竞风流 卓越来自您抢先一步~乘天时,顺势而起。 成功来自您抢占高位~据地利,如虎添翼 理想来自您精心创造~通人知,倾情打造。 维多利亚公寓: 城南三环之内/最后,最珍贵 精粹城南里的优裕生活
花园里的洋楼,演绎英伦贵派风格 国际与本土顶尖建筑团体
全球景观设计权威/美国易道,全景营造 让每扇窗,向着风景深呼吸
金色嘉苑: 水光山色中的幸福家园 有保证的幸福生活
上风上水,幸福生活版图
尽善尽美配套,演绎幸福生活
365天美景生活,幸福生活时时刻刻 特别的爱献给特别的你
找到都市的幸福时光
嘉德现代城: 豪华尊贵的盛会 名流云集的家园 景江苑: 开启全景生活 展现全新人生
恒海国际高尔夫别墅:在这里,掀开淀山湖,恒海计划历史一页
世纪金融大厦: 璀璨闪烁
冉冉升起 我不能视而不见
清怡花苑: 风生,水起,潮涌
观赏,无边境
天境.山因势而动
山青,塔长,钟鸣
艺境.艺因琢而精
心境.心因静而远
心静,致远,淡泊,明智
筑境.筑因妙而传
创造,无止境
上品.巨洋豪园: 陆家嘴,顶极地标,至上口味 上品 稀缺,升值,唯一
新海派主义建筑集群
无限阳光 双景生态 自然居停
舒适源于对居住尺度的把握
星星港湾: 星星港湾,看见非一般的梦想 星星港湾,大学城后花园
重组,文化浓郁之美
东部生活的坐标
星星港湾的星空下,微笑的你,发现新生活已经来临
居住,是气质的一种表达
BLOCK,围合式空间,标识居住者的领域感和归属感
核心区域,处处折射品质生活
生活美学,一次满足你的梦想
一个正在实现中的梦想
天寓: 抛开一切繁文缛节,一切约定俗成,还原自然,真实的居住理想。
设计改变生活
设计思想——简洁、自由、大气
建筑——凝固的音乐
景观——回归自然
生命的真谛
品质生活——上帝在细节中
室内空间
简 历
姓 名: 简历模板 http:// 性 别: 男
出生日期: 1989年2月
年 龄: 37岁
户口所在地:上海
政治面貌: 党员
毕业生院校:
专 业:
地 址:
电 话:
E-mail:
___________________________________________________________
1983/08--1988/06 华东理工大学 生产过程自动化 学士
___________________________________________________________
这里展示自己有什么的特长及能力
___________________________________________________________
《课程名称(只写一些核心的)》:简短介绍
《课程名称》:简短介绍
___________________________________________________________
2002/06--2002/10 某培训机构 计算机系统和维护 上海市劳动局颁发的初级证书
1998/06--1998/08 某建筑工程学校 建筑电气及定额预算 上海建筑工程学校颁发
___________________________________________________________
2011年5月 —— 现在 某(上海)有限公司 XX职位
【公司简单描述】
属外资制造加工企业,职工1000人,年产值6000万美金以上。
主要产品有:五金制品、设备制造、零部件加工、绕管器
【工作职责】
【工作业绩】
___________________________________________________________
英 语:熟练
英语等级:大学英语考试四级
___________________________________________________________
Windows NT\/2000\/XP 36个月经验 水平:精通
LAN 36个月经验 水平:熟练
Office 84个月经验 水平:精通
___________________________________________________________
这里写自我评价的内容 可以访问 http://
___________________________________________________
系里的一等奖学金 获得时间: 年 全系XXX人只有XX人取得。
云计算监测平台
(1)云计算网络监测平台研究内容
云计算是一种新兴的商业计算模型,它将计算任务分布在大量计算机构成的资源池上,使各种应用系统能够根据需要获取计算力、存储空间和各种软件服务。服务可用性保障技术是云进算平台所面临最大技术挑战之一,作为服务可用性保障的资源性能和负载监测则是其中一个重要的研究点。
面向云计算平台的异构分布计算环境,提出了一种自适应的资源信息和负载监控方法。 自适应的负载监控方法将周期性的拉模式和事件驱动的推模式结合起来,能够根据异构分布计算系统运行环境和系统资源负载的变化,适应性地发布获取系统的负载信息。实验表明,自适应的负载监控方法的系统监控效率较普通的负载监控方法有了明显提高,具有较好的可扩展性。
本项目设计开发的云计算网络监测平台主要研究以下内容。
A. 对分布系统的资源信息和负载检测模式进行了系统的分析,将其划分为周期性推模式、周期性拉模式、事件驱动的推模式和事件驱动的拉模式四类,并对其性能和使用环境进行分析。
B. 定义资源信息和负载监控的一致性指标coh ,并通过实验统计的方法推断系统监控的合理周期。
C. 研究将周期性拉和事件驱动推模式相结合的自适应的系统资源和负载监控方法,并对原型系统RLMonitor 进行实验测试。
(1)云计算网络监测平台特点
云计算网络监测平台即是一个面向集群计算系统的完整的分布资源和负载监测系统,又是一个面向异构网络环境下面向个人工作站的计算资源和负载的监测系统。它能够对搜集的信息进行集中管理,通过UDP 多播或者TCP 连接发布资源和负载信息。整个平台采用资源和负载监测的分布式框架,其目标是对一系列计算资源性能的动态变化做出短期预报。其监测的主要参数包括新进程的CPU 可用比例、TCP 的连接时间、端到端的网络延迟以及端到端的网络带宽等。该平台将周期性地对被监测节点的资源和负载状况进行采样,并做出短期预报。其工作原理是首先通过所谓的性能“传感器”收集系统的各种负载信息,然后对收集的信息进行数学分析从而做出预报。DRMonitort~3是一个。
被监测计算机的性能和负载信息从而支持应用实现资源监测和
负载共享策略。另外DRMonitor 允许用户通过—组API 使得应用
可以周期性地获得系统资源和负载状况的更新消息。Carnegie
Mellon 大学开发的DSMon 系统以服务的形式搜集分布计算系统
中各节点的资源状况和负载信息,然后将这些信息分发给系统中
的其他节点,DSMon 的重点是为分布式容错提供支持。
3 系统资源信息和负载状况监测模式分析
根据交互过程中启动策略的不同,可将分布计算系统的资
源性能和负载监测分为Push 和Pull 两种模式 。
Push 模式指由被监测节点主动向系统资源性能和负载监
测构件汇报自己的资源性能和负载信息。其工作原理如图1
(a)所示,各被监测节点的Node 构件主动向RLMonitor 报告其
资源和负载信鼠。Pull 模式指由系统的负载检测构件主动向被
监测节点查询其资源性能和负载信息。其工作原理如图1(b)
所示,RLMonitor 构件主动向各被监测节点的索取其资源和负
载信息。
No 如 No
(a)Push模式 (b)Pull模式
图1 负载和资源监控的两种主流模式
根据导致系统资源性能和负载信息交互过程的原因可以
将负载监测分为周期性和事件驱动两种类型。周期性方式是指
被监测节点定期将其资源性能和负载信息“推”给系统监测构
件或者由系统监测构件周期性地从其他监测节点“拉”监测数
据。而事件驱动方式只有在某些特定事件发生后被监测节点才
将其监测信息“推”给系统监测构件或由系统监测构件主动从
各被监测节点“拉”监测信息。Push 模式指由被监测节点主动
向系统资源性能和负载监测构件汇报自己的资源性能和负载
信息。其工作原理如图1(a)所示,各被监测节点的Node 构件
主动向RLMonitor 报告其资源和负载信息。Pull 模式指由系统
的负载检测构件主动向被监测节点查询其资源性能和负载信
息。其工作原理如图1(b)所示,RLMonitor 构件主动向各被监
测节点的Node 索取其资源和负载信息。
将这两类模式进行组合,则负载监控可以分为如表1所示
的四类。其中:一致性是指基于该模式进行负载监测时获取的
信息和系统实际的资源性能和负载状况的一致程度。适应性指
当被监测节点的资源性能或负载状况发生变化时,该模式能否
及时地进行反映。通信开销是指完成一次监测信息交互所需要
的_______消息数目。
表1 负载监控的四种组合模式
文献[4—5,7]采用了周期性的“拉”模式,而文献『61采用了
基于事件驱动的“推”模式来搜集系统的资源信息和负载状态。
4 自适应资源信息和负载监测
4.1 模型
自适应资源信息和负载监测结构如图5所示:用于监测系
统节点状态的Node 构件和系统负载监控服务RLMonitor 。Node
构件在资源性能和负载监测域中的每个节点均需部署,负责周
期性地对被监测节点的资源性能和负载状态进行采样和平滑
处理,然后将其发送给RLMonitor 构件。RLMonitor 构件只需在
资源性能和负载监测域的服务器上进行部署,负责从Node 构件
获取、存储和分发资源性能和负载信息。
(1)采样器(Sampler):周期性地对Node 所驻留节点的资
源性能和负载信息进行采样。
(2)通告器(Notifier):被RLMonitor 用来将所收集的系统
资源性能和负载信息通告给系统中的其他构件,如负载均衡
器等。
(3)激发器(Excitor):负责驱动RLMonitor 或者Node 进行
动作,相当于其决策机构。对RLMonitor 而言,决定是否需要从
各Node “拉”采样信息以及是否需要将已经收集的信息通告给
其他构件;对Node 而言,需要决策是否要将更新的采样信息
“推”给RLMonitor 以及是否需要进行采样动作。
(4)Push构件:Node 用来主动将采样信息“推”给RLMoni —
tor 的通信接口。
(5)Pull构件:RLMonitor 用来从各Node 构件“拉”采样信
息的通信接口。
(6)API:是由RLMonitor 提供的一个轻量级的库,将RT 广
Monitor 的功能进行了封装。
霞
图2 自适应资源信息和负载监测模型和部署
4.2 自适应监测方法
通过对表1四类监测模式从一致性、适应性、复杂性以及
实现的难易程度等几个方面进行分析,发现“推”和“拉”方式以
及周期性监测模式和基于事件驱动的监测模式之间具有良好
的互补性。基于以上分析,提出了一种自适应系统资源性能和
负载监测机制。RLMonitor 周期性地从系统各被监测节点的
Node “拉”其资源性能和负载状态信息,见算法1。Node 构件则
在其资源性能和负载变化超过了一定的阈值时主动将其资源
性能和负载状态信息“推”给RLMonitor ,见算法2。
算法1 RLMonitor的周期性Pull 算法
procedure PPULLRLINFO
for all node∈ Ⅳ0de do
if the node’ pull period has reached then
Nmify the node to report its information
5: Reset the n0de’s timer
.
...
\ 一 /
16 2009,45(29) Computer Engineering and Applications计算机工程与应用 end if
end for
end procedure
算法1中RLMonitor 周期性通知各节点汇报其资源性能和
负载状况信息时,采用Ice 目的基于UDP 的单向方法调用实现。其
原因是该方法会被周期性调用,只要不发生连续性的通信故障
就不会影响信息采集的有效性,而在局域网络发生连续性的通
信故障概率较低;即使发生了连续『生的通信故障,但只要节点的
资源性能和负载状况发生明显改变,该节点即会通过可靠的双
向调用对其信息进行刷新;可以降低系统开销,提高系统效率。
算法2中所选择的事件是节点最新的平滑负载向量和前
一个平滑负载向量之差的长度超过某一设定的阈值。通过选择 不同的阈值可以对该算法进行调节。所选的阈值越大,则对节 点资源性能和负载的变化越不敏感,算法即退化成周期性的 “拉”算法;所选的阈值越小,则对节点的资源性能和负载变化 越敏感,算法即退化为基于事件的“推”算法。
算法2 Node基于事件驱动的Phsh 算法
procedure EPUSHRLINFO
if I r l≥ thresh0ld then
Report to RLM onitor
Reset the node’S timer in RLMonitor
5:end if
end procedure
RLMonitor 和Node 都是以ICE[9- q对象的形式实现的。另
外在RLMonitor 部署了一个分布回调对象Refresh ,所有的Node 对象均通过Refresh 对象来报告其资源性能和负载信息。图3 (a)和图3(b)展示了这三个分布对象在P —Pull 和E —Push 两种 情况下的交互关系。
[
Register me in
RLM onitor
Remember the RefreshI’s
:Object Reference
,n
Please refresrh
. uf !
Refresh my res0ur℃eI and
: loading informati n
(a)周期性的“拉”模式
1 a Node 1 l RLMonitor I
jR 黜U Ⅵ o一nito r n Ij
R menlber the Refres ’s
Object Reference:
e change。f loadin;OVerrun thresh。l4 value]
Refresh my resource
.
',and loading info
, ,
r0
I
i 。“
l /
(b)事件驱动的“推”模式
图3 RLMonitor、Node 和Refresh 的交互关系
5 实验与结果分析
5.1 实验环境
5.1.1 实验说明
以一台Linux 服务器为实验对象,在服务器上部署Node 构 件,每隔50毫秒对其CPU 负载进行一次采样,并将该采样结 果近似看作CPU 的实际负载变化曲线。同时,系统RLMonitor 构件按照系统设定的采样周期从服务器的CPU 构件“拉”负载 信息。系统设定的采样周期从200毫秒开始,以200毫秒为步 长,直至10秒。每次实验持续1小时,共进行了6次实验。实验 选用的服务器的配臵如表2。
表2 监测周期实验中服务器的配臵
5.1.2 一致性度量指标
假设CPU 的负载的实际变化函数为Cr(f)。另系统设定采
样周期的采样结果形成一条阶梯曲线,两个采样点之间的值取 为前一个采样点的值,并将形成该曲线的函数记作c (t)。定义 在[£ ,t2]时段内采样一致性指标为:
在实验中,每隔50毫秒对这两条曲线分别取值并记作c r
和c :,并用这些取值的一致性 来代替c 。h 。故可将上式简化为:
:掣 , (2)
5.2 实验结果和分析
5.2.1 监测周期一致性实验
监控周期是资源性能和负载监测决定其一致性的最主要
的因素。就所掌握的大部分文献均未对监测周期进行分析。 DRMonitor[~的监测周期设定为1秒,DSMonm 中也将监测周期 设定为1秒,但均未对其合理性进行分析。一般而言,监测周 期越短则一致性越高,监测周期越长则一致性越低。通过实验 和统计来确定负载监测周期的合理范围。共进行了六次实验, 每次实验的监测周期从200毫秒开始,以200毫秒为步长,直 至10秒。试验结果显示在图4,其中横轴为采样周期,纵轴为 六次实验的一致性的平均值。从图4可得出:
32
30
28
26
专24
22
20
18
l6
CPU 负载的监测周期/s
图4 监控周期与一致性的关系
(1)采样周期越短,和实际负载的一致性程度越高。这与常 识一致。
(2)在(0,1.8]秒这段区间,采样和CPU 实际负载的一致性 随着采样周期的加长迅速降低。
(3)从1.8秒之后,采样和CPU 实际负载的一致性呈震荡 降低,但降低的幅度逐渐递减。
(4)在[1.0,1.2】秒这段区间,采样和CPU 实际负载的一致
杨 刚,随玉磊:面向云计算平台自适应资源监测方法 2009,45(29) 17
性无明显变化。
综合权衡开销和一致性,系统资源性能和负载监测周期的 合理区间应该为『O .8,2]秒,1秒应该是较佳的选择。
5.2.2 自适应检测方法实验
在5.1.1节所描述的实验环境对自适应负载监测算法和周 期性负载监测算法进行了对比测试,结果见图5。
监测周期/s
图5 自适应监测方法与周期性检测方法性能比较
船表示该次测试事件驱动算法所选择的事件过滤阈值。可
以发现,在tv=40和tv=50条件下,自适应监测方法表现出了较 好的适应性,c 指标的差异小于15%,且随着监测周期的延长呈 现出递减特性。
从测试结果可以发现,自适应监测方法的c 约为周期性监
测方法c 值的一半,明显好于周期性监测方法。并且随着检测周 期的延长,周期性监测方法的c 值呈线性增加趋势,而自适应监 测方法的c 值成饱和趋势。测试中,将tv 的取值从40调整到50, 表明自适应监测方法对监测周期和系统的状态变化具有较好 的适应性。
6 结束语
通过实验和统计分析确定了负载监测周期的合理区问,在
分析Push 和Pull 两种负载信息发布方式以及基于事件与周期
云计算平台搭建
CentOS+xen+Eucalyptus 云计算平台搭建
当今,云计算应用日趋流行,各大型企业、组织纷纷加入云计算的热潮。作为研发组织,以虚拟化技术为 基石的云计算技术为我们的组织管理和研发提供了便利。
Eucalyptus 是一款基本开源的云计算应用平台,现已集成到 Ubuntu 的企业版。由于笔者搭建 centos 系统较为便利,所以本文在 centos 的平台上以 xen 为基础搭建 eucalyputs 系统。
由于起初笔者对于 linux 系统管理基本处于 “ 文盲 ” 阶段,所以在最初搭建的过程中走了很多弯路,付出了 很多努力, 但同时笔者也在这个艰辛的过程中学到很多, 从 “ 文盲 ” -->
在 Eucalyptus 的社区网站中有对 centos 搭建 Eucalyptus 的详细讲述。 <点击查看>
作为测试,笔者以三台服务器节点来完成平台搭建。其中将 CLC,CC 安装在一台前端节点 笔者的网络配置情况如下: (1)三台节点通过 eth1局域网互连 (2)网段:10.10.0.0, netmask:255.255.0.0 (3) (4) (5) 下面是笔者安装的详细步骤 Front-end //安装 ntp 用来实现 front-end 和 nod yum install -y ntp ntpdate pool.ntp.org//front-end需要 java , dhcp 服务器二进制代码 yum install -y java-1.6.0-openjdk ant ant-nodeps dhcp bridge-utils perl-Convert-ASN1.noarch scsi-target-utils httpd //配置防火墙, port 8443,8773,8774必须打开,或者直接关闭防火墙 run system-config-securitylevel-tui Select Security Level:Disable Select OK; //安装 Eucalyptus ,关于源码安装请参看 Eucalyptus 社区的文档 //创建 /etc/yum.repos.d/euca.repo文件,文件内容如下: [euca] name=Eucalyptus baseurl=http://www.eucalyptussoftware.com/downloads/repo/eucalyptus/$VERSION/yum/ centos/ enabled=1 其中 $VERSION文版本号,比如笔者所安装的版本为 2.0.1,则将该字段替换为 2.0.1 安装命令: yum install eucalyptus-cloud.$ARCH eucalyptus-cc.$ARCH eucalyptus-walrus.$ARCH eucalyptus-sc.$ARCH --nogpgcheck 其中 $ARCH为主机的体系结构,比如笔者的位 x86_64.(通常为 i386或 x86_64) //配置 /etc/eucalyp/eucalyputs.conf文件,这里是笔者出错最多的地方,后面将给出如何配置的详细 说明,请读者阅读后根据自己的实际情况配置,一下只是笔者配置的一个实例 HYPERVISOR= VNET_PUBINTERFACE= VNET_PRIVINTERFACE= VNET_MODE= VNET_SUBNET= VNET_NETMASK= VNET_BROADCAST= VNET_ROUTER= VNET_DNS= VNET_MACMAP= Node //安装 ntp 用来实现 front-end 和 nod yum install -y ntp ntpdate pool.ntp.org yum install -y java-1.6.0-openjdk ant ant-nodeps dhcp bridge-utils perl-Convert-ASN1.noarch scsi-target-utils httpd //Node需要安装 xen 并且配置 xen 允许通过 HTTP 从 localhost 控制 hypervisor yum install -y xen* yum install -y kernel-xen* sed --in-place 's/#(xend-http-server no)/(xend-http-server yes)/' /etc/xen/xend-config.sxp sed --in-place 's/#(xend-address localhost)/(xend-address localhost)/' /etc/xen/xend-config.sxp 修改 /etc/boot/grub.conf中的启动项,是其启动 xen ,重启节点。 //配置防火墙, port 8775必须打开,或者直接关闭防火墙 run system-config-securitylevel-tui Select Security Level:Disable Select OK; /安装 Eucalyptus ,关于源码安装请参看 Eucalyptus 社区的文档 //创建 /etc/yum.repos.d/euca.repo文件,文件内容如下: [euca] name=Eucalyptus baseurl=http://www.eucalyptussoftware.com/downloads/repo/eucalyptus/$VERSION/yum/ centos/ enabled=1 其中 $VERSION文版本号,比如笔者所安装的版本为 2.0.1,则将该字段替换为 2.0.1 安装命令: yum install eucalyptus-nc.$ARCH --nogpgcheck //Post-Install Steps 在每台 node 节点上,查看 /etc/libvirt/libvirtd.conf文件,确认一下行未被注释: #unix_sock_group = #unix_sock_ro_perms = #unix_sock_rw_perms = //确保 libvirt 运行正常并可与 hypervisor 正常通信,在 Node 节点运行如下命令: $:virsh list 如果上述命令的输出包括 Domain-0,则配置正确。 配置 /etc/eucalyptus/eucalyptus.conf文件 HYPERVISOR= VNET_PUBINTERFACE= VNET_PRIVINTERFACE= VNET_BRIDGE= VNET_MODE= 启动 Eucalyptus //front-end /etc/init.d/eucalyptus-cloud start /etc/init.d/eucalyputs-cc start //Node /etc/init.d/eucalyputs-nc start注册 Eucalyputs 组件 //front-end euca_conf --register-walrus euca_conf --register-cluster euca_conf --register-sc //在 front-end 上注册 nodes euca_conf --register-nodes 如笔者:euca_conf --register-nodes 10.10.x.10 10.10.x.11 初始配置 登陆管理主页 http://front-end-ip:8443 默认用户名密码为 admin 登陆后修改密码 设置管理员邮箱 确认 CC 的 IP 地址 在 Credentials 主页点击 Download Credentials按钮下载 创建目录存储下载的文件并解压 mkdir $HOME/.euca unzip euca2-admin-x509.zip -d $HOME/.euca . $HOME/.euca/eucarc //注册 eucarc 环境 安装 Euca2ools 创建 /etc/yum.repos.d/euca.repo文件 [euca2ools] name=Euca2ools baseurl=http://www.eucalyptussoftware.com/downloads/repo/euca2ools/$VERSION/yum/centos/ enabled=1其中 $VERSION为版本号,如 1.2 yum install euca2ools.$ARCH --nogpgcheck 上传镜像文件 //增加镜像 <查看可下载镜像> euca-bundle-image -i euca-upload-bundle -b euca-register euca-upload-bundle -b euca-register euca-register euca-bundle-image -i euca-bundle-image -i euca-Ubuntu-9.04-x86_64/kvm-kernel/vmlinuz-2.6.28-11-generic --kernel true euca-upload-bundle -b Ubuntu-kernel-bucket -m /tmp/vmlinuz-2.6.28-11-generic.manifest.xml euca-register Ubuntu-kernel-bucket/vmlinuz-2.6.28-11-generic.manifest.xml (set the printed eki to $EKI) euca-bundle-image -i euca-Ubuntu-9.04-x86_64/kvm-kernel/initrd.img-2.6.28-11-generic --ramdisk true euca-upload-bundle -b Ubuntu-ramdisk-bucket -m /tmp/initrd.img-2.6.28-11-generic.manifest.xml euca-register Ubuntu-ramdisk-bucket/initrd.img-2.6.28-11-generic.manifest.xml (set the printed eri to $ERI) euca-bundle-image -i euca-Ubuntu-9.04-x86_64/ubuntu.9-04.x86-64.img --kernel $EKI --ramdisk $ERI euca-upload-bundle -b Ubuntu-image-bucket -m /tmp/ubuntu.9-04.x86-64.img.manifest.xml euca-register Ubuntu-image-bucket/ubuntu.9-04.x86-64.img.manifest.xml创建自己的密钥文件 euca-add-keypair mykey | tee mykey.privchmod 0600 mykey.priv通过 euca-describe-images 查看有哪些镜像 运行实例 euca-run-instances -k mykey INSTANCE i-3BC30777 emi-1C88159B 10.10.103.33 10.10.103.33 running key 0 m1.small 2011-02-18T12:07:14.623Z mycluster eki-8DAF16EB eri-882616CD RESERV A TION r-3C9007FC admin default INSTANCE i-3BDD0719 emi-1C88159B 10.10.103.32 10.10.103.32 running key 0 m1.small 2011-02-18T08:59:33.67Z mycluster eki-8DAF16EB eri-882616CD//登录 ssh -k mykey root@10.10.103.32 注意这里登录时提示需要输入 passphase , 这里需要自己修改一下, 改变 RSA passphase:ssh-keygen -fid_rsa -p 至此我们登上 instances 开始我们的云端之旅了 FAQ 问:front-end 中 VNET_PUBINTERFACE= VNET_PRIVINTERFACE= 答:VNET_PUBINTERFACE设置成 front-end 与外网连接的网卡接口 VNET_PRIVINTERFACE设置成与 Node 节点互连的网卡接口 问 front-end 中如何配置 Mode 答:eucalyputs 中有四种可选模式,这里笔者选择了 static 模式,其他模式可以参考官方文档。下面对 static 模式配置进行简单描述 VNET_MODE= VNET_SUBNET= VNET_NETMASK= VNET_BROADCAST= VNET_ROUTER= VNET_DNS= VNET_MACMAP= 注意在上面的设置中,网段一定要设置成 instance 和 nodes 以及连接 nodes 的 front-end 的网卡接口在同一 网段,否则无法实现通信。笔者在这一点上犯了很多错误,花费了大量的时间 问:node 节点 VNET_PUBINTERFACE= 答:设置为 xen 自动建立的网桥。这里网桥为 xenbr1 问:VNET_BRIDGE= 答:设置为 xen 自动建立的网桥。这里网桥为 xenbr1。关于如何确定网桥,可以通过 brctl show命令来查看。 对于整个的搭建过程,笔者进行了上述陈述,有些地方可能陈述的不是很清楚,如果读者有什么疑问可以 和笔者联系 云计算平台研究 1.Hadoop 平台研究 1.1 Hadoop架构 在Google 发表MapReduce 后,2004年开源社群用Java 搭建出一套Hadoop 框架,用于实现MapReduce 算法,能够把应用程序分割成许多很小的工作单元,每个单元可以在任何集群节点上执行或重复执行。 此外,Hadoop 还提供一个分布式文件系统GFS (Google file system),是一个可扩展、结构化、具备日志的分布式文件系统,支持大型、分布式大数据量的读写操作,其容错性较强。 而分布式数据库(BigTable )是一个有序、稀疏、多维度的映射表,有良好的伸缩性和高可用性,用来将数据存储或部署到各个计算节点上。 Hadoop 框架具有高容错性及对数据读写的高吞吐率,能自动处理失败节点,如图3-5所示为Google Hadoop架构。 在架构中MapReduce API 提供Map 和Reduce 处理、GFS 分布式文件系统和BigTable 分布式数据库提供数据存取。基于Hadoop 可以非常轻松和方便完成处理海量数据的分布式并行程序,并运行于大规模集群上。 Hadoop 有许多元素构成。最底部是Hadoop Distributed File System(HDFS),它存储Hadoop 集群中所有存储节点上的文件。HDFS 的上一层是MapReduce 引擎,该引擎由JobTracker 和TaskTracker 组成。 HDFS 和MapReduce 的关系如图3-4所示: 图3-4 HDFS和MapReduce 的关系图 MapReduce 是依赖于HDFS 实现的。通常MapReduce 会将被计算的数据分为很多小块,HDFS 会将每个块复制若干份以确保系统的可靠性,同时它按照一定的规则将数据块放置在集群中的不同机器上,以便MapReduce 在数据宿主机器上进行最便捷的计算。 1.2 Hadoop分布式文件系统 对客户机而言,HDFS(Hadoop Distributed File System) 就像一个透明的传统分级文件系统,可以创建、删除、移动或重命名文件等等传统意义上的文件系统操作。HDFS 的基本体系结构如图3-5所示: 图3-5 HDFS的基本体系结构图 如图3-5存储在HDFS 中的文件被分成块,并被复制到多个节点中(DataNode)。这与传统的RAID 架构大不相同。块的大小(默认为64MB) 和作为冗余(Replication)的块数量在创建文件时由用户定制。NameNode 作为中心控制节点对所有文件操作进行控制。 NameNode 运行在一个单独的节点上,其负责管理文件系统名称空间和控制用户的访问。NameNode 并不处理系统运行中实际的数据流,而只处理表示DataNode 数据块的元数据。当任务节点需要处理某个数据块时,则先访问NameNode 获得该数据块的存储位置后,就可以到存储该数据块的DataNode 对该数据块进行读取,修改,删除等操作,并将这些操作信息返回NameNode ,更新该数据块的信息。 在HDFS 中,默认设置一个Secondary NameNode作为NameNode 的备份节点,系统运行将HDFS 的存储元数据备份到SecondaryNameNode 。当NameNode 出现异 常和错误的时候,启动Secondary NameNode成为新的NameNode 。 Hadoop 集群包含一个中心控制节点NameNode ,以及大量负责存储数据的工作节点DataNode 。DataNode 响应来自用户系统的读写请求,还响应创建、删除和复制来自NameNode 的块命令。 NameNode 中维护着每个DataNode 的在线状态,而DataNode 向NameNode 发生定期心跳消息(Heartbeat)维护自己在NameNode 中的在线。而心跳消息中还包含一个块报告,NameNode 可以根据这个报告验证块映射和其他文件系统元数据。如果NameNode 没有收到DataNode 发送的心跳消息,NameNode 将采取修复措施,重新复制在该节点上丢失的块。 1.3基于Hadoop 的MapReduce 实现 Hadoop 的MapReduce 框架是基于Google MapReduce 程序设计框架的原理实现的。 Hadoop 的MapReduce 框架的基本体系结构如图3-6错误!未找到引用源。所示,Hadoop 的MapReduce 框架由JobTracker 和TaskTracker 两类基本部件组成。 JobTracker 为中心控制节点,主要处理任务分配和调度,记录任务运行状态和已分配任务的完成情况,处理TaskTracker 出现的异常现象等。如果某一个TaskTracker 出故障了,JobTracker 会将其负责的任务转交给另一个空闲的TaskTracker 重新运行。JobTracker 可以运行于集群中任一台计算机上。 TaskTracker 响应JobTracker 的控制命令,按照指令的要求处理需要处理的数据。TaskTracker 分为两类,分别是Mapper 和Reducer 。Mapper ,Reducer 可以执行在任意一个TaskTracker 上,而JobTracker 根据TaskTracker 的负载情况分配Mapper 或者Reducer 任务。 图3-6 MapReduce框架的基本体系结构图 Hadoop 的任务粒度是由文件系统中文件块的大小决定的,原始大数据集通常被切割成小于或等于HDFS 中一个Block 的大小(缺省是64M) 的小数据集。若一个节点上有m 个小数据等待处理,这个节点上就启动n1个Mapper 任务,Reduce 任务的数量r 则可由用户指定。 Mapper 执行由用户实现的Map 函数,即将输入数据处理为一组 Reducer 执行由Mapper 处理之后的结果,按照用户实现的Reduce 函数输出到分布式文件系统。Reducer 的处理过程分为三个子过程,Shuffle(取数据) 、Sort(排序) 和Reduce(归约) 。在取数据阶段,Reducer 将从Mapper 处理节点获取中间数据。随后排序过程将Shufile 阶段获取的中间结果进行一次排序.最后安装用户定制的Reducer 函数对排好序的数据进行归约,得到输出数据。 Hadoop 在Map 输出的中间结果阶段进行了优化,引入了Combine 阶段,由于一个Mapper 上的中间数据将会被多个Reducer 取走,因此Combine 先将Mapper 本地的中间结果进行类Reducer 的方式处理,可以使得Reducer 直接取走需要的数据。Combilie 能够减少中间结果中 Hadoop 系统坚持本地计算的基本思想:数据存储在哪一台计算机上,就由这台计算机进行这部分数据的计算,这样可以减少数据在网络上的传输, 降低对 网络带宽的需求。在Hadoop 这样的基于集群的分布式并行系统中,计算结点可以很方便地扩充,而因它所能够提供的计算能力近乎是无限的,但是由数据需要在不同的计算机之间流动,故网络带宽变成了瓶颈,是非常宝贵的,“本地计算”是最有效的一种节约网络带宽的手段,业界把这形容为“移动计算比移动数据更经济" 。 1.4 Hadoop的容错控制 由于Hadoop 所在集群节点具有廉价、低可靠性的特点,Hadoop 系统层面的容错控制就变得非常重要。 1)TaskTracker 的容错控制: TaskTracker 定期(默认为3秒) 向JobTracker 发送心跳信息,如果JobTracker 在一段时间(默认为10秒) 之内没有再收到来自TaskTracker 的心跳信息,则将这个TaskTracker 列入黑名单。TaskTracker 发送的心跳信息包含着当前TaskTracker 中运行任务的状态信息,如任务的运行数量和任务的运行状态。 当TaskTracker 出现异常的时候,运行在上面的任务在JobTracker 便会被登记为Failed ,JobTracker 随后会选择另外一个节点重新执行这个任务。运行在异常节点上的已完成的Map 任务也会被重启因为这些任务完成的输出数据已经无法再访问到,而Reduce 任务无需被重启是因为Reduce 任务的输出数据已经被存入全局文件系统。当原执行在节点A 上的Map 任务因为A 节点异常转移到节点B 时,JobTracker 会通知所有依赖于该Map 任务的Reduce 任务这个执行转移关系。 2)JobTracker 的容错控制: Hadoop 的单点控制模型使得整个系统的任务控制变得简单易行,但是单点控制也称为系统稳定性的瓶颈。当JobTracker 失效时,Hadoop 多种恢复方法,如从备份节点获得状态信息,或者从TaskTracker 处获得同步信息,或者将整个系统的作业状态抛弃等。其中第一种方法简单易行,但是可能在少数情况出现回滚异常。 1.5 Hadoop子项目简介 除了HDFS 和MapReduce ,Hadoop 还有多个子项目,以满足各个应用层次的不同需求。由于各个子项目针对的是不同应用层次的需求,所以其目标和落脚点 各有不同。这里对Hadoop 其他子项目进行简要的介绍错误!未找到引用源。: 1)Avro : Avro 是一个使用RPC 实现Hadoop 系统中数据序列化的子项目,Avro 提供了富 数据结构和压缩的、快速的二进制数据格式,而且Avro 为用户提供了动态语言集成接口,用户可以使用各种不同的编程语言(C/C++,JA V A ,Python 等) 进行数据序列化编程。 2)Chukwa : Chukwa 是一个致力于通过数据收集监控大型分布式系统的子项目。Chukwa 建立在HDFS 和MapReduce 框架之上,并且继承了Hadoop 高可扩展性和健壮性的优点。Chukwa 同样还提供了一整套提供显示、监视和结果分析的工具集,以提高监控效果和监控的可用性。 3)HBase : HBase 为Hadoop 提供了类似Google Bigtable 错误!未找到引用源。进行大规模数据处理的数据库系统。HBase 为MapReduce 作业提供了方便的数据库表项接121,使得用户可以在使用MapReduce 框架时可以直接从HBase 数据库中读取并存储数据。HBase 优化了大规模的数据访问,并针对数据库应用特点对Hadoop 的数据存储进行了优化。 4) Hive: Hive 为Hadoop 用户提供了一整套机制使得可以直接使用基于SQL 的数据块操作语句对HDFS 和MapReduce 框架进行访问。Hive 同时简化了用户编写Map 和Reduce 函数的过程,使用户可以在Hive 的框架编写更加简单的Map 和Reduce 函数,为用户编写更加复杂和高效的数据分析和挖掘工具提供了简便的途径。 5)Pig : Pig 是用于分析大规模数据集的平台,它集成了用于数据分析的高层程序设计语言。Pig 为MapReduce 框架提供了必要的并行化机制,使得在处理更大规模数据集时可以更好的拆分效果。Pig 同时为用户提供了友好的编程借口和优化组件。 6)Zookeeper : Zookeeper 是Hadoop 系统中集中提供配置信息、名字空间、同步串行操作以及用户分组服务的模块。Zookeeper 建立在Hadoop 体系结构之上,为用户提供了可选择的分布式系统配置服务。 2. OpenStack 平台研究 2.1 openstack 原理 OpenStack 由三部分组成,分别是云计算,云存储,镜像服务。OpenStack 可以单独提供其中的一部分,也可以将这三部分组合起来,搭建一个通用的云平台。 OpenStack 首先将数据中心虚拟化,利用管理程序提供应用程序和硬件之间抽象的对应关系。如图: OpenStack 通过两个实现数据中心虚拟化。 1. 为每个服务器提供了抽象的硬件(例如第一台主机HOST 1 ,其实提供了抽象的4台主机,而上面的四台主机或许是一台抽象的服务器)。 2. 实现对每个服务器资源的更好的利用,利用了虚拟机,下图是更多的实现 上面每个虚拟的服务器,或者网络,或者存储设备之后都是一个Pool, 这样无论对资源的分配还是对请求响应都是更加灵活而有效。 OpenStack 完成数据中心虚拟化后,openstack 提供对云进行管理的一层,负责在云上部署各种应用和文件,同时还要提供对应用和文件的检索,创建和分配虚拟机,当虚拟机用完之后还要撤销,要提供用户和管理员接口,用户要能知道自己的应用的情况,管理员也要能知道整个云的运行情况,负责云存储的分配,检索,收回。 2.2 OpenStack的关键特性 OpenStack 有很多关键特性,这些特性主要有: 1. 管理虚拟化的产品服务器和相关资源(cpu,memory,disk,network), 提高其提高其利用率和资源的自动化分配(具有更高的性价比) 。 2. 管理局域网(Flat,Flat DHCP, VLAN DHCP ,IPv6), 程序配置的IP 和VLAN, 能为应用程序和用户组提供灵活的网络模式。 3. 带有比例限定和身份认证:这是为自动化和安全设置的,容易管理接入用户,阻止非法访问。 4. 分布式和异步体系结构:提供高弹性和高可用性系统 5. 虚拟机镜像管理:能提供易存储,引入,共享和查询的虚拟机镜像 6. 虚拟机实例管理:提高生命周期内可操作的应用数量,从单一用户接口到各种API ,例如一台主机虚拟的4台服务器,可以有4中API 接口,管理4个应用。 7.创建和管理实例类型(Flavors ):为用户建立菜单使其容易确定虚拟机大小,并作出选择。 8.iSCSI存储容器管理(创建,删除,附加,和转让容器):数据与虚拟机分离,容错能力变强,更加灵活。 9.在线迁移实例。 10.动态IP 地址:注意管理虚拟机是要保持IP 和DNS 的正确 11. 安全分组:灵活分配,控制接入虚拟机实例。 12.按角色接入控制(RBAC )。 13. 通过浏览器的VNC 代理:快速方便的CLI administration。 在新版本的openstack diablo 版本中,新添加的一些功能,这些功能用图表示如下: 2.3 OpenStack的特征 1. 镜像即是服务:范围内存储和检索虚拟机镜像。 2. 多格式、多容器支持:与所有通用镜像格式兼容。 3. 镜像状态:提供可见和可用的结构。 4. 弹性API: OpenStack的镜像服务范围,不同的镜像。 5. 元数据:存储和检索关于镜像的信息。 6. 镜像核对:确保数据整合。 7. 大量的日志。 8. 整合测试:核实虚拟机功能。 9. 后端存储选项:更大灵活性支持swift,local,S3或者HTTP 。 2.4 OpenStack的体系结构 2.4.1 OpenStack的云计算结构 1. 以数据库和队列为基础 Nova-compute 负责决定创造虚拟机和撤销虚拟机,通过运行一系列系统命令(例如发起一个KVM 实例,)并把这些状态更新到nova-database 中区,nova-schedule 负责从queue 里取得虚拟机请求并决定把虚拟机 分配到哪个服务器上去。这里需要一些算法,可以自己定义,目前有Simple (最少加载主机),chancd(随机主机分配) ,zone(可用区域内的随机节点) 等算法。 Nova-volume 负责记录每一个计算实例,相当于一个计算请求吧,并负责创建,分配或撤销持久层容器(Amazon的,iSCSI ,AoE 等等) 给这些compute instances 。 Nova -network 负责处理队列里的网络任务,例如设置bridging interfaces 或者changing iptables rules。 Nova-database 存储一个云基础设施的大部分的编译时和运行时状态 要区别glance database. 镜像数据库(可以用 OpenStack Object Storage(swift)实现,也可用S3, 或者本地存储)。 Nova-api :几乎提供所有对外的接口API ,也提供“cloud controller ”,也做一些检查 Nova-schedule :得到一个虚拟机实例的请求从队列中,并且决定它应该在哪里运行。目前支持的策略:Simple (最少加载主机),chancd(随机主机分配) ,zone(可用区域内的随机节点) 等算法 2. Dashboard是一个客户入口。Dashboard 是基于web 的客户管理系统。 2.4.2 OpenStack Object Storage 部署 1. Object Storage安装 一个代理节点和若干存储节点。 2. 代理节点安装 运行swift-proxy-server processes和swauth services,提供从代理到存储节点的请求。 3. 存储节点: 运行swift-account-server,swift-container-server, swift-object-server processes。提供对账户数据库、容器数据库、和实际存储对象的存储控制。初始化时最好不要少于5个存储点。 4. 安装运行管理服务器的节点。 部署图如下: 3. VMware云技术方法 3.1 虚拟化 虚拟化是推动向云计算转变的重要催化剂。虚拟化和云计算基础架构领域的全球领导者 VMware 依靠虚拟化,提供了可显著减少 IT 复杂性的云计算基础架构和管理解决方案、云计算应用程序平台解决方案和最终用户计算解决方案。 VMware 已凭借其领导地位延揽了超过 25,000 家技术和服务合作伙伴。VMware 还是为最大的云计算服务提供商群体(包括 2,600 多家 vCloud 服务提供商)提供核心云计算基础架构的业界领先供应商。此外,VMware 正在与 Bluelock 、Colt 、SingTel 、Terremark 和 Verizon 等领先云计算提供商密切合作,以提供新的 VMware vCloud 数据中心服务。VMware vCloud 数据中心服务是新型企业级混合云计算服务,可提供企业所要求的灵活性以及安全性、互操作性和控制力。 VMware vCloud 数据中心服务构建在由 VMware 开发并经我们认证为兼容的体系结构之上,而不是商用公共云计算服务。VMware 使企业能够为其业务提供动力,同时节省资源(财务、人力和环境资源)。其经过客户验证的解决方案可为企业提供实现云计算技术的优势所需的所有功能。 通过虚拟化提高 IT 资源和应用程序的效率和可用性。首先消除旧的“一台服务器、一个应用程序”模式,在每台物理机上运行多个VM 虚拟机。。让您的 IT 管理员腾出手来进行创新工作,而不是花大量的时间管理服务器。在非虚拟化的数据中心,仅仅是维持现有基础架构通常就要耗费大约 70% 的预算,用于创新的预算更是微乎其微。 借助在经生产验证的 VMware 虚拟化平台基础上构建的自动化数据中心,您将能够以前所未有的速度和效率响应市场动态。VMware vSphere 可以按需要随时将资源、应用程序甚至服务器分配到相应的位置。VMware 客户通过使用 VMware vSphere 虚拟化技术整合其资源池和实现计算机的高可用性,通常可以 节省 50% 到 70% 的 IT 总成本。 1 可以在单个计算机上 运行多个操作系统,包括 Windows、Linux 等等。 2 可通过创建一个适用于所有 Windows 应用程序的 虚拟 PC 环境,让您的 Mac 计算机运行 Windows。 3 通过提高 能效、减少硬件需求量以及提高服务器/管理员比率,可以 降低资金成本 4 可确保 企业应用程序发挥出最高的可用性和性能 5 可通过改进 灾难恢复解决方案提高 业务连续性,并在整个数据中心内实现高可用性 6 可改进 企业桌面管理和控制,并加快桌面部署,因应用程序冲突带来的支持来电次数也随之减少 3.2 安全性 虚拟化是从旧式应用程序向新式云计算基础架构进行转变不可或缺的基础,是云计算环境中重要的安全保障条件。VMware 为新一代云计算安全解决方案奠定了基础,可有效应对云计算环境中面临的应用程序和数据安全挑战。VMware 解决方案提供了独有的自检功能,可帮助识别难以检测到的问题并实现全面的安全控制。这些功能进一步提高了性能、降低了复杂性并提供了更全面的安全保护。 利用 VMware 云技术解决方案,企业可以确保快速实施和监控安全策略以实现 IT 遵从性,同时保持适当级别的控制力和对所有权领域的可见性。它们可以使安全性更加灵活,因此 IT 人员可以利用实时迁移等动态功能,并确保安全策略始终无缝地跟随 IT 服务。它们还可以提供经济高效的单一框架来实现云部署的全面保护。 3.3自动化和管理 企业无需花费宝贵的时间管理物理基础架构或应用程序,VMware 解决方案使他们能够专注于创新和为企业提供价值。将所有硬件资源集中到虚拟构造块中并定义关联应用程序服务级别后,企业可以根据业务规则和应用程序需求部署自动化计划。云计算自动化和 云计算管理可帮助 IT 部门实现超高效率,确保计划和策略与业务情况相符并在云的服务交付机制(根据服务级别交付的应用程序和服务)中定义计划和策略。 将这些自动化和管理规则应用于云计算基础架构,可以有效地实现零接触式基础架构,其中 IT 以服务的形式提供。使用可保持企业所需安全性、控制力和遵从性的云计算方法,IT 部门还可以更好地管理风险。 3.4互操作性和开放性 除了作为安全的云计算基础之外,VMware 解决方案还可确保在内部数据中心与 VMware vCloud 合作伙伴提供的外部托管和 服务提供商云之间实现应用程序可移植性。这使得应用程序无需或只需很少修改就能够在内部或外部正常运行。除了基础架构之外,VMware 还提供云计算应用程序平台,使开发人员能够创建可移植的云计算应用程序,从而进一步增强企业应对变化的能力。如今,全世界有 200 多万开发人员依靠 VMware 云计算应用程序平台创建可移植、动态、可扩展而且针对云规模的部署(包括 VMforce 和 Google App Engine 等流行的公共云产品上的部署)而优化的各种应用程序。IT 人员可以利用 VMware 解决方案来安全地跨任何设备动态部署和管理支持云计算的 IT 服务,从而将这种灵活性扩展到最终用户。 VMware 解决方案可确保在一个通用管理和安全模型内的各个云之间实现应用程序移动性和可移植性。这些解决方案基于开放标准,包括美国国家标准协会 (ANSI) 已采用作为标准的 开放式虚拟化格式 (OVF)。此外,它们还扩展到了庞大的服务提供商体系。 3.5 用于云计算的自助式服务 在应用程序或服务层,云计算技术提供了一种新的服务使用方式,该方式应用标准化和自动化来实现快速服务部署。通过实现流程标准化、增强自动化和实现“IT 即服务”,VMware 解决方案有助于在虚拟化基础上促进实现更多节约,同时显著减少每名 IT 管理员需要执行的维护工作。 业务线可以在需要时使用服务,而不必等待手动的 IT 采购和部署流程。利用新的 VMware 产品,IT 部门现在可以通过基于 Web 的目录在共享基础架构上交付标准化的 IT 服务。通过实现这些服务产品的标准化,企业可以简化许多 IT 管理任务(从故障排除和修补到变更管理),并避免许多使当今 IT 团队不堪重负的管理性维护。它们还可以通过基于策略的工作流实现自动部署,使得经过验证的用户只需单击鼠标即可部署预配置的服务。同时,IT 部门还可以保持控制策略以及用来管理服务使用的计费。 3.6 资源池和动态资源分配 私有云将 IT 部门的资源管理方法由管理离散的硬件更改为管理虚拟化的共享资源池,其中包括服务器、存储和网络连接。通过虚拟化所有 IT 资源,IT 人员可以提高资源利用效率和针对高优先级应用程序进行动态资源分配。 这些共享资源池可以抽象为逻辑构造块(包含存储、网络和服务器单元等)从而有效创建虚拟数据中心。根据业务需求,这些资源容器经过构造可提供特定的服务级别或满足特定的业务需求,也可以按照逻辑业务单元或职能(例如,销售、金融和研发)细分这些资源容器。通过标准化一组设计合理的产品,企业可以向着策略驱动的计算方法发展。 3. 其他相关平台研究 3.1 IBM云计算平台体系结构 IBM 在2007年11月推出了蓝云计算平台,一个可以即买即用的云计算平台错误!未找到引用源。。它包括一系列的云计算产品。使得计算不仅仅局限在本地机器或远程服务器集群,而是通过架构一个分布式、可全球访问的资源结构,使得数据中心在类似于互联网的环境下运行错误!未找到引用源。。 通过I 叫的技术白皮书错误!未找到引用源。,我们可以了解到蓝云计算平台的内部构造。“蓝云”建立在大规模计算领域的专业技术基础上,基于IBM 软件、系统技术和服务支持的开放标准和一些开源软件。“蓝云”基于IBM Almaden 研究中心(Almaden Research Center)的云基础架构,包括Xen 和Power 虚拟化、Linux 操作系统映像以及Hadoop 文件系统与并行计算。“蓝云”由IBM Tivoli软件支持,通过管理服务器来确保基于需求的最佳性能。其中包括通过能够跨越多服务器实时分配资源的软件,给用户带来良好的体验,能够加速性能并确保在最苛刻环境下的稳定性。IBM 后来改进的“蓝云(Blue Cloud) ”计划,还能够帮助用户进行云计算环境的搭建。它通过将Tivoli 、BM2、Web Sphere 与硬件产品集成。使其能够为企业架设一个分布式、可全球访问的资源结构。 图3-7 蓝云计算的高层架构图 图3-7演示了蓝云计算的高层架构。可以看到,蓝云计算平台由一个数据中心:IBM Tivoli部署管理软件(Tivoli Provisioning Manager)、IBM Tivoli监控软件(IBM Tivoli Monitoring)、IBM Web Sphere应用服务器、IBM BM2数据库以及一些虚拟化的组件共同组成。图中的架构主要描述了云计算的后台架构,并没有涉及到前台的用户界面。具体功能如下: 1) 部署管理软件使Microsoft Windows和Linux 操作系统的映象、部署、安装和配置过程实现自动化,并且使用户请求的任何软件集的安装/配置实现自动化。 2) .部署管理软件使用Web sphere Application Server呈现供应状态和数据中心内资源的可用性、调度资源的供应及取消供应,并且预定资源已备日后使用。 3) .供应资源之后,将根据操作系统和平台,使用Xen 管理程序来创建虚拟机器,或者使用Network Installation Manager 、Remote Deployment Manager 或 Cluster Systems Manager来创建物理机器。 4) .监控软件监控Tivoli Provisioning Manager 所提供的服务器运行的状况(CPU、磁盘和内存) 5) .DB2是Tivoli 部署管理用来存储资源数据的数据库服务器。 3.2亚马逊云计算平台体系结构 亚马逊的云计算模式沿袭了简单易用的传统,并且建立在亚马逊公司现有的云计算基础平台之上错误!未找到引用源。。弹性计算云用户使用客户端通过SOAP over HTTPS 协议来实现与亚马逊弹性计算云内部的实例进行交互。使用HTTPS 协议可以是保证远端连接的安全性.避免用户数据在传输的过程中造成泄露,保证用户的安全。从使用模式上来说,弹性计算云平台为用户或者开发人员提供了一个虚拟的集群环境,使得用户的应用具有充分的灵活性,同时也减轻了云计算平台拥有者的管理负担。 弹性计算云中的实例是一些真正在运行中的虚拟机服务器,每一个实例对应一个运行中的虚拟机。对于一个提供给用户的虚拟机.该用户具有完整的访问权限,包括针对此虚拟机的管理员用户权限。虚拟服务器的收费也是根据虚拟机的能力进行计算的,因此.实际上用户租用的是虚拟的计算能力.简化了计费方式。由于用户在部署网络程序的时候,一般会使用超过一个运行实例,需要很多个实例协同工作。弹性计算云的内部也架设了实例之间的内部网络,使得用户的应用程序在不同的实例之间可以通信。在弹性计算云中的每一个计算实例都具有一个内部的IP 地址,用户程序可以使用内部IP 地址进行数据通信,以获得数据通信的最好性能。同时每一个实例也具有外部IP ,用户可以将分配给自己的弹性IP 地址分配给自己的运行实例.使得建立在弹性计算云上的服务系统能够为外部提供服务。 在用户使用模式上,亚马逊的弹性计算云要求用户要创建基于亚马逊规格的服务器映像(名为亚马逊机器映像即亚马逊Machine Image,AMI) 。弹性计算云的目标是服务器映像能够拥有用户想要的任何一种操作系统、应用程序、配置、登录和安全机制,但是当前情况下,它只支持Linux 内核,支持Window 的平台也在开发之中。通过创建自己的AMI ,或者使用亚马逊预先为用户提供的AMI ,用户在完成这一步骤后将AMI 上传到弹性计算云平台,然后调用亚马逊的应用编程接口(API),对AMI 进行使用与管理。AMI 实际上就是虚拟机的映像,用户可以使用它们来完成任何工作,例如运行数据库服务器,构建快速网络下载的平台,提供外部搜索服务甚至可以出租自己具有特色的AMI 而获得收益。用户所拥有的多个AMI 可以通过通信而彼此合作,就像当前的集群计算服务平台一样。 除了弹性计算云,亚马逊还有很多相关业务,如:简单存储服务(Simple Storage Service ,S3) ,简单排列服务(Simple Queuing Service) 以及简单数据库服务(Simple DB)等。 在云计算的将来发展过程中,亚马逊也规划了如何在云计算平台之上帮助用户开发Web 2.0的应用程序。亚马逊认为除了它所依赖的网络零售业务之外,云计算也是亚马逊公司的核心价值所在。可以预见,在将来的发展过程中,亚马逊必然会在弹性计算云的平台上添加更多的网络服务组件模块,为用户构建云计算应用提供方便。 3.3 Eucalyptus Eucalyptus 是由University of California(Santa Barbara)为进行云计算研究而开发的错误!未找到引用源。。它具有与EC2兼容的API 的系统,弹性块存储(EBS)及S3兼容的存储管理.Eucalyptus 虽然在语法上支持Amazon 的接口,实现相同的功能(稍有例外) ,但在内部几乎是完全不同的。Eucalyptus 的设计目标是容易扩展,并且容易安装和维护。它也属于Iaas 的云服务。Eucalyptus 将成为Ubuntu Linux整合的一部分。Ubuntu 用户使用Eucalyptus 将可以很容易的构建私有云,可以像Amazon Web Services LLC(AWS)云那样运作,并且可以和AWS 云协同工作从而创建“复合云”。 Eucalyptus 在结构上分为三个原件错误!未找到引用源。: Cloud Manager(CM):Cloud Manager 负责处理用户端的请求.;在上层做虚拟实体的调度决定:根据不同的服务级别,来处理SLA ;维护用户元数据等。 Instance Manager(IM):Instance Manager运行在实际的物理资源上以提供VM 实例,负责VM 的启动、关机等。 Group Manager(GM):Group Manager负责从1M 取得信息,把对VM 的调度信息发送给特定的IM ;同时也负责管理对实体网络的配置工作。 这三个原件之间通过SOAP with WS .security 来通信。每个Cluster 只会有一个head node执行Cluster Controller.每个node 都有一个node controller。 图3-8显示了Eucalyptus 的逻辑层次结构。 图3-8 Eucalyptus的逻辑层次结构图 Linux内核中的很多设计思想和理念可谓经典,既然是经典,其应用的范畴就不止内核,你照样可以在用户态下灵活应用这些设计理念,康华在弹性云计算平台的设计中,综合应用了开源软件中的设计思想和技术,如下文件系统的设计为其中之一: --------------------------------------------------------------------------------------------------------------- hadoop dfs log structure filesystem design -- 康华背景介绍 HLFS的使用场景是为弹性云平台提供虚拟磁盘(类似amazon的EBS),提供后台存储服务。它需要满足高可用性、高性能、能随机读写、快速故障恢复、数据快照、回滚等特性。实现简述 hadoop dfs 可被看做一个可靠的、随时可扩展的“磁盘”;但美中不足的是其不能随机写,只能追加写入,因此还不能直接作为我们的镜像存储系统。那么我们需要借助log structrue filesystem的理念,使用追加方式在hdfs上实现随机读写的要求。特性描述 用户态文件系统 —— 和标准的内核态posix接口文件系统不同,HLFS实现于用户态,以lib形式嵌入客户端。 不必完全实现posix接口规范 ,按需实现pread\pwrite等主要语意即可。 支持随机读写 —— 文件要能支持随机读写(按照offset定位位置)。 支持超大文件存储 —— 单个文件需可支持上T数据存储(这里文件对应的是虚拟机的磁盘大小)。 仅支持单文件 —— 在我们应用场景中每个虚拟磁盘对应一个HLFS实例,因此最简化的设计就是只需要支持一个文件(对应虚拟机里一个磁盘)。 面向客户端一致性 (client - orient )—— 虚拟机磁盘同一时刻只能被挂载到一个虚拟机镜像中,因此只需要对其挂载的虚拟机客户保证数据一致 支持快照、支持回滚 —— 文件可随时进行现场快照、可按需进行回滚(对于host服务的虚拟机,快照回滚是防止网站被入侵或者误操作造成数据污染、损坏的最有效手段) 支持多数据多副本 —— 数据存储多份,保证数据安全性和就近访问优化(hadoop dfs为我们实现这点) 集群系统可动态扩容 —— 存储节点(PC服务器)可动态添加到集群中,而不影响集群正常服务(hadoop dfs为我们实现这点) 集群系统可透明故障切换 —— 存储节点出现故障,不影响服务,对用户透明(hadoop dfs为我们实现这点) 概要设计 HLFS的磁盘数据格式与一般文件系统(FFS—fast filesystem)无多大差异,都是借助于indirect block 、inode 、directory 等结构。 所不同之处在于LFS会将磁盘(我们这里是hdfs的存储池)分割成有序的segment 进行管理,当前活跃的segment只有一个(也就是我们日志的逻辑尾的segment)。 这些segment 逻辑上头尾相连组成一个线性log,任何的文件更新(数据块、indirect block 、inode等等)都会以追加方式写入到log尾部——显然这么做的好处是保证了磁头的顺序移动,提高了吞吐;而带来的麻烦是需要回收前期写入的旧数据(修改过的),否则磁盘迟早会写满。综上所述我们设计的最基本思路是 —— 利用hadoop dfs为我们提供可靠的、分布式的存储介质;然后在其上实现LFS。 下面就关键设计技术点做概要设计。 HLFS LOG 创建和检索 LOG 是我们数据持久化的一个基本写入单位,对于写透需求来说,实际上每次写入动作都会产生一个新的LOG,而每次的LOG大小不尽相同。LOG的内容显然必须包含被写入的数据块,还需要包含对应的元数据(索引块等)信息,以及元数据的元信息(inode),这样才能完成对一个信息的索引。 LOG创建 任何文件或者目录的修改LFS都需要向log中写入如下几部分信息,而且要求严格“按照顺序写入(in-order semantics)”—— 其目的是为了崩溃时能尽可能恢复数据一致性。任何修改或者新数据块 (数据块是数据实际操作的最小粒度;可配置;大小为8196字节或者更大) Indirect block 更新 (也叫做meta-data block ,是inode中的2/3/4级索引块数据) Inode 更新 (每个inode对应一个文件,如果只支持单一文件,则只用一个inode) Inode map 更新 ( 单一文件则只有一个映射项) LOG 的布局为 :?A (data)| B (meta-data block log) | C (inode log) | D(inode_map log)。数据检索 读取文件最新数据时:需要通过找到最新的inode map位置,再进而找到所需文件对应inode,再进而找到文件逻辑地址对应的数据块的物理地址(段号+offset),再进而读取数据。 最新Inode map位置按理应记录在checkpoint文件中(见错误恢复部分),HDFS初始化加载时读入;如果运行中则该inode map 驻留于内存数据结构中。注意,文件块大小是可变的(可配置),比如8k。对于不足一个块的修改,一定会伴随先读出完整块再修改,再追加这一过程。 空间管理 - 段 分段 —— 为了空间管理和回收的目的,我们必须对存储空间进行分段:每个段大小并不需要固定,而且具体大小也没有硬性规定; 每个HLFS的段被映射成一个Hadoop Dfs文件,比如大小为64M(可配置);segment文件名字格式为segno.seg,其中segno从0开始递增; 数据block的存储地址(storage address)为64位,前部为segment的文件号,尾部为segment文件内偏移量——比如一个段大小是64M,则尾部需要26位; 段回收 ——(Segment Clean)log structure 文件系统顺序追加写行为必然带来大量的旧数据,因此必须有旧数据回收机制。回收机制大体来讲需要遍历段文件中的各数据块,检查当前inode的索引块中的地址是否有指向它,如果没有则说明是该数据块是旧数据可以放弃。如果一个段中的所有数据块都是旧数据块,则这个段文件可被回收(从hdfs中删除)。另外当段中可用数据块很少时,也可以采取copy and remove的方式——将非旧数据的数据块主动以log形式复制写到新段中,从而使得原段中的所有数据块都成为旧数据块,这时再删除其。 在hlfs的实现中,将段回收过程分成两部走: 第一步计算段的使用统计(统计段中当前还有多少数据块活跃); 第二步对活跃块小于水平线的段(水平线可设置)执行删除或者copy and remove动作,来回收空间。 “段使用统计“由外部工具程序实现,产生的段使用计数存放到segment_usage.txt中。我们可以从hlfs客户端所在的机器以"拉模式下"(将段读入到本地)执行段统计任务;也可以采用"推模式下"(map/reduce 方式就近计算)并行执行段统计任务。 “段回收”工作则由hlfs唯一的写入线程执行,从而避免元数据(inode)并发修改带来的问题,另外回收作为低优先级任务,会首先让路给正常的写入任务,只有当当前没有写入任务时才会开始执行段回收任务。 快照实现 -- (未完成) 在log structure filesystem 上实现快照功能是先天具备的特性。 我们每次写入的log(凡是没有被回收的log)都可作为一个快照点,也就是说都可以恢复当时的数据,具体做法非常简单,只需要载入快照所在时刻那个log中的inode即可。所以原则上我们的数据可以回滚到任何一次写入时刻。不过,我们一般不会保留所有数据,因此建议用户为自己认为重要的数据状态做一个标记,这样就可以得到一个永久快照,这个永久快照将被写入到checkpoint.txt文件中(记录快照时刻的inode地址、时间、名称即可),这个快照所在inode的数据不被回收。HLFS系统需要的文件(都是追加生成) SEGMENT 文件 —— 主要的数据存储体,具体见上文。 Superblock 文件 —— 记录文件系统的配置,如块大小,段大小,采用引擎(本地还是hadoop)等配置信息,这些信息一旦确定不再变化。具体见mkfs.hlfs。 Segments_usage.txt 文件 —— 段记录使用统计文件,每行代表一个段。 Segments_delmark.txt 文件 —— 段删除标记文件,当每个段被回收后,则记录到该文件中。 Checkpoint.txt 文件 —— 记录特定时刻的系统数据版本,具体记录的是特定时刻inode的位置(尚未实现) 主要API api实现有几个特点:我们采用C风格api;线程安全(因为访问者各自维护HLFS_CTRL上下文);接口类似文件系统(但由于不存在多文件概念,因此不存在文件名之类概念)HLFS_CTRL*init_hlfs(const char*uri) int deinit_hlfs(HLFS_CTRL*ctrl) int hlfs_stat (HLFS_CTRL*ctrl,HLFS_STAT_T*stat) int hlfs_open (HLFS_CTRL*ctrl,int flag) int hlfs_close (HLFS_CTRL*ctrl) int hlfs_read (HLFS_CTRL*ctrl,char*read_buf,uint32_t read_len,uint64_t pos) int hlfs_write (HLFS_CTRL*ctrl,char*write_buf,uint32_t write_len,uint64_t pos) 当前实现不尽人意的地方 内存管理粗犷式-目前代码中内存使用没有精细化,很多地方用的比较浪费(甚至可能有少量内存泄露)。所以运行时,尽量内存宽松点。如果是dom0中运行可别把dom0配置512M这么小,最少给个1G吧。 连接管理未池化,有很多重复打开问题—— 这里的连接是指和后台存储(hdfs的连接句柄)。这种反复打开和关闭,在网络环境中很是耗时,我们下来会减少多余的连接开合动作。 对于clean段操作中,有可能发生要删除的段还被访问的情况,这时安全的方式是采用“引用技术保护”,我们现在采用简单粗暴的加锁方式:读写时都加锁,所以未有读写操作时才会删除。后期会找机会改进。 如果文件未被调用close,则在另外的连接上下文中不能看到文件存在,这个问题在系统崩溃后重新加载时会给我们带来问题(注意文件虽然从namespace中看不到,但hadoop fs -tail却能看到内容,因为从inputstream中可读取未提交给name node,却存在于data node的无数据),由于libhdfs中还未有读取inputstream方便的接口,所以现在我们采用一个很山寨的方法hadoop fs cp 来恢复最后的未提交数据。 转载请注明出处范文大全网 » google云计算平台背后的奥秘云计算平台比较
弹性云计算平台