云计算:云存储与NoSQL数据库_第1页
云计算:云存储与NoSQL数据库_第2页
云计算:云存储与NoSQL数据库_第3页
云计算:云存储与NoSQL数据库_第4页
云计算:云存储与NoSQL数据库_第5页
已阅读5页,还剩41页未读 继续免费阅读

下载本文档

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

文档简介

1、云存储与NoSQL数据库AWS EBSn EBS弹性块存储-虽然EC2携带一个存储模块,但其是临时存储空间-EBS专门与EC2配合使用-允许用户创建卷,每个卷可以作为一个设备挂载到任何一个EC2实例上-每个EBS最多可创建20个卷-挂载后可以像使用EC2的固有存储模块一样来使用-EC2实例终止后,EBS上的数据会继续保留AWS S3n S3系统架构在Dynamo之上n 不是传统的关系数据库系统存储n 基本概念:对象、键、桶 对象:对象是S3的基本存储单元;由两部分组成:数据和元数据; 数据可以是任何类型;元数据是描述数据的数据,与具体数据相关联。 元数据通过Name-Value集合来定义;S3

2、元数据由用户自行处理,系统不干预; 键:对象的唯一标识符。 桶:用来存储对象的容器,类似于文件夹;桶的名字必须全局唯一,单个用户最多可创建100个桶;桶不能嵌套创建;AWS S3n S3的存储模型n S3的主要操作-Get-Put-List-Delete-Headn S3的数据一致性模型-采用冗余存储方式-采用最终一致性模型n S3的访问控制n S3常用API CreateBucket 创建桶 DeleteBucket 删除桶 ListAllMyBucket 列出用户所拥有的桶 SetBucketAccessControlPolicy 设置控制策略 GetObject PutObject Co

3、pyObject DeleteObject GetObjectAccessControlPolicy SetObjectAccessControlPolicyEBS与S3的区别n 两者的异同在于:EBS仅能与EC2实例结合使用,而S3无此限制;数据传出:两者数据传出至Internet的费用目前一致;S3可与CloudFront(CDN)结合使用,在某些情况下提高访问速度;存储:EBS的卷存储按每月预置的GB量计费,无论使用与否,而S3按照实际使用GB量收费;请求:EBS按卷的I/O请求进行收费,S3对GET及所有其他请求按次数进行收费,对于小文件S3的请求费用甚至会高于传输费用;S3的数据存储

4、相对更为可靠,S3通过冗余方式将数据同步到多个设备,而EBS卷的持久性取决于卷大小和自上次快照后数据更新的比例,因此EBS提高持久性需定期快照至S3;引自http:/ SimpleDBn 简单数据库服务SimpleDB:主要用于存储结构化数据,提供数据查找、删除等基本数据库功能;n 一般与EC2S3ESB组合使用n 与关系数据库的比较: 无需定义模式 单个属性允许多个值 支持自动索引 但是,不支持事务 不支持join操作 实际存储的数据类型过于单一 查询结构只包括条目名称,不包括相应属性值 返回结果不支持排序操作n SimpleDB概念模型n 域:数据容器,是具有一定关联关系的字符串的容器(S

5、DB的数据以字符串形式存储);n 用户账户中的域名必须唯一,最多可有100个域。n 所有查询都只能在一个域内进行,无法跨域操作n 条目:实际存储对象,由一系列的属性描述,即条目是属性的集合n 属性:条目的特征,每个属性都是对条目某个方面特性的概括性描述。每个条目都可以有多个属性。属性的操作是自由的。n 值:每个条目的某个属性的具体内容就是值Hbasen Hbase是一个分布式开源数据库,基于Hadoop分布式文件系统,模仿并提供了基于Google文件系统的Bigtable数据库的所有功能。为什么需要为什么需要HBASEn 数据库系统已无法适应大型分布式数据存储的需要数据库系统已无法适应大型分布

6、式数据存储的需要n 改良的关系数据库(副本、分区等)难于安装与维护改良的关系数据库(副本、分区等)难于安装与维护n 关系模型对数据的操作使数据的存贮变得复杂关系模型对数据的操作使数据的存贮变得复杂主要特点主要特点n HBASE从设计理念上就为可扩展做好了充分准备从设计理念上就为可扩展做好了充分准备n Column-orientedn 空间的扩展只需要加入存储结点空间的扩展只需要加入存储结点n 使用使用表表的概念,但不同于关系数据库,不支持的概念,但不同于关系数据库,不支持SQLn 它又不适合事务处理它又不适合事务处理n 实质上是一张极大的、非常稀疏的,存储在分布式文件系统上的表实质上是一张极大

7、的、非常稀疏的,存储在分布式文件系统上的表Page 11Page 12HBase历史历史n 2006年底由PowerSet 的Chad Walters和Jim Kellerman 发起n 2008年成为Apache Hadoop的一个子项目n 现已作为产品被使用n WorldLingon Sn OpenPlacesn Yahoon AdobeHBASEHBASE用例用例WebTableWebTablen 存储抓取网页和相关信息n 每个页面对应一行,是个有百万行的大表n 要基于此表进行分析与解析并由搜索引擎对关键字进行索引n 表需要并发地被众多网页抓取程序随机地访问以及更新数据n 表内容也要作为

8、网页实时缓存被大量用户随机访问逻辑视图逻辑视图Row KeyTime StampColumn ContentsColumn AnchorColumn “mime”my.look.ca“n.www”T9CNNT8CNN.COMT6“. “Text/htmlT5“. “t3“. “RowKeyRow Keyn 与nosql数据库们一样,row key是用来检索记录的主键。访问hbase table中的行,只有三种方式: 1 通过单个row key访问 2 通过row key的range 3 全表扫描n Row key行键 (Row key)可以是任意字符串(最大长度是 64KB,实际应用中长度一般

9、为 10-100bytes),在hbase内部,row key保存为字节数组。n 存储时,数据按照Row key的字典序(byte order)排序存储。设计key时,要充分排序存储这个特性,将经常一起读取的行存储放到一起。(位置相关性)注意:注意:n 行的一次读写是原子操作 (不论一次读写多少列)。这个设计决策能够使用户很容易的理解程序在对同一个行进行并发更新操作时的行为。Page 16数据模型行数据模型行n 每行数据有一可排序的关键字和任意列项n 字符串、整数、二进制串甚至与串行化的结构都可以作为行键n 表按照行键的“逐字节排序”顺序对行进行有序化处理n 表内数据非常稀疏,不同的行的列的数

10、完全目可以大不相同n 可以只对一行上“锁”n 对行的写操作是始终是“原子”的数据模型行数据模型行Row KeyTime StampColumn ContentsColumn AnchorColumn “mime”my.look.ca“n.www”T9CNNT8CNN.COMT6“. “Text/htmlT5“. “t3“. “行键列列数据模型列数据模型列n 列必须用族(family)来定义n 任意一列有如下形式“族:标签”其中,族和标签都可为任意形式的串n 物理上将同“族”数据存储在一起n 数据可通过时间戳区分版本n 列族列族n hbase表中的每个列,都归属与某个列族。列族是表的chema的

11、一部分(而列不是),必须在使用表之前定义。列名都以列族作为前缀。例如courses:history,courses:math都属于courses 这个列族。n 访问控制、磁盘和内存的使用统计都是在列族层面进行的。实际应用中,列族上的控制权限能帮助我们管理不同类型的应用:我们允许一些应用可以添加新的基本数据、一些应用可以读取基本数据并创建继承的列族、一些应用则只允许浏览数据(甚至可能因为隐私的原因不能浏览所有数据)。Page 20n 列族列族n hbase表中的每个列,都归属与某个列族。列族是表的chema的一部分(而列不是),必须在使用表之前定义。列名都以列族作为前缀。例如courses:hi

12、story,courses:math都属于courses 这个列族。n 访问控制、磁盘和内存的使用统计都是在列族层面进行的。实际应用中,列族上的控制权限能帮助我们管理不同类型的应用:我们允许一些应用可以添加新的基本数据、一些应用可以读取基本数据并创建继承的列族、一些应用则只允许浏览数据(甚至可能因为隐私的原因不能浏览所有数据)。Page 21数据模型列数据模型列Row KeyTime StampColumn ContentsColumn AnchorColumn “mime”my.look.ca“n.www”T9CNNT8CNN.COMT6“. “Text/htmlT5“. “t3“. “族标

13、签物理视图物理视图Row KeyTime StampColumn: ContentsCn.wwwT6“.”T5“.”T3“.”Row KeyTime StampColumn: AnchorCn.wwwT9Anchor:CNNT5Anchor:my.look.caCNN.COMRow KeyTime StampColumn: mimeCn.wwwT6text/htmlHTable小结小结Row KeyTime StampColumn ContentsColumn AnchorColumn “mime”my.look.ca“n.www”T9CNNT8CNN.COMT6“. “Text/htmlT5

14、“. “t3“. “HBASE物理存储n 1 已经提到过,Table中的所有行都按照row key的字典序排列。n 2 Table 在行的方向上分割为多个Hregion。n 3 region按大小分割的,每个表一开始只有一个region,随着数据不断插入表,region不断增大,当增大到一个阀值的时候,Hregion就会等分会两个新的Hregion。当table中的行不断增多,就会有越来越多的Hregion。Page 25n 4 HRegion是Hbase中分布式存储和负载均衡的最小单元。最小单元就表示不同的Hregion可以分布在不同的HRegion server上。但一个Hregion是不

15、会拆分到多个server上的。Page 26n 5 HRegion虽然是分布式存储的最小单元,但并不是存储的最小单元。 HRegion由一个或者多个Store组成,每个store保存一个columns family。 每个Strore又由一个memStore和0至多个StoreFile组成。 StoreFile以HFile格式保存在HDFS上。Page 27Page 28HFile分为六个部分:n Data Block 段保存表中的数据,这部分可以被压缩n Meta Block 段 (可选的)保存用户自定义的kv对,可以被压缩。n File Info 段Hfile的元信息,不被压缩,用户也可以

16、在这一部分添加自己的元信息。n Data Block Index 段Data Block的索引。每条索引的key是被索引的block的第一条记录的key。n Meta Block Index段 (可选的)Meta Block的索引。n Trailer这一段是定长的。保存了每一段的偏移量,读取一个HFile时,会首先读取Trailer,Trailer保存了每个段的起始位置(段的Magic Number用来做安全check),然后,DataBlock Index会被读取到内存中,这样,当检索某个key时,不需要扫描整个HFile,而只需从内存中找到key所在的block,通过一次磁盘io将整个bl

17、ock读取到内存中,再找到需要的key。DataBlock Index采用LRU机制淘汰。n HFile的Data Block,Meta Block通常采用压缩方式存储,压缩之后可以大大减少网络IO和磁盘IO,随之而来的开销当然是需要花费cpu进行压缩和解压缩。目标Hfile的压缩支持两种方式:Gzip,Lzo。Page 29HFILEPage 30HLogHLog(WAL log)n WAL 意为Write ahead log(Write-ahead_logging),类似mysql中的binlog,用来做灾难恢复时用,Hlog记录数据的所有变更,一旦数据修改,就可以从log中进行恢复。n

18、每个Region Server维护一个Hlog,而不是每个Region一个。这样不同region(来自不同table)的日志会混在一起,这样做的目的是不断追加单个文件相对于同时写多个文件而言,可以减少磁盘寻址次数,因此可以提高对table的写性能。带来的麻烦是,如果一台region server下线,为了恢复其上的region,需要将region server上的log进行拆分,然后分发到其它region server上进行恢复。n HLog文件就是一个普通的Hadoop Sequence File,Sequence File 的Key是HLogKey对象,HLogKey中记录了写入数据的归属

19、信息,除了table和region名字外,同时还包括 sequence number和timestamp,timestamp是”写入时间”,sequence number的起始值为0,或者是最近一次存入文件系统中sequence number。HLog Sequece File的Value是HBase的KeyValue对象,即对应HFile中的KeyValue。Page 31HBASE体系构架Page 32HBASE系统构架Page 33Page 34区域的管理区域的管理n 区域服务器区域服务器(Region Server)n 为区域的访问提供服务,直接为用户提供服务为区域的访问提供服务,直接

20、为用户提供服务n 负责维护区域的分割负责维护区域的分割n 负责数据存持久化负责数据存持久化n 主服务器主服务器(Master Server)n 管理区域服务器管理区域服务器n 指派区域服务器对服务特定区域指派区域服务器对服务特定区域n 恢复失效的区域服务器恢复失效的区域服务器特殊目录数据特殊目录数据n 元数据元数据(META)n 全部用户区域的属性数据都存在元数据表中全部用户区域的属性数据都存在元数据表中n 包括区域中数据起止行信息、区域包括区域中数据起止行信息、区域“在线在线”状态等状态等n 保存区域服务器地址保存区域服务器地址n 元数据表也可包含多个区域,区域属性数据存储在元数据表也可包含

21、多个区域,区域属性数据存储在“根根”结点上结点上特殊目录数据特殊目录数据n “根根”表表(ROOT)n 只存包含一个区域只存包含一个区域n 将元数据中的区域映射到区域服务器将元数据中的区域映射到区域服务器n 存储元数据服务器位置以及映射了哪些元数据区域存储元数据服务器位置以及映射了哪些元数据区域区域服务器区域服务器(Region Server)职能职能n 负责处理用户的读写请求负责处理用户的读写请求n 向主服务器向主服务器(Master Server)上报自己的状态,并获取自己需要服务上报自己的状态,并获取自己需要服务的区域的区域n 为提高效率,消息通过捎带为提高效率,消息通过捎带(pigba

22、ck)方式通过方式通过“心跳心跳”分组进行传分组进行传递递区域服务器区域服务器“写写”n 写数据首先写入写数据首先写入“预写预写”日志日志n 对于一个区域服务器而言,对其提供服务的所有区域的对于一个区域服务器而言,对其提供服务的所有区域的“写写”操作日操作日志都存储在同一个日志中志都存储在同一个日志中n 数据并非直接写文件系统,而是先缓存,缓存到一定数量再批量写入数据并非直接写文件系统,而是先缓存,缓存到一定数量再批量写入n 写入完成后在日志中做标记写入完成后在日志中做标记区域服务器区域服务器“读读”n 区域服务器现在内存的缓存中查找,如果命中请求,则直接服务区域服务器现在内存的缓存中查找,如

23、果命中请求,则直接服务n 如果存在多个版本,则返回顺序按照从最新到最老如果存在多个版本,则返回顺序按照从最新到最老区域服务器合并区域服务器合并n 如果映射文件如果映射文件(Map File)数量超过阈值,区域服务器会进行一次合并数量超过阈值,区域服务器会进行一次合并(Compaction)n 合并操作也周期性进行合并操作也周期性进行n 合并可与区域服务器响应用户的读写请求并发进行合并可与区域服务器响应用户的读写请求并发进行n 如果读写请求与合并区域相关,读写操作先挂起,直到合并操作完成如果读写请求与合并区域相关,读写操作先挂起,直到合并操作完成区域服务器分割区域服务器分割n 当区域文件大过阈值后,区域文件会按照行的方式对半进行分割当区域文件大过阈值后,区域文件会按照行的方式对半进行分割(Split)操作操作n 分割也作为一种请求被区域服务器处理分割也作

温馨提示

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

评论

0/150

提交评论