HBase完整版课件全书电子教案.pptx
《HBase完整版课件全书电子教案.pptx》由会员分享,可在线阅读,更多相关《HBase完整版课件全书电子教案.pptx(135页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、CONTENTS第一章第一章 HBase介绍介绍ITEMS1 第二章第二章 HBase模型和系统架构模型和系统架构ITEMS2第三章第三章 HBase数据读写流程数据读写流程ITEMS3 第四章第四章 HBase环境搭建环境搭建ITEMS4第五章第五章 HBase ShellITEMS5 第六章第六章 HBase程序开发程序开发 ITEMS6第七章第七章 HBase高级特性高级特性ITEMS7 第八章第八章 MapReduce On HBaseITEMS81 HBase介绍介绍HBase是一种构建在HDFS之上的分布式、面向列的存储系统。在需要实时读写、随机访问超大规模数据集时,可以使用HBa
2、se。Apache HBase是Google BigTable的开源实现,就像BigTable利用了GFS所提供的分布式数据存储一样,HBase在Hadoop之上提供了类似于BigTable的能力1.1 面向行和面向列存储对比面向行和面向列存储对比1.1.1 数据库以行、列的二维表的形式存储数据数据库以行、列的二维表的形式存储数据1.1.2 列式数据库把一列中的数据值串在一起存储起来,然后再存储下一列的数据列式数据库把一列中的数据值串在一起存储起来,然后再存储下一列的数据1.1.3 两种存储方式的对比两种存储方式的对比ididnamenameageagesexsexjobsjobs1 1张三张
3、三3535男男教师教师2 2李丹李丹1818女女学生学生3 3JohnJohn2626男男ITIT工程师工程师idid1 12 23 3namename张三张三李丹李丹JohnJohnageage男男女女男男sexsex353518182626表1-3 行/列存储对比 行存储行存储列存储列存储优点优点写入效率高,提供数据完整性保证。写入效率高,提供数据完整性保证。读取过程有冗余,适合数据定长的大读取过程有冗余,适合数据定长的大数据计算。数据计算。缺点缺点数据读取有冗余现象,影响计算速度。数据读取有冗余现象,影响计算速度。缺乏数据完整性保证,写入效率低。缺乏数据完整性保证,写入效率低。改进改进优
4、化的存储格式,保证能够在内存快优化的存储格式,保证能够在内存快速删除冗余数据。速删除冗余数据。多磁盘多线程并行写入多磁盘多线程并行写入/ /读读( (需要增加需要增加运行成本和修改软件运行成本和修改软件) )。应用环境应用环境商业领域,互联网。商业领域,互联网。互联网。互联网。1.2 HDFS分布式存储特点分布式存储特点HDFS(Hadoop Distributed File System)是Hadoop项目的核心子项目,是分布式计算中数据存储管理的基础,是基于流数据模式访问和处理超大文件的需求而开发的,可以运行于廉价的商用服务器上。1. 优点(1)高容错性(2)适合大数据的处理(3)流式文件
5、写入(4)可构建在廉价机器上2. 缺陷(1)不适合低延迟数据访问(2)无法高效存储大量的小文件(3)不支持多用户写入及任意修改文件1.3 HBase的使用场景的使用场景HBase不是关系型数据库,也不支持SQL,但是它有自己的特长,这是关系型数据库不能处理的。1. 平台类2. 内容服务类3. 信息展示类2.1 HBase相关概念相关概念HBase的数据模型也是由一张张的表组成,每一张表里也有数据行和列,但是在HBase数据库中的行和列又和关系型数据库的稍有不同。1. Table(表)2. Row(行)3. Column(列)4. Column Family(列族)5. Column Quali
6、fier(列标识符)6. Cell(单元格)7. Timestamp(时间戳)2.2 HBase逻辑模型逻辑模型HBase是一个类似BigTable的分布式数据库,它是一个稀疏的长期存储的(存储在硬盘上)、多维度的、排序的映射表,这张表的索引是行关键字、列关键字和时间戳,HBase中的数据都是字符串,没有类型。表2-1 HBase的逻辑模型行健行健时间戳时间戳列族列族anchoranchor列族列族infoinfodatabase.software.wwwt4t4anchor:tel=01012345678info:PC=100000t3t3anchor:name=JamesJames t2t
7、2 info:address=BeiJingt1t1anchor:name=John c c.software.wwwt3t3 info:address=BeiJingt2t2anchor:tel=01012345678 t1t1anchor:name=JamesJames2.3 HBase物理模型物理模型虽然从逻辑模型来看每个表格是由很多行组成的,但是在物理存储上面,它是按照列来保存的。表2-2 HBase的物理模型行健行健时间戳时间戳列列单元格单元格( (值值) )database.software.wwwt1t1anchor:nameJohndatabase.software.wwwt2
8、t2info:addressBeiJingdatabase.software.wwwt3t3anchor:nameJamesJamesdatabase.software.wwwt4t4anchor:tel01012345678database.software.wwwt4t4info:PC100000c c.software.wwwt1t1anchor:nameJamesJamesc c.software.wwwt2t2anchor:tel01012345678c c.software.wwwt3t3info:addressBeiJing2.4 HBase的特点的特点非关系型数据库严格上不是一
9、种数据库,而是一种数据结构化存储方法的集合。HBase作为一个典型的非关系型数据库,仅支持单行事务,通过不断增加集群中节点数据量来增加计算能力,其具有以下特点。1. 容量巨大2. 面向列3. 稀疏性4. 数据多版本5. 可扩展性6. 高可靠性7. 高性能8. 数据类型单一2.5 HBase系统架构系统架构HBase同样是主从分布式架构,它隶属于Hadoop生态系统,由以下组件组成:Client,ZooKeeper,HMaster,HRegionServer和HRegion;在底层,它将数据存储于HDFS中2.5 HBase系统架构系统架构2.5.1 ClientClient包含访问HBase的
10、接口,使用RPC机制与HMaster和HRegionServer进行通信并维护Cache来加快对HBase的访问,比如HRegion的位置信息。2.5.2 ZooKeeperZooKeeper的引入使得Master不再是单点故障,通过选举,保证任何时候集群中只有一个处于Active状态的Master,HMaster和HRegionServer启动时会向ZooKeeper注册。2.5.3 HMasterHMaster是HBase集群的主控服务器,负责集群状态的管理维护。(1)管理用户对表的增、删、改、查操作。(2)为HRegionServer分配HRegion。(3)管理HRegionServe
11、r的负载均衡,调整HRegion分布。(4)发现失效的HRegionServer并重新分配其上的HRegion。(5)当HRegion切分后,负责两个新生成HRegion的分配。(6)处理元数据的更新请求。3.1 HRegionServer详解详解HRegionServer一般和DataNode在同一台机器上运行,实现数据的本地性。3.1 HRegionServer详解详解3.1.1 WAL 1. WAL滚动 2. WAL失效 3. WAL删除3.1.2 MemStore MemStore是一个写缓存(In Memory Sorted Buffer),所有数据的写在完成WAL日志写后,会写入M
12、emStore中,由MemStore根据一定的算法将数据Flush到底层HDFS文件中(HFile)。3.1 HRegionServer详解详解3.1.3 BlockCache 客户的读请求会先到MemStore中查数据,若查不到就到BlockCache中查,再查不到就会从磁盘上读,并把读入的数据同时放入BlockCache。HBase RegionServer包含三个级别的Block优先级队列:(1)Single队列,如果一个Block第一次被访问,则放在这一优先级队列中。(2)Multi队列,如果一个Block被多次访问,则从Single队列移到Multi队列中。(3)InMemory队列
13、,如果一个Block是InMemory的,则放到这个队列中。3.1 HRegionServer详解详解3.1.4 HFile HBase的数据以KeyValue(Cell)的形式顺序的存储在HFile中,在MemStore的Flush过程中生成HFile,在HFile中的数据是按Row Key,Column Family,Column排序,对相同的Cell(即这三个值都一样)则按Timestamp倒序排列。1. 数据块2. 元数据块3. FileInfo4. 数据块索引5. 元数据块索引6. 文件尾表3-1 HFile组成部分名称名称描述描述数据块由多个lock(块)组成,每个块的格式为:块头
14、 + Key长 + Value长 + Key + Value。元数据元数据是Key-Value类型的值,但元数据块只保存元数据的Value值,元数据的Key值保存在第五项(元数据索引块)中。该块由多个元数据值组成。块该块保存与HFile相关的一些信息。FileInfo是以Key值排序Key-Value类型的值,基本格式为:KeyValue元素的个数 + (Key + Value类型id + Value) + (Key + Value类型id + Value) + 数据索引块该块的组成为:索引块头 + (数据块在文件中的偏移 + 数据块长 + 数据块的第一个Key) + (数据块在文件中的偏移
15、+ 数据块长 + 数据块的第一个Key) + 元数据索引块该块组成格式同数据块索引,只是部分的意义不一样,组成格式:索引块头 + (元数据在文件中的偏移 + 元数据Value长 + 元数据Key) + (元数据在文件中的偏移 + 元数据Value长 + 元数据Key) + 文件尾该块记录了其他各块在HFile文件中的偏移信息和其他一些元信息。组成格式如下:文件尾 + Fileinfo偏移 + 数据块索引偏移 + 数据块索引个数 + 元数据索引偏移 + 元数据索引个数 +数据块中未压缩数据字节数 + 数据块中全部数据的Key-Value个数 + 压缩代码标识 + 版本标识3.1 HRegionS
16、erver详解详解3.1.5 HRegionServer的恢复的恢复 当一台HRegionServer宕机时,由于它不再发送心跳包给ZooKeeper而被监测到,此时ZooKeeper会通知HMaster,HMaster会检测到哪台HRegionServer宕机,它将宕机的HRegionServer中的HRegion重新分配给其它的HRegionServer,同时HMaster会把宕机的HRegionServer相关的WAL拆分分配给相应的HRegionServer(将拆分出的WAL文件写入对应HRegionServer的WAL目录中,并写入相应的DataNode),从而使这些HRegionS
17、erver可以滚动分到的WAL来重建MemStore。3.1.6 HRegionServer的上线下线的上线下线 HMaster使用ZooKeeper来跟踪HRegionServer状态。当某个HRegionServer启动时,会首先在ZooKeeper上的Server目录下建立代表自己的文件,并获得该文件的独占锁。3.2 HRegion在HBase中,一个表的表行的多少决定了HRegion的大小,表的列族个数又决定了Store的多少,一个Store对应一个MemStore和多个StoreFile,StoreFile则对应一个HFileHBase表创建时候默认就是一个HRegion,在行记录不
18、断增加下,达到一定的数值HRegion会自动切分,变成多个HRegion,每一个HRegion里面由多个Store组成(Store的个数是由HBase表列族个数决定)。3.2 HRegion3.2.1 HRegion分配分配 任何时刻,一个HRegion只能分配给一个HRegionServer。HMaster记录了当前有哪些可用的HRegionServer,以及当前哪些HRegion分配给了哪些HRegionServer,哪些HRegion还没有分配。3.2.2 HRegion Split 最初,一个Table只有一个HRegion,随着数据写入增加,如果一个HRegion到达一定的大小,就需
19、要Split成两个HRegion,这个大小由hbase.hregion.max.filesize指定,默认为10GB。3.2.3 HRegion Compact 当文件达到一定数量(默认3)就会触发Compact操作,多个HFile合并成一个HFile文件,将多个StoreFile文件合并成一个StoreFile,而大文件恰恰又是HDFS所擅长。3.3 HMaster上线上线HMaster启动进行以下步骤:(1)从ZooKeeper上获取唯一一个代表HMaster的锁,用来阻止其它HMaster成为Master。(2)扫描ZooKeeper上的Server目录,获得当前可用的HRegionSe
20、rver列表。(3)和2中的每个HRegionServer通信,获得当前已分配的HRegion和HRegionServer的对应关系。(4)扫描.META. Region的集合,计算得到当前还未分配的HRegion,将他们放入待分配HRegion列表。3.4 数据读流程数据读流程(1)-ROOT- HRegion永远不会被Split,保证了最多需要三次跳转就能定位到任意HRegion。(2).META.表每行保存一个HRegion的位置信息,Row Key采用表名 + 表的最后一样编码而成。(3)为了加快访问,.META.表的全部HRegion都保存在内存中。(4)Client会将查询过的位置
21、信息保存并缓存起来,缓存不会主动失效3.5 数据写流程数据写流程当客户端发起Put等请求时,HBase会执行数据写流程。(1)客户端首先访问ZooKeeper查找-ROOT-表,然后获取.META.表信息。(2).META.表记录了每个HRegionServer包含HRegion的Row Key范围,根据Row Key找到对应的HRegionServer地址,HRegionServer会将请求匹配到某个具体的HRegion上面。(3)HRegion首先把数据写入WAL。(4)WAL写入成功后,把数据写入缓存MemStore,写完后检查所有MemStore大小的总和是否达到Flush阀值,如果达
22、到,HRegionServer处理Flush请求,将数据写入StoreFile并以HFile的形式存到HDFS上。3.6 删除数据流程删除数据流程HBase删除操作不会立即删除HFile,会先将数据打一个删除标签,当开启一个大的合并,才会将打标记的数据删除,这个大合并消耗比较大的性能,只有在晚上或者资源使用少时才使用。4.HBase环境搭建环境搭建HBase运行环境需要依赖于Hadoop集群,如果Hadoop尚未搭建,可以参考同套教材Hadoop大数据开发相关章节。HBase引入ZooKeeper来管理集群的Master和入口地址,因此需要先安装ZooKeeper,再设置HBase。4.HBa
23、se环境搭建环境搭建1 ZooKeeper的安装在ZooKeeper集群环境下只要一半以上的机器正常启动了,那么Zookeeper服务将是可用的。因此,集群上部署Zookeeper最好使用奇数台机器,这样如果有5台机器,只要3台正常工作则服务将正常。在目前的实际生产环境中,一个Hadoop集群最多有三台节点做备用Master,即并不是所有节点都安装ZooKeeper;如果以实验为目的,可以将所有节点都安装ZooKeeper并作为Master使用。1. 解压将下载好的ZooKeeper文件上传到Hadoop集群中的master节点,使用命令tar -zxvf zookeeper-3.4.5.ta
24、r.gz -C /hadoop/将其解压。2. 修改配置文件(1)创建文件夹mkdir /hadoop/zookeeper-3.4.5/data /hadoop/zookeeper-3.4.5/log(2)修改zoo.cfg进入zookeeper的conf目录修改zoo.cfg。cp zoo_sample.cfg zoo.cfg修改zoo.cfg的内容为:dataDir=/hadoop/zookeeper-3.4.5/datadataLogDir=/hadoop/zookeeper-3.4.5/logserver.0=192.168.254.128:2888:3888server.1=192.
25、168.254.129:2888:3888server.2=192.168.254.131:2888:3888除了dataDir的内容为修改外,其他配置信息均为新增。4.HBase环境搭建环境搭建(3)创建myid文件在/hadoop/zookeeper-3.4.5/data文件夹下创建myid文件,将其值修改为0。需要注意的是,zoo.cfg中server.后面的数值必须和“=”后面IP中的myid值保持一致,即IP为192.168.149.129的节点中myid的值必须为1,IP为192.168.149.131的节点中myid的值必须为2。(4)分发到slave1和slave2节点scp
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- HBase 完整版 课件 全书 电子 教案
限制150内