对云计算中几种基础设施(Dynamo,Bigtable,Map/Reduce等)的朴素看法

本文对云计算基础设施Dynamo、Bigtable和Map/Reduce进行了对比分析,探讨了它们在存储云和计算云架构中的应用。Dynamo侧重非结构化数据存储,采用DHT架构实现数据均匀分布,而Bigtable更适合结构化和半结构化数据,通过主控服务器管理。Map/Reduce解决了大规模数据处理的并行计算问题,与分布式存储系统如Hadoop的DFS结合,优化数据读取效率。文章还讨论了负载均衡、容错机制和数据查询等问题。
摘要由CSDN通过智能技术生成

对云计算中几种基础设施(Dynamo,Bigtable,Map/Reduce等)的朴素看法

                                                                                                                                           ——康华

前言

云计算的概念近期可谓如火如荼,备受关注。我先前听到“云”这个名词时,很是觉得太过玄乎——也不知道它用在哪里,更不了解它如何实现,总有雾里看花的感觉!

好在近期工作需要的缘故,学习和开发过类似于“云计算”基础设施的内部系统,之后再回过头来看看业界两大寡头(Google,Amazon)推出各自的云计算服务,从认识上才算是真的将“云”这个天书般的概念落实。后面的文章中我将在个人理解的基础上,针对云计算的概念,体系结构,以及适用性等方面作一些不算很深入分析和对比,希望对大家理解云计算架构有所帮助。

第一部分 什么是云计算

云计算的标准定义留给大家去Google吧,我这里谈谈我简化理解后的云计算是什么东东:先来看云计算的产生原因吧!——首要原因是为了应对待处理数据爆炸式增长与当今机器存储能力和计算能力不足之间的矛盾(借用一下我国当前基本矛盾的书法:)。由于待处理数据越来越多(不是用多少G就能描述的范畴了。想象一下假若要存储并计算数千万用户的访问日志,或者计算数亿个网页的Page Rank),多到了很难在一台或有限数目的存储服务器内容纳,且更无法由一台或数目有限的计算服务器就能处理这样的海量数据。—— 当然,你也许会想到买来漂亮的EMC存储阵列和HPSUPERSTONE这样的小型机搞定一切,但是它们有点贵喽,这种砸钱的大家伙只能留给阔绰的银行、电信企业,或者国家气象局这些机构使用了—— 这时就需要能在普通机器(比如在中关村攒出的廉价PC)上分布式的存储这些数据,并能在其上分布式计算这些数据。你肯定会说,这不久是分布计算吗?没错,云计算可以说是经分布计算,并行计算,网格计算一脉相承的技术路线,甚至可以说它们基因相同。但它们的给人的外貌却不同,这是因为云计算是经过商业包装的名词,其实就是将分布存储和分布计算这种技术找了个盈利模式——将存储能力和计算能力出售给第三方企业。而第三方不需知道其数据到底存在那个机器上,也不需要知道那个机器在处理它们的数据,因此对它们来说数据在云端,计算也在云端,大约如此,才有了“云计算”这个概念。

目前出售云计算服务的有AmazonGoogle两个业界老大(听说OracleAPPLE也开始搞了,EMC似乎也有计划),出售的服务内容大体相同,盈利方式也大同小异(具体参看他们的网站的S3服务, EC2服务,或Google App Engine服务等)。它们技术架构虽有差异,但从概念上讲可把云计算看成是“存储云”结合“计算云”的有机结合,即“云计算 = 存储云 + 计算云”

第二部分 存储云的架构介绍

存储云概念

存储云依我看就是一个被商业包装过的分布存储系统——只不过它对第三方用户公开存储接口,用户可买容量和带宽,且规模相当宏伟的分布存储系统。关于商业模式问题我们就不多作探讨了,大家可到其网站上仔细瞧瞧。我这里的重点是对用于存储云的分布存储系统作对比分析。(不过假如你对存储云完全不了解,那我建议在看下面内容之前,先去读读相关的论文什么的介绍吧!以便我们的讨论事半功倍。)

存储云结构比较——Dynamo VS Bigtable

比较典型的存储云基础系统有Amazon公司的Dynamo系统与Google公司的Bigtable系统,这两种系统不但已经开始是商用(参见S3 服务和 Google App Engine服务),而且都公开了比较详细的实现论文(尤其dynamo系统论文格外详尽——可见Amazon公司的无私和自信)。它们各自实现架构迥异,存储特性不一,但都结构优美,技术上各有可称道的地方,可谓各有千秋,却又殊途同归。

下面我们将针对它们两者存储数据的要求、体系架构、扩容、负载均衡、容错、数据存取及查询等我觉得重要的方面进行一些点到为止分析比较,以辨明良莠。

数据结构化问题

首先要提到的是两者存储数据属性上的区别,虽然两者都是以key/value形式进行存储,但Dynamo偏向存储原数据,因为其所存储的数据是非结构化数据,对value的解析完全是用户程序的事情,Dynamo系统不识别任何结构数据,都统一按照binary数据对待;而Bigtable存储的是结构化或半结构化数据(web数据特点就是介于结构化和非结构化之间,因此称为半结构化数据。我这里不展开说它了,不了解半结构化数据的赶紧去google一下吧!),其value是有结构的数据——就如关系数据库中的列一般,因而可支持一定程度的Query(比如可按单列进行)。这点上看Bigtable更接近数据库(接近而不是等价!至于和关系数据库的具体区别可去google 一下,网上论述可不少!);另外, Bigtable所存储的数据都是以字符串格式实现,所以对主建或者列(以及其自动加上的时间戳)排序都是以字符序进行,而dynamo的键值并非以字符串存储,而是统一经过md5算法转后成16字节md5_key

  • 0
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 12
    评论
评论 12
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值