3.7 海量数据管理技术

http://book.51cto.com  2010-12-06 16:44  雷万云  清华大学出版社  我要评论(0)
3.7  海量数据管理技术
云计算需要对分布的、海量的数据进行处理、分析,因此,数据管理技术必须能够高效地管理大量的数据。云计算系统中的数据管理技术主要是Google的BT(BigTable)数据管理技术和Hadoop团队开发的开源数据管理模块HBase。
BT是建立在GFS、Scheduler、Lock Service和MapReduce之上的一个大型的分布式数据库,与传统的关系数据库不同,它把所有数据都作为对象来处理,形成一个巨大的表格,用来分布存储大规模结构化数据。
Google的很多项目都使用BT来存储数据,包括网页查询、Google Earth和Google金融。这些应用程序对BT的要求各不相同:数据大小(从URL到网页到卫星图像)不同,反应速度不同(从后端的大批处理到实时数据服务)。对于不同的要求,BT都成功地提供了灵活高效的服务。
云计算系统对大数据集进行处理、分析向用户提供高效的服务。因此,数据管理技术必须能够高效地管理大数据集。其次,如何在规模巨大的数据中找到特定的数据,也是云计算数据管理技术必须解决的问题。
云计算的特点是对海量的数据存储、读取后进行大量的分析,数据的读操作频率远大于数据的更新频率,云中的数据管理是一种读优化的数据管理。因此,云系统的数据管理往往采用数据库领域中列存储的数据管理模式,将表按列划分后存储。
云计算的数据管理技术中最著名的是谷歌提出的BigTable数据管理技术。由于采用列存储的方式管理数据,所以如何提高数据的更新速率以及进一步提高随机读速率是未来的数据管理技术必须解决的问题。
这里以BigTable为例。BigTable数据管理方式设计者--Google给出了如下定义:"BigTable是一种为了管理结构化数据而设计的分布式存储系统,这些数据可以扩展到非常大的规模,例如在数千台商用服务器上的达到PB(Petabytes)规模的数据。"
BigTable对数据读操作进行优化,采用列存储的方式,提高数据读取效率。BigTab1e管理的数据的存储结构为:
  1. <row:string,c0lumn:string,time:int64>→stringo BigTable 
其基本元素是:行、列、记录板和时间戳。其中,记录板是一段行的集合体,如图3-12所示。
 
(点击查看大图)图3-12  BigTable的逻辑结构

BigTable中的数据项按照行关键字的字典序排列,每行动态地划分到记录板中。每个节点管理大约100个记录板。时间戳是一个64位的整数,表示数据的不同版本。列族是若干列的集合,BigTable中的存取权限控制在列族的粒度进行。
BigTable 在执行时需要3个主要的组件:链接到每个客户端的库、一个主服务器、多个记录板服务器。主服务器用于分配记录板到记录板服务器以及负载平衡、垃圾回收等。记录板服务器用于直接管理一组记录板,处理读写请求等。为保证数据结构的高可扩展性,BigTable采用三级层次化的方式来存储位置信息,如图3-13 所示 。
其中第一级的chubby file中包含Root Tablet的位置,Root Tablet有且仅有一个,包含所有METADATA tablet的位置信息,每个METADATA tablet包含许多user Table的位置信息。
当客户端读取数据时,首先从chubby file中获取RootTablet的位置,并从中读取相应METADATA tablet的位置信息。接着从该METADATA tablet中读取包含目标数据位置信息的user Table的位置,然后从该user 行、列中读取目标数据的位置信息项,据此信息到服务器中的特定位置读取数据。这种数据管理技术虽然已经投入使用,但是仍然具有部分缺点。例如,对类似数据库中的Join操作效率太低,表内数据如何切分存储,数据类型限定为string类型过于简单等。而微软的DryaduNQ系统则将操作的对象封装为.NET类,这样有利于对数据进行各种操作,同时对Join进行了优化,得到了比BigTable+MapReduce更快的Join速率和更易用的数据操作方式。
 
(点击查看大图)图3-13  BigTable中存储记录板位置信息的结构
【责任编辑:云霞 TEL:(010)68476606】

0

收藏

51bom

484篇文章,23W+人气,0粉丝