第15讲+云计算中的数据库技术_第1页
第15讲+云计算中的数据库技术_第2页
第15讲+云计算中的数据库技术_第3页
第15讲+云计算中的数据库技术_第4页
第15讲+云计算中的数据库技术_第5页
已阅读5页,还剩51页未读, 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、 第第9章章 云计算中的数据库技术云计算中的数据库技术l9.1 Google9.1 Google云计算中的数据库云计算中的数据库BigtableBigtablel9.2 Hadoop9.2 Hadoop中的数据库中的数据库HBaseHBasel9.3 Amazon9.3 Amazon云计算中的简单数据服务云计算中的简单数据服务Simple DBSimple DBl9.4 Amazon9.4 Amazon云计算中的中的关系数据库服务云计算中的中的关系数据库服务RDSRDSl9.59.5 微软云计算中的数据库微软云计算中的数据库SQL Azure SQL Azure 9.1 Google9.1 G

2、oogle云计算中的数据库云计算中的数据库BigtableBigtableGoogle云计算平台技术架构云计算平台技术架构分布式文件存储GFS并行数据处理MapReduce分布式锁Chubby分布式结构化数据表BigTable分布式存储系统Megastore 分布式监控系统Dapper。 Bigtable是一个分布式的结构化数据存储系统,是一个分布式的结构化数据存储系统,它被设计用来处理海量数据:通常是分布在数千台普它被设计用来处理海量数据:通常是分布在数千台普通服务器上的通服务器上的PB级的数据。级的数据。Google的很多项目使用的很多项目使用Bigtable存储数据,包括存储数据,包括W

3、eb索引、索引、Google Earth、Google Finance。这些应用对。这些应用对Bigtable提出的要求差提出的要求差异非常大,无论是在数据量上(从异非常大,无论是在数据量上(从URL到网页到卫星到网页到卫星图像)还是在响应速度上(从后端的批量处理到实时图像)还是在响应速度上(从后端的批量处理到实时数据服务)。尽管应用需求差异很大,但是,针对数据服务)。尽管应用需求差异很大,但是,针对Google的这些产品,的这些产品,Bigtable还是成功的提供了一个还是成功的提供了一个灵活的、高性能的解决方案。灵活的、高性能的解决方案。 分布式分布式结构化数据表结构化数据表BigTabl

4、eBigTable介绍介绍 设计动机与目标设计动机与目标 数据模型数据模型 系统架构系统架构 主服务器主服务器 子表服务器子表服务器 Bigtable Bigtable的设计动机的设计动机 需要存储的数据种类繁多需要存储的数据种类繁多:Google目前向公众开放的服务很多,需要处理的数据类型也非常多。包括URL、网页内容、用户的个性化设置在内的数据都是Google需要经常处理的; 海量的服务请求海量的服务请求:Google运行着目前世界上最繁忙的系统,它每时每刻处理的客户服务请求数量是普通的系统根本无法承受的; 商用数据库无法满足商用数据库无法满足GoogleGoogle的需求的需求:一方面现

5、有商用数据库设计着眼点在于通用性,根本无法满足Google的苛刻服务要求;另一方面对于底层系统的完全掌控会给后期的系统维护、升级带来极大的便利 Bigtable Bigtable的设计的设计目标的设计的设计目标 BigtableBigtable的设计的数据模型的设计的数据模型 BigtableBigtable的设计的数据模型的设计的数据模型-行行 BigtableBigtable的行关键字可以是任意的字符串,但是大小不能超的行关键字可以是任意的字符串,但是大小不能超过过64KB64KB。BigtableBigtable和传统的关系型数据库有很大不同,它不支和传统的关系型数据库有很大不同,它不支

6、持一般意义上的事务,但能保证对于行的读写操作具有原子性持一般意义上的事务,但能保证对于行的读写操作具有原子性(AtomicAtomic) 表中数据都是根据行关键字进行排序的,排序使用的是词表中数据都是根据行关键字进行排序的,排序使用的是词典序。典序。 一个典型实例,其中一个典型实例,其中n.www就是一个行关键字。不就是一个行关键字。不直接存储网页地址而将其倒排是直接存储网页地址而将其倒排是BigtableBigtable的一个巧妙设计。这的一个巧妙设计。这样做至少会带来以下两个好处样做至少会带来以下两个好处 同一地址域的网页会被存储在表中的连续位置,有利同一地址域的网页会被存储在表中的连续位

7、置,有利于用户查找和分析于用户查找和分析 倒排便于数据压缩,可以大幅提高压缩率倒排便于数据压缩,可以大幅提高压缩率 BigtableBigtable的设计的数据模型的设计的数据模型-列列 BigtableBigtable并不是简单地存储所有的列关键字,而是将其组并不是简单地存储所有的列关键字,而是将其组织成所谓的列族(织成所谓的列族(Column FamilyColumn Family),每个族中的数据都属于同),每个族中的数据都属于同一个类型,并且同族的数据会被压缩在一起保存。引入了列族一个类型,并且同族的数据会被压缩在一起保存。引入了列族的概念之后,列关键字就采用下述的语法规则来定义:的概

8、念之后,列关键字就采用下述的语法规则来定义: 族名:限定词(族名:限定词(familyfamily:qualifierqualifier) 族名必须有意义,限定词则可以任意选定族名必须有意义,限定词则可以任意选定 图中,内容(图中,内容(ContentsContents)、锚点()、锚点(AnchorAnchor)都是不同的)都是不同的族。而族。而和和my.look.camy.look.ca则是锚点族中不同的限定词则是锚点族中不同的限定词 族同时也是族同时也是BigtableBigtable中访问控制(中访问控制(Access ControlAccess Control)基)基本单元,也就是说

9、访问权限的设置是在族这一级别上进行的本单元,也就是说访问权限的设置是在族这一级别上进行的 BigtableBigtable的设计的数据模型的设计的数据模型-时间戳时间戳 GoogleGoogle的很多服务比如网页检索和用户的个性化设置等的很多服务比如网页检索和用户的个性化设置等都需要保存不同时间的数据,这些不同的数据版本必须通过时都需要保存不同时间的数据,这些不同的数据版本必须通过时间戳来区分。图间戳来区分。图2 2中内容列的中内容列的t3t3、t5t5和和t6t6表明其中保存了在表明其中保存了在t3t3、t5t5和和t6t6这三个时间获取的网页。这三个时间获取的网页。BigtableBigt

10、able中的时间戳是中的时间戳是6464位整位整型数,具体的赋值方式可以采取系统默认的方式,也可以用户型数,具体的赋值方式可以采取系统默认的方式,也可以用户自行定义自行定义 为了简化不同版本的数据管理,为了简化不同版本的数据管理,BigtableBigtable目前提供了两目前提供了两种设置:一种是保留最近的种设置:一种是保留最近的N N个不同版本,图中数据模型采取的个不同版本,图中数据模型采取的就是这种方法,它保存最新的三个版本数据。另一种就是保留就是这种方法,它保存最新的三个版本数据。另一种就是保留限定时间内的所有不同版本,比如可以保存最近限定时间内的所有不同版本,比如可以保存最近1010

11、天的所有不天的所有不同版本数据。失效的版本将会由同版本数据。失效的版本将会由BigtableBigtable的垃圾回收机制自动的垃圾回收机制自动处理处理 系统架构系统架构 Bigtable主要由三个部分组成主要由三个部分组成 Bigtable主要由三个部分组成:客户端程序库(主要由三个部分组成:客户端程序库(Client Library)、一个主服务器()、一个主服务器(Master Server)和多个子表服务器()和多个子表服务器(Tablet Server) 客户访问客户访问Bigtable服务时,首先要利用其库函数执行服务时,首先要利用其库函数执行Open()操作操作来打开一个锁(实际

12、上就是获取了文件目录),锁打开以后客户端来打开一个锁(实际上就是获取了文件目录),锁打开以后客户端就可以和子表服务器进行通信就可以和子表服务器进行通信 和许多具有单个主节点分布式系统一样,客户端主要与子表服务和许多具有单个主节点分布式系统一样,客户端主要与子表服务器通信,几乎不和主服务器进行通信,这使得主服务器的负载大大器通信,几乎不和主服务器进行通信,这使得主服务器的负载大大降低降低 主服务主要进行一些元数据操作以及子表服务器之间负载调度问主服务主要进行一些元数据操作以及子表服务器之间负载调度问题,实际数据是存储在子表服务器上。题,实际数据是存储在子表服务器上。 Bigtable中中Chub

13、by的作用的作用在Bigtable中Chubby主要有以下几个作用:(1)选取并保证同一时间内只有一个主服务器(Master Server)(2)获取子表的位置信息(3)保存Bigtable的模式信息及访问控制列表 另外在Bigtable的实际执行过程中,Google的MapReduce和Sawzall也被用来改善其性能 主服务器主服务器 当一个新子表产生时,主服务器通过一个加载命令将其分配给一个空当一个新子表产生时,主服务器通过一个加载命令将其分配给一个空间足够的子表服务器。创建新表、表合并以及较大子表的分裂都会产间足够的子表服务器。创建新表、表合并以及较大子表的分裂都会产生一个或多个新子表

14、。对于前面两种,主服务器会自动检测到,而较生一个或多个新子表。对于前面两种,主服务器会自动检测到,而较大子表的分裂是大子表的分裂是由子服务由子服务发起并完成的,所以主服务器并不能自动检发起并完成的,所以主服务器并不能自动检测到,因此在分割完成之后子服务器需要向主服务发出一个通知。测到,因此在分割完成之后子服务器需要向主服务发出一个通知。 由于系统设计之初就要求能达到良好的扩展性,所以主服务器必须对由于系统设计之初就要求能达到良好的扩展性,所以主服务器必须对子表服务器的状态进行监控,以便及时检测到服务器的加入或撤销。子表服务器的状态进行监控,以便及时检测到服务器的加入或撤销。 BigtableB

15、igtable中主服务器对子表服务器的监控是通过中主服务器对子表服务器的监控是通过ChubbyChubby完成的完成的子表服务器在初始化时都会从子表服务器在初始化时都会从ChubbyChubby中得到一个独占锁。通过这种中得到一个独占锁。通过这种方式所有子表服务器基本信息被保存在方式所有子表服务器基本信息被保存在ChubbyChubby中一个称为中一个称为服务器目录服务器目录(Server DirectoryServer Directory)的特殊目录之中。)的特殊目录之中。 主服务器主服务器 主服务器会定期向其询问独占锁的状态。如果子表服务器的锁丢失主服务器会定期向其询问独占锁的状态。如果子

16、表服务器的锁丢失或没有回应,则此时可能有两种情况:或没有回应,则此时可能有两种情况: (1 1)要么是)要么是ChubbyChubby出现了问题出现了问题(虽然这种概率很小,但的确存在(虽然这种概率很小,但的确存在,GoogleGoogle自己也做过相关测试);自己也做过相关测试); (2 2)要么是)要么是子表服务器自身出现了问题子表服务器自身出现了问题。对此主服务器首先自己。对此主服务器首先自己尝试获取这个独占锁,如果失败说明尝试获取这个独占锁,如果失败说明ChubbyChubby服务出现问题,需等待服务出现问题,需等待恢复;如果成功则说明恢复;如果成功则说明ChubbyChubby服务良

17、好而子表服务器本身出现了问服务良好而子表服务器本身出现了问题。题。 当在状态监测时发现某个子表服务器上负载过重时,主服务器会自当在状态监测时发现某个子表服务器上负载过重时,主服务器会自动对其进行负载均衡操作动对其进行负载均衡操作 主服务器主服务器 基于系统出现故障是一种常态的设计理念,每个主服务器被设定了一基于系统出现故障是一种常态的设计理念,每个主服务器被设定了一个会话时间的限制。当某个主服务器到时退出后,管理系统就会指定一个个会话时间的限制。当某个主服务器到时退出后,管理系统就会指定一个新的主服务器,这个主服务器的启动需要经历以下四个步骤新的主服务器,这个主服务器的启动需要经历以下四个步骤

18、: (1 1)从)从ChubbyChubby中获取一个独占锁,确保同一时间只有一个主服务器;中获取一个独占锁,确保同一时间只有一个主服务器; (2 2)扫描服务器目录,发现目前活跃的子表服务器;)扫描服务器目录,发现目前活跃的子表服务器; (3 3)与所有的活跃子表服务器取得联系以便了解所有子表的分配情况;)与所有的活跃子表服务器取得联系以便了解所有子表的分配情况; (4 4)扫描元数据表,发现未分配的子表并将其分配到合适子表服务器。)扫描元数据表,发现未分配的子表并将其分配到合适子表服务器。 子表服务器子表服务器 lBigtable中的日志文件是一种中的日志文件是一种共享日志共享日志,每个子

19、表服务器上仅,每个子表服务器上仅保存一个日志文件,某个子表日志只是这个共享日志的保存一个日志文件,某个子表日志只是这个共享日志的一个片一个片段段。这样会。这样会节省大量的空间节省大量的空间,但在恢复时却有,但在恢复时却有一定的难度。一定的难度。lGoogle为了避免这种情况出现,对日志做了一些改进。Bigtable规定将日志的内容按照键值进行排序,这样不同的子表服务器都可以连续读取日志文件了。l一般来说每个子表的大小在100MB到200MB之间。每个子表服务器上保存的子表数量可以从几十到上千不等,通常情况下是100个左右。 子表服务器子表服务器 l所有子表地址都被记录在元数据表中,元数据表也是

20、由一所有子表地址都被记录在元数据表中,元数据表也是由一个个的元数据子表(个个的元数据子表(Metadata tablet)组成)组成l根子表是元数据表中一个比较特殊的子表,它既是根子表是元数据表中一个比较特殊的子表,它既是元数元数据表的第一条记录,也包含了其他元数据子表的地址据表的第一条记录,也包含了其他元数据子表的地址,同,同时时Chubby中的一个文件也存储了这个根子表的信息。中的一个文件也存储了这个根子表的信息。l查询时,首先从查询时,首先从Chubby中提取这个根子表的地址,进中提取这个根子表的地址,进而读取所需的元数据子表的位置,最后就可以从元数据子而读取所需的元数据子表的位置,最后

21、就可以从元数据子表中找到待查询的子表。除了这些子表的元数据之外,元表中找到待查询的子表。除了这些子表的元数据之外,元数据表中还保存了其他一些有利于调试和分析的信息,比数据表中还保存了其他一些有利于调试和分析的信息,比如如事件日志事件日志等等 。 子表地址的查询是经常碰到的操作。在子表地址的查询是经常碰到的操作。在Bigtable系系统的内部采用的是一种类似统的内部采用的是一种类似B+树的三层查询体系。树的三层查询体系。 缓存和预取技术缓存和预取技术为了减少访问开销,提高客户访问效率,为了减少访问开销,提高客户访问效率,BigtableBigtable使用了缓存(使用了缓存(CacheCache

22、)和预取()和预取(PrefetchPrefetch)技术)技术 子表的地址信息被缓存在客户端,客户在寻址时直接根据缓子表的地址信息被缓存在客户端,客户在寻址时直接根据缓存信息进行查找。一旦出现缓存为空或缓存信息过时的情况,客存信息进行查找。一旦出现缓存为空或缓存信息过时的情况,客户端就需要按照图示方式进行网络的来回通信(户端就需要按照图示方式进行网络的来回通信(Network Round-Network Round-tripstrips)进行寻址,在)进行寻址,在缓存为空的情况下缓存为空的情况下需要三个网络来回通信需要三个网络来回通信。如果。如果缓存的信息是过时缓存的信息是过时的,则需要六个

23、网络来回通信。其中三的,则需要六个网络来回通信。其中三个用来确定信息是过时的,另外三个获取新的地址个用来确定信息是过时的,另外三个获取新的地址 预取则是在每次访问元数据表时不仅仅读取所需的子表元数预取则是在每次访问元数据表时不仅仅读取所需的子表元数据,而是读取多个子表的元数据,这样下次需要时就不用再次访据,而是读取多个子表的元数据,这样下次需要时就不用再次访问元数据表问元数据表 BigtableBigtable数据存储及读数据存储及读/写操作写操作 9.2 Hadoop9.2 Hadoop中的数据库中的数据库HBaseHBasel Hadoop HadoopApacheApache开源组织的一

24、个分布式计算框架,开源组织的一个分布式计算框架,可以在大量廉价的硬件设备组成的集群上运行应用程序,可以在大量廉价的硬件设备组成的集群上运行应用程序,为应用程序提供了一组稳定可靠的接口,旨在构建一个具为应用程序提供了一组稳定可靠的接口,旨在构建一个具有有高可靠性高可靠性和和良好扩展性良好扩展性的分布式系统的分布式系统 . .lHadoopHadoop优点优点l(1 1)可扩展)可扩展l(2 2)经济)经济l(3 3)可靠)可靠l(4 4)高效)高效 Hbase简介简介l Hbase是一个分布式开源数据库,基于是一个分布式开源数据库,基于Hadoop分布分布式文件系统,模仿并提供了基于式文件系统,

25、模仿并提供了基于Google文件系统的文件系统的Bigtable数据库的所有功能。数据库的所有功能。l Hbaes的目标是处理非常庞大的表,可以用普通的计的目标是处理非常庞大的表,可以用普通的计算机处理超过算机处理超过10亿行数据,并且有数百万列元素组成的数亿行数据,并且有数百万列元素组成的数据表。据表。l Hbase可以直接使用本地文件系统或者可以直接使用本地文件系统或者Hadoop作为作为数据存储方式,不过为了提高数据可靠性和系统的健壮性数据存储方式,不过为了提高数据可靠性和系统的健壮性,发挥,发挥Hbase处理大数据量等功能,需要使用处理大数据量等功能,需要使用Hadoop作为作为文件系

26、统文件系统。 Hbase数据模型数据模型lHbase是一个类似是一个类似Bigtable的分布式数据库,大部分的分布式数据库,大部分特性和特性和Bigtable一样,是一个稀疏的,长期存储一样,是一个稀疏的,长期存储的的,多维度的,排序的映射表。这张表的索引是行关键字多维度的,排序的映射表。这张表的索引是行关键字,列关键字和时间戳。每个值是一个不解释的字符数,列关键字和时间戳。每个值是一个不解释的字符数组,数据都是字符串,没类型。组,数据都是字符串,没类型。l l用户在表格中存储数据,每一行都有一个可排序的主用户在表格中存储数据,每一行都有一个可排序的主键和任意多的列。由于是稀疏存储的,所以同

27、一张表键和任意多的列。由于是稀疏存储的,所以同一张表里面的每一行数据都可以有截然不同的列。里面的每一行数据都可以有截然不同的列。l HbaseHbase数据模型数据模型l 列名字的格式是列名字的格式是:,都是由字符串,都是由字符串组成,每一张表有一个组成,每一张表有一个familyfamily集合,这个集合是固定不变集合,这个集合是固定不变的,相当于表的结构,只能通过改变表结构来改变。但是的,相当于表的结构,只能通过改变表结构来改变。但是labellabel值相对于每一行来说都是可以改变的。值相对于每一行来说都是可以改变的。l HbaseHbase把同一个把同一个familyfamily里面的

28、数据存储在同一个目录里面的数据存储在同一个目录底下,而底下,而HbaseHbase的写操作是锁行的,每一行都是一个原子的写操作是锁行的,每一行都是一个原子元素,都可以加锁。元素,都可以加锁。l 所有数据库的更新都有一个时间戳标记,每个更新都所有数据库的更新都有一个时间戳标记,每个更新都是一个新的版本,而是一个新的版本,而H Hbasebase会保留一定数量的版本,这个会保留一定数量的版本,这个值是可以设定的。客户端可以选择获取距离某个时间最近值是可以设定的。客户端可以选择获取距离某个时间最近的版本,或者一次获取所有版本。的版本,或者一次获取所有版本。 Hbase逻辑模型逻辑模型l 一个表可以想

29、象成一个大的映射关系,通过主键,或者主一个表可以想象成一个大的映射关系,通过主键,或者主键键+ +时间戳,可以定位一行数据,由于是稀疏数据,所以某些时间戳,可以定位一行数据,由于是稀疏数据,所以某些列可以是空白的列可以是空白的l 上图是一个存储上图是一个存储WebWeb网页的范例列表片断。行名是一个反网页的范例列表片断。行名是一个反向向URLURL即即n.www。contentscontents列族存放网页内容,列族存放网页内容,anchoranchor列族存放引用该网页的锚链接文本。列族存放引用该网页的锚链接文本。CNNCNN的主页被的主页被Sports IllustraterSports

30、Illustrater即所谓即所谓SISI,CNNCNN的王牌体育节目和的王牌体育节目和MY-MY-looklook的主页引用,因此该行包含了名叫的主页引用,因此该行包含了名叫“anchor:”“anchor:”和和 “anchhor:my.look.ca” “anchhor:my.look.ca”的列。每个锚链接只有一个版本的列。每个锚链接只有一个版本由时间戳标识,如由时间戳标识,如t9t9,t8t8;而;而contentscontents列则有三个版本,列则有三个版本,分别由时间戳分别由时间戳t3t3,t5t5,和,和t6t6标识。标识。 Hbase物理模型物理模型 分布式数据库体系结构分

31、布式数据库体系结构l Hbase的服务器体系结构也是遵从简单的主从服务器架构,由Hregion服务器群和HBase Master主服务器构成。lHregion服务器l 对用户来说,每个表是一堆数据的集合,靠主键来区分。物理上,一张表是被拆分成多块,每一块就称呼为一个Hregion。用表名+开始/结束主键,来区分一个Hregion,一个Hregion会保存一个表里面某段连续的数据,从开始主键到结束主键,一张完整的表格是保存在多个Hregion上面的。l 所有的数据库数据一般是保存在Hadoop分布式文件系统上面,用户通过一系列Hregion服务器获取这些数据,一般一台机器上面运行一个Hregio

32、n服务器,而每一个区段Hregion只会被一个Hregion服务器维护。l l 分布式数据库体系结构分布式数据库体系结构 当用户需要更新数据的时候,他会被分配到对应的Hregion 服务器提交修改,这些修改先是被写到Hmemcache 缓存和 服务器的Hlog文件里面,Hmemcache是在内存中的缓存,保存最近更新的数据,Hlog是磁盘上面的记录文件,它记录着所有的更新操作,当操作写入Hlog之后,commit()调用才会返回给客户端。l 当读取数据的时候,Hregion服务器会先访问Hmemcache缓存,如果缓存里面没有该数据,才回到Hstores磁盘上面寻找,每一个列族都会有一个Hst

33、ore集合,每个Hstore集合包含很多HstoreFiles具体文件,这些文件都是B树结构的,方便快速读取。 l 系统会定期调用HRegion.flushcache() 把缓存里面的内容写到文件中,一般这样会增加一个新的HstoreFile文件,而此时高速缓存就会被清空,并且写入一个标记到Hlog,表示上面的内容已经被写入到文件中保存。 分布式数据库体系结构分布式数据库体系结构l 在启动的时候,每个Hregion服务器都会检查自己的Hlog文件,看看最近一次执行flushcache之后有没有新的更新写入操作。如果没有更新,就表示所有数据都已经更新到文件中了;如果有更新,服务器就会先把这些更新

34、写入高速缓存,然后调用flushcache写入到文件。最后服务器会删除旧的Hlog文件,并开始给用户访问数据。l 因此,为了节省时间可以很少调用flushcache,但是这样会增加内存占用,而且在服务器重启的时候会延长很多时间。如果可以定期调用flushcache,缓存大小会控制在一个较低的水平,而且Hlog文件也会很快地重构,但是调用flushcache的时候会造成系统负载瞬间增加。l Hlog会被定期回滚,回滚的时候是按照时间备份文件,每当回滚的时候,系统会删除那些已经被写到文件的更新,回滚Hlog只会占用很少的时间,建议经常回滚以减少文件尺寸。l 分布式数据库体系结构分布式数据库体系结构

35、小结小结l客户端以表格的形式读取数据客户端以表格的形式读取数据l一张表是被划分成多个一张表是被划分成多个Hregion区域区域lHregion是被是被Hregion服务器管理的,当客户端需要访问服务器管理的,当客户端需要访问某行数据的时候,需要访问对应的某行数据的时候,需要访问对应的Hregion服务器。服务器。lHregions服务器里面有三种方式保存数据:服务器里面有三种方式保存数据: Hmemcache高速缓存,保留是最新写入的数据高速缓存,保留是最新写入的数据 Hlog记录文件,保留的是提交成功了,但未被写入文记录文件,保留的是提交成功了,但未被写入文件的数据件的数据 Hstores文

36、件,数据的物理存放形式。文件,数据的物理存放形式。 Hbase主服务器主服务器Hmaster l 每个每个Hregion服务器都会和服务器都会和主服务器主服务器Hmaster通讯,通讯,Hmaster的的主要任务就是要告诉每个主要任务就是要告诉每个Hregion服务器它要维护哪些服务器它要维护哪些Hregion。l Hmaster服务器会和每个服务器会和每个Hregion服务器保持一个长连接。如果服务器保持一个长连接。如果这个连接超时或者断开,会导致:这个连接超时或者断开,会导致:l Hregion服务器自动重启服务器自动重启;l Hmaster认为认为Hregion已经死机,同时把它负责的已

37、经死机,同时把它负责的Hregion分配到分配到其它其它Hregion服务器。服务器。 和和Google的的Bigtable不同的是,当不同的是,当Bigtable的的TabletServer和主和主服务器通讯中断的情况下,它仍然能提供服务。而服务器通讯中断的情况下,它仍然能提供服务。而Hbase不能这么做不能这么做,因为,因为Hbase没有没有Bigtable那样额外的加锁系统,那样额外的加锁系统,Bigtable是由主服是由主服务器管理务器管理TabletServer,同时加锁服务器提供数据访问的,而,同时加锁服务器提供数据访问的,而Hbase只有唯一一个接入点,就是只有唯一一个接入点,就

38、是Hmaster服务器。服务器。l Hbase主服务器主服务器Hmaster l 主服务器维护子表服务器在任何时刻的活跃标记主服务器维护子表服务器在任何时刻的活跃标记 l 每个子表都由它所属的表格名字、首关键字和每个子表都由它所属的表格名字、首关键字和region Idregion Id来标识来标识l例如,表名:例如,表名:hbaserepositoryhbaserepositoryl 首关键字:首关键字:w-nk5YNZ8TBb2uWFIRJo7V=w-nk5YNZ8TBb2uWFIRJo7V=l region Id region Id:689060145591-40436890601455

39、91-4043l它的唯一标识符就是:它的唯一标识符就是:lhbaserepository, w-hbaserepository, w-nk5YNZ8TBb2uWFIRJo7V=,6890601455914043nk5YNZ8TBb2uWFIRJo7V=,6890601455914043 子表服务器子表服务器 l 客户端进行更新操作时,首先连接相关的子表服务器,之后向子表客户端进行更新操作时,首先连接相关的子表服务器,之后向子表提交变更。提交的数据被添加到子表的提交变更。提交的数据被添加到子表的HMemcacheHMemcache和子表服务器的和子表服务器的HLog HLog l 提供服务时,子

40、表首先查询缓存提供服务时,子表首先查询缓存HMemcacheHMemcache。若没有,再查找磁盘。若没有,再查找磁盘上的上的HStoreHStorel HRegion.flushcache()HRegion.flushcache()定期被调用,把定期被调用,把HMemcacheHMemcache中的内容写到磁中的内容写到磁盘上盘上HStoreHStore文件里文件里 . .l 调用调用flushcache()flushcache()方法越少,工作量就越少,而方法越少,工作量就越少,而HMemcacheHMemcache就要占就要占用更多的内存空间,启动时用更多的内存空间,启动时HLogHLo

41、g文件也需要更多的时间来恢复数据文件也需要更多的时间来恢复数据。而调用。而调用flushcache()flushcache()越频繁,越频繁,HMemcacheHMemcache占用内存就越少,占用内存就越少,HLogHLog文文件恢复数据时也就越快件恢复数据时也就越快 . .l 调用调用HSpact()HSpact()方法来实现多个方法来实现多个HStoreFileHStoreFile合并成一个合并成一个HStoreFileHStoreFile l HRegion.closeAndMerge()HRegion.closeAndMerge()可把两个子表合并成一个;可把两个子表合并成一个;HR

42、egion. HRegion. closeAndSplit()closeAndSplit(),可将子表分割为,可将子表分割为两个新子表两个新子表 元数据表元数据表 Hbase和传统关系数据库的对比分析和传统关系数据库的对比分析l Hbase是大大不同于以前的关系数据库,它是按照是大大不同于以前的关系数据库,它是按照Bigtable来来开发的,开发的,Bigtable是一个稀疏的,分布的,持续多维度的排序映射是一个稀疏的,分布的,持续多维度的排序映射数组。数组。l Hbase就是这样一个基于列模式的映射数据库,它只能表示很就是这样一个基于列模式的映射数据库,它只能表示很简单的键简单的键-数据的映

43、射关系,它大大简化了传统的关系数据库。数据的映射关系,它大大简化了传统的关系数据库。l Hbase和传统关系数据库和传统关系数据库的不同主要体现在:的不同主要体现在:l1. 数据类型数据类型 l Hbase只有简单的字符串类型,所有类型都是交由用户自己处只有简单的字符串类型,所有类型都是交由用户自己处理,它只保存字符串。而关系数据库有丰富的类型选择和存储方式理,它只保存字符串。而关系数据库有丰富的类型选择和存储方式。 .数据操作,数据操作,Hbase操作只有很简单的插入、查询、删除、清空操作只有很简单的插入、查询、删除、清空等,表和表之间是分离的,没有复杂的表和表之间的关系,所以也等,表和表之

44、间是分离的,没有复杂的表和表之间的关系,所以也不能也没有必要实现表和表之间的关联等操作。而传统的关系数据不能也没有必要实现表和表之间的关联等操作。而传统的关系数据通常有各种各样的函数、连接操作。通常有各种各样的函数、连接操作。l Hbase和传统关系数据库的对比分析和传统关系数据库的对比分析 3.存储模式存储模式 Hbase是基于列存储的,每个列族都有几个文件保存,不同是基于列存储的,每个列族都有几个文件保存,不同列族的文件是分离的。传统的关系数据库是基于表格结构和行模列族的文件是分离的。传统的关系数据库是基于表格结构和行模式保存的。式保存的。 4.数据维护数据维护 Hbase的更新正确来说应

45、该不叫更新,而且一个主键或者列的更新正确来说应该不叫更新,而且一个主键或者列对应的新的版本,而它旧有的版本仍然会保留,所以它实际上是对应的新的版本,而它旧有的版本仍然会保留,所以它实际上是插入了新的数据,而不是传统关系数据库里面的替换修改。插入了新的数据,而不是传统关系数据库里面的替换修改。 5.可伸缩性可伸缩性 Hbase和和Bigtable这类分布式数据库就是直接为了这个目的这类分布式数据库就是直接为了这个目的开发出来的,能够轻易的增加或者减少(在硬件错误的时候)硬开发出来的,能够轻易的增加或者减少(在硬件错误的时候)硬件数量,而且对错误的兼容性比较高。而传统的关系数据库通常件数量,而且对

46、错误的兼容性比较高。而传统的关系数据库通常需要增加中间层才能实现类似的功能。需要增加中间层才能实现类似的功能。 Hbase和传统关系数据库的对比分析和传统关系数据库的对比分析l 当前的关系数据库基本都是从上世纪当前的关系数据库基本都是从上世纪70年代发展而来的,它们基年代发展而来的,它们基本都有一下的体系特点:本都有一下的体系特点:l面向磁盘存储和索引结构面向磁盘存储和索引结构l多线程访问多线程访问l基于锁的同步访问机制基于锁的同步访问机制l基于基于log记录的恢复机制记录的恢复机制l 而而Bigtable和和Hbase之类基于列模式的分布式数据库,更适应海之类基于列模式的分布式数据库,更适应

47、海量存储和互联网应用的需求,灵活的分布式架构可以使其利用廉价的量存储和互联网应用的需求,灵活的分布式架构可以使其利用廉价的硬件设备就组建一个大的数据仓库,而互联网应用就是以字符为基础硬件设备就组建一个大的数据仓库,而互联网应用就是以字符为基础的,的,Bigtable和和Hbase就针对这些应用而开发出来的数据库。就针对这些应用而开发出来的数据库。l 由于其中的时间戳特性,由于其中的时间戳特性,Bigtable和和Hbase与生俱来就特别适合与生俱来就特别适合于开发于开发wiki、archiveorg之类的服务,而之类的服务,而Hbase直接就是作为一个搜直接就是作为一个搜索引擎的一部分被开发出

48、来的。索引擎的一部分被开发出来的。 9.3 Amazon9.3 Amazon云计算中的简单数据服务云计算中的简单数据服务Simple DBSimple DB SDBSDB树状组织方式树状组织方式 9.4 Amazon9.4 Amazon云计算中的中的关系数据库服务云计算中的中的关系数据库服务RDSRDS RDSRDS数据库原理数据库原理 集群MySQL通过主从备份和读副本技术提高可靠性和数据处理能力 RDS RDS的使用的使用 l AmazonAmazon将将RDSRDS中的中的MySQLMySQL服务器实例称做服务器实例称做DB InstanceDB Instance,通过基于通过基于Web

49、Web的的APIAPI进行创建和管理,其余的操作可以通过进行创建和管理,其余的操作可以通过标准的标准的MySQLMySQL通信协议完成通信协议完成 . .l 可以通过两种工具对可以通过两种工具对RDSRDS进行操作进行操作: :l命令行工具:命令行工具:AmazonAmazon提供的提供的JavaJava应用套装,负责处理应用套装,负责处理DB DB InstanceInstance的管理,比如创建、参数调整、删除等的管理,比如创建、参数调整、删除等. .lMySQLMySQL客户端:可以与客户端:可以与MySQLMySQL服务器进行通信的应用程序服务器进行通信的应用程序,比如,比如MySQL

50、 AdministratorMySQL Administrator客户端客户端. . 9.59.5 微软云计算中的数据库微软云计算中的数据库SQL AzureSQL Azure 微软云平台微软云平台 Windows AzureWindows Azure属于属于PaaSPaaS模式,平台包括一个云计算操作系统和一系列模式,平台包括一个云计算操作系统和一系列为开发者提供的服务为开发者提供的服务(1 1)Windows Azure Windows Azure 云计算平台最底层,微软云计算操作系统,提云计算平台最底层,微软云计算操作系统,提供了一个在微软数据中心服务器上运行应用程序和存储数据的供了一个

51、在微软数据中心服务器上运行应用程序和存储数据的WindowsWindows环境环境(2 2)SQL Azure SQL Azure 云中关系数据库,为云中基于云中关系数据库,为云中基于SQL ServerSQL Server的关系型的关系型数据提供服务数据提供服务(3 3)Windows Azure AppFabric Windows Azure AppFabric 为在云中或本地系统中的应用提为在云中或本地系统中的应用提供基于云的基础架构服务。部署和管理云基础架构的工作均由供基于云的基础架构服务。部署和管理云基础架构的工作均由AppFabricAppFabric完成,开发者只需要关心应用逻辑。完成,开发者只需要关心应用逻辑。(4 4)Windows Azure Marketplace Windows Azure Marketplace 为购买云计算环境下的数据和为购买云计算环境下的数据和应用提供在线服务应用提供在线服务 SQ

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论