大数据培训Module06HBase架构原理课件.pptx(纯ppt,可能不含音视频素材)
- 【下载声明】
1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
3. 本页资料《大数据培训Module06HBase架构原理课件.pptx(纯ppt,可能不含音视频素材)》由用户(晟晟文业)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据 培训 Module06HBase 架构 原理 课件
- 资源描述:
-
1、版权所有 2015 华为技术有限公司HBase介绍前言版权所有 2015 华为技术有限公司第1页HBase是一个高可靠性、高性能、面向列、可伸缩的分布式 数据库,设计目标是用来解决关系型数据库在处理海量数据 时的局限性。本章主要介绍HBase的应用场景、功能与架构、关键流程、常用命令和参数。目标版权所有 2015 华为技术有限公司第2页学完本课程后,您将能够:了解HBase的组成架构熟悉HBase的基本功能目录版权所有 2015 华为技术有限公司第3页1.1.HBasHBase e应用场景应用场景2.2.HBasHBase e功功能能与与架构架构3.3.HBaseHBase关键流程关键流程4.
2、4.HBasHBase e常用命常用命令令和和参数参数简介版权所有 2015 华为技术有限公司第4页HBase是一个开源的非关系型分布式数据库(NoSQL),它 参考了谷歌的BigTable建模,实现的编程语言为 Java。HBase是一个分布式存储系统,具有高可靠性、高性能、面向列、可伸缩的特点。HBase利用Hadoop HDFS作为其文件存储系统需求场景版权所有 2015 华为技术有限公司第5页HBasHBase e适合具适合具有有如如下需下需求求的应的应用用:海量数据(TB、PB)高吞吐量需要在海量数据中实现高效的随机读取需要很好的性能伸缩能力能够同时处理结构化和非结构化的数据不需要完
3、全拥有传统关系型数据库所具备的ACID特性谁在用HBase?版权所有 2015 华为技术有限公司第6页目录版权所有 2015 华为技术有限公司第7页1.1.HBasHBase e应用场景应用场景2.2.HBasHBase e功功能能与与架构架构3.3.HBaseHBase关键流程关键流程4.4.HBasHBase e常用命常用命令令和和参数参数部署架构 架构版权所有 2015 华为技术有限公司第8页HBase模块 RegionRow001 Row002.Row010Row011 Row012.Row020Row021Row022.Row030Row031.Region-1StartKey,En
4、dKeyRegion-2StartKey,EndKeyRegion-3StartKey,EndKeyRegion-4StartKey,EndKey 将一个数据表按Key值范围横向划分为一个个 的子表,实现分布式存储。这个子表,在HBase中被称作“Region”。每一个Region都关联一个Key值范围,即一个 使用StartKey和EndKey描述的区间。事实上,每 一个Region仅仅记录StartKey就可以了,因为它 的EndKey就是下一个Region的StartKey。Region是HBase分布式存储的最基本单元。TableName?StartKey?Region版权所有 201
5、5 华为技术有限公司第9页Row001Row002.Row010Row011Row012.Row020Row021Row022.Row030Row031.HBase模块 Region与RegionServerRegionServer是HBase的数据服务进程。负责处理 用户数据的读写请求。Region被交由RegionServer管理。实际上,所有 用户数据的读写请求,都是和RegionServer上的 Region进行交互。Region可以在RegionServer之间发生转移。RegionRegionRegionServer思考:一个R Re eg gi io on n包含了一个S Sta
6、tar rtktke ey y和E En nd dK Ke ey y范围;一条用户数据K Ke ey yV Val alu ue e必然属于一个唯一的R Re eg gi io on n;R Re eg gi io on n由R Re eg gi io on nSeSer rv ve er r来管理,那么,这个路由信 息保存在哪里呢?R Re eg gi io on n如何才可以转移?由谁负责转移?Region版权所有 2015 华为技术有限公司第10页HBase模块 Region分类Region分为元数据Region以及用 户Region两类。Meta Region记录了每一个User Re
7、gion的路由信息。读写Region数据的路由,包括如下 几步:找寻Meta Region地址。再由Meta Region找寻User Region地址。RegionRegionRegionRegionRegionMETARegion版权所有 2015 华为技术有限公司第11页HBase模块 HMaster Master进程负责管理所有的RegionServer。新RegionServer的注册。RegionServer Failover处理。负责建表/修改表/删除表以及一些集群操作。Master进程负责所有Region的转移操作。新表创建时的Region分配。运行期间的负载均衡保障。Regi
8、onServer Failover后的Region接管。Master进程有主备角色。集群可以配置多个 Master角色,集群启动时,这些Master角色通过竞 争获得主Master角色。主Master只能有一个,所有 的备Master进程在集群运行期间处于休眠状态,不 干涉任何集群事务。疑问:主备Master进程角色是如何进行裁决的?RegionServerRegionServerRegionServer“Hey,Region-A!Please move to RegionServer2!”“RegionServer1 was gone!Let others take control of i
9、t!”“Good!1 new RegionServer iscoming.”版权所有 2015 华为技术有限公司第12页HBase模块 Zookeeper 提供分提供分布式锁的服务布式锁的服务例如例如,多个Master进程竞争主Master角色时,怎么样 保证仅有一个Active角色存在?这就需要一个分布式的 锁机制来保证。多个Master进程都尝试着去 ZooKeeper中写入一个对应的节点,该节点只能被一个 Master进程创建成功,创建成功的Master进程就是 Active角色。提供了提供了事件监听机制事件监听机制例如例如,主Master进程宕掉之后,其它的备Master如何 能够快速
10、的接管?这个过程中,备Master在监听那个 对应的ZooKeeper节点。主Master进程宕掉之后,该 节点会被删除,那么,其它的备Master就可以收到相 应的消息。个别场个别场景,可充当一个微型数据库角色景,可充当一个微型数据库角色例如例如,在ZooKeeper中存放了Region Server的地址,此时,可以将它理解成一个微型数据库。“Master-1,Congratulations!You are the active one!”“Sorry,Master-2.The active seat has been taken by others.Please be patient!”
11、版权所有 2015 华为技术有限公司第13页数据结构介绍 三种结构具有固具有固定的结构,属性划分,以及类型等信定的结构,属性划分,以及类型等信息息。我们通常所理解的关系 型数据库中所存储的数据信息,大多是结构化数据,如职工信息表,拥 有ID、Name、Phone、Address等属性信息。通常直接存放在数据库表中。数据记录的每一个属性对应数据表的一个 字段。结构化数据非结构化数据版权所有 2015 华为技术有限公司第14页半结构化数据无法用无法用统一的结构来表统一的结构来表示示,如文本文件、图像、视频、声音、网页等信 息。数据记录较小时(如KB级别),可考虑直接存放到数据库表中(整条记录 映射
12、到某一个列中),这样也有利于整条记录的快速检索。数据较大时,通常考虑直接存放在文件系统中。数据库可用来存放相关 数据的索引信息。具有一定的结构,但又有一定的灵活可变性具有一定的结构,但又有一定的灵活可变性。典型如XML、HTML等数 据。其实也是非结构化数据的一种。可以考虑直接转换成结构化数据进行存储。根据数据记录的大小和特点,选择合适的存储方式。这一点与非结构化 数据的存储类似。数据结构介绍 按行存储按列存储IDIDN Na amemeA Ad dd dr re essssPhPhoneone按行存按行存储储:数据按行存储在底层文件系统中。通常,每一 行会被分配固定的空间。优点优点:有利于增
13、加/修改整行记录等操作;有利于整行数据的读取操作;缺点缺点:单列查询时,会读取一些不必要 的数据。按列存按列存储储:数据以列为单位,存储在底层文件系统中。优点优点:有利于面向单列数据的读取/统计等操作。缺点缺点:整行读取时,可能需要多次I/O操 作。可以看可以看出,无论是按行存储,还是按列存储,出,无论是按行存储,还是按列存储,都有明显的优缺点。是否存在一种折衷的方案?都有明显的优缺点。是否存在一种折衷的方案?版权所有 2015 华为技术有限公司第15页IDNamePhoneAddress数据结构介绍 KeyValue结构(1)IDIDN Na amemeA Ad dd dr re essss
14、PhPhoneoneKeyValue具有特定的结构。Key部分被用来快速的检索一条数据记录,Value部分用来存储实际的用户数据信息。KeyValue作为承载用户数据的基本单元,需要保存一些对自身的描述信息,例如,时间戳,类型等等。那么,势必 会有一定的结构化空间开销。一个Key值对应一个Value?还是一个Key值可以对应多个Value?V Val alu ue e-I ID01D01K Ke ey y-0101V Val alu ue e-NaNamme e0101K Ke ey y-0101V Val alu ue e-PhoPhon ne e0101K Ke ey y-0101V Va
15、l alu ue e-A Ad dd dr re essss0101K Ke ey y-0101版权所有 2015 华为技术有限公司第16页R Re el latati ionalonal DataDatab baseaseK Ke ey yV Va al lueue DataDatab baseaseDatabase contains tables,tables contain columns and rows,and rows are made up of column values.Rows within a table all have the same schema.The data
16、 model is well defined in advance.A schema is strongly typed and it has constraints and relationships that enforce data integrity.The data model is based on a“natural”representation of the data it contains,not on an applications functionality.The data model is normalized to remove data duplication.N
17、ormalization establishes table relationships.Relationships associate data between tables.Domains can initially be thought of like a table,but unlike a table you dont define any schema for a domain.A Domain is basically a bucket that you put items into.Items within a single domain can have differing
18、schemas.Items are identified by keys,and a given item can have a dynamic set of attributes attached to it.In some implementations,attributes are all of a string type.In other implementations,attributes have simpletypes that reflect code types,such as ints,string arrays,and lists.No relationships are
19、 explicitly defined between domains or within a given domain.数据结构介绍 KeyValue结构(2)初始运行阶段,将Hash环划分为几个相等弧长 的区间,每一个Hash区间对应一个Node。对用户数据KeyValue的Key值进行Hash,落到 哪个Hash区间,就属于哪个Node。节点出现宕机时,将由该节点顺时针方向的下 一个节点接管相应的数据,避免出现大范围的Re-Hash操作。新节点加入时,从上一个节点到新节点之间的 数据,需要Re-Hash到新的节点中。一致性Hash尽管一定程度上可以保证负载的均 匀性,但在节点频繁宕机,或
20、频繁重启的情形下,可能会导致负载的极不均匀。版权所有 2015 华为技术有限公司第17页KeyValue型数据库数据分区方式-一致性Hash分区数据结构介绍 KeyValue结构(3)0102050603040708091011121314151601050206091310140307111504081216数据按照RowKey的范围(按一定的排序算法排序的结果,如按RowKey的字典顺序),划分为一个个的子区间。每 一个子区间都是一个分布式存储的基本单元版权所有 2015 华为技术有限公司第18页Node1Node2Node3Node4KeyValue型数据库数据分区方式-按Key值连续范
21、围分区HBase数据模型 Column Family/hbase/table/region-1/region-2/region-3HDFSColumnFamily是Region的一个物理存储单元。同一个Region下面的多个ColumnFamily,位于不同的路径下面。ColumnFamily信息是表级别的配置。也就是说,同一个表的多个Region,都拥有相同的ColumnFamily信息(例如,都有两个ColumnFamily,且不同Region的同一个ColumnFamily配置信息相同)/hbase/table/region-1/ColumnFamily-1/region-1/Colum
22、nFamily-2/region-2/ColumnFamily-1/region-2/ColumnFamily-2/region-3/ColumnFamily-1/region-3/ColumnFamily-2RegionRegionRegionRegion思考:ColumnFamily=HBase面向列存储?版权所有 2015 华为技术有限公司第19页HBase数据模型 KeyVaueHBase的底层数据都是以KeyValue的形式存在的。KeyValue具有特定的格式。KeyValue中拥有时间戳、类型等关键信息。同一个Key值可以关联多个KeyValue,每一个KeyValue都拥有一个
23、Qualifier标识。即使是Key值相同,Qualifier也相同的多个KeyValue,也可能有多个,此时使用时间戳来区分,这就是同一条 数据记录的多版本多版本。/hbase/table/region-1/ColumnFamily-1/region-1/ColumnFamily-2/region-2/ColumnFamily-1/region-2/ColumnFamily-2/region-3/ColumnFamily-1/region-3/ColumnFamily-2HFile版权所有 2015 华为技术有限公司第20页HBase数据模型 HFile从从H HF Fil ile e文文件
24、中读取数据的流程件中读取数据的流程:Trailer版权所有 2015 华为技术有限公司第21页Root Data IndexMeta IndexFileInfo.Leaf Data IndexLeaf Data IndexLeaf Data IndexData BlockData BlockData Block目录版权所有 2015 华为技术有限公司第22页1.HBase应用应用场场景景2.HBase功能与架构3.HBase关键流程关键流程4.HBase常用常用命命令令和和参数参数写流程 涉及的关键角色R Re egigio on nReReg gionServerionServerZooZo
25、oK Ke ee ep pe er rClClientient版权所有 2015 华为技术有限公司第23页写流程 客户端发起写数据请求Client客户端写数客户端写数据据代代码示码示例例:/初始化配置信息Configuration conf=HBaseConfiguration.create();/插入一行数据HTable table=new HTable(conf,tableName);Put put=new Put(Bytes.toBytes(012005000201);put.add(FAMILIES,Bytes.toBytes(name),Bytes.toBytes(张三);put.a
展开阅读全文