《Hadoop系统搭建及项目实践》课件06HBase技术.pptx
- 文档编号:30855029
- 上传时间:2024-03-14
- 格式:PPTX
- 页数:57
- 大小:3.41MB
《Hadoop系统搭建及项目实践》课件06HBase技术.pptx
《《Hadoop系统搭建及项目实践》课件06HBase技术.pptx》由会员分享,可在线阅读,更多相关《《Hadoop系统搭建及项目实践》课件06HBase技术.pptx(57页珍藏版)》请在冰豆网上搜索。
HBase技术项目6任务1了解HBase任务2理解HBase体系架构任务3HBaseshell基本操作任务4HBaseAPI操作任务5基于HBaseAPI的应用目标能掌握HBase体系架构。
能够正确安装并配置HBase。
能熟练掌握常用HBaseshell的操作。
能熟练掌握常用HBaseAPI实现方法。
任务了解HBase6.1.1HBase是什么HBase是一个高可靠、高性能、面向列、可伸缩、可实时读/写的分布式数据库,来源于Google发表的BigTable论文。
就像BigTable利用Google文件系统所提供的分布式存储一样,HBase基于HDFS也提供了同BigTable相同的能力。
HBase作为存储单元(基于Hadoop的HDFS),可以快速随机访问海量非结构化和半结构化数据。
任务了解HBase6.1.1HBase是什么HBase作为可以存储海量数据的框架,与HDFS所能处理的场景有很大区别,见表6-1。
表6-1HDFS与HBase的区别任务了解HBase6.1.1HBase是什么想一想!
HBase有些什么特点?
任务了解HBase6.1.1HBase是什么表数据量大,线性和模块化的可扩展性,使一个表可以达到数十亿行、数百万列。
(1)
(2)(3)(4)严格一致的读取和写入规则。
自动可配置表模式。
自动表切分。
面向列存储。
(5)(6)(7)(8)HBase与HDFS集成。
HBase与MapReduce。
容错性强。
(9)高度集成API。
HBase的特征任务了解HBase6.1.2搭建HBase环境
(1)单机模式。
(2)伪分布模式。
HBase的安装方式(3)完全分布模式。
任务了解HBase6.1.2搭建HBase环境(3)完全分布模式。
完全分布模式是将HBase安装运行在多个机器上,通常是将HBase的HMaster运行在HDFS的NameNode上,而将HRegionServer运行在HDFS的DataNode上。
(1)单机模式。
单机模式比较简单,只需要在一个节点上安装配置HBase,此模式下只需在HBase配置文件hbase-site.xml中指定HBase的文件存储目录即可,配置方式如下。
(2)伪分布模式。
伪分布模式的HBase也在单个节点上运行,和单机模式一样,但在该节点上会同时运行HMaster、HRegionServer及HQuorumPeer(如果内置了ZooKeeper)三个进程。
任务了解HBase6.1.2搭建HBase环境安装HBase之前需要具备的条件有哪些?
(1)HBase的运行和Hadoop一样,需要JDK的支持。
(2)HBase底层存储是依赖HDFS的,因此安装HBase的前提是必须安装Hadoop环境。
(3)HBase依赖于ZooKeeper来做分布式协调,所以需要有ZooKeeper的环境。
任务了解HBase6.1.2搭建HBase环境1.HBase的解压和安装软件包下载后,需要将安装包使用tar命令解压到opt文件夹下,如图6-1所示。
进入hbase-2.1.4目录,可以查看HBase的目录结构,如图6-2所示。
图6-1解压HBase安装包图6-2HBase的目录结构任务了解HBase6.1.2搭建HBase环境1.HBase的解压和安装其中,下面几个文件夹是用来运行和配置HBase的。
(1)bin:
存放HBase所有可执行命令的脚本。
(2)conf:
HBase配置文件存放目录。
(3)hbase-webapps:
存放Web应用的目录,这些应用可以查看HBase的运行状态。
默认的访问地址是http:
/hadoop:
16010,其中,hadoop是HBaseMaster节点的机器名。
(4)lib:
存放HBasejar文件,包括第三方依赖包及与Hadoop相关的jar文件。
任务了解HBase6.1.2搭建HBase环境1.HBase的解压和安装解压完成后,需要将HBase的安装目录添加到环境变量中。
使用gedit编辑框打开bashrc文件,命令如下。
在文件的末尾添加上HBASE_HOME和PATH的属性值,如图6-3所示。
修改完成后,还需要让环境变量生效,代码如下。
图6-3配置HBase的环境变量任务了解HBase6.1.2搭建HBase环境2.HBase伪分布环境搭建HBase安装包解压完成并配置好环境变量后,就需要对HBase进行配置。
HBase的配置文件存放在安装目录的conf目录下。
伪分布环境搭建需要配置两个文件:
hbase-env.sh文件和hbase-site.xml文件。
1)配置hbase-env.sh文件Hbase-env.sh文件用来配置全局HBase集群系统的特性。
在这个文件中,需要添加JDK的安装路径,同时还要配置ZooKeeper,其配置方式如下。
打开conf文件夹下的hbase-env.sh文件。
任务了解HBase6.1.2搭建HBase环境2.HBase伪分布环境搭建2)配置HBase的hbase-site.xml文件Hbase-site.xml文件同样放在HBase安装目录的conf目录下,它的配置如下。
任务了解HBase6.1.2搭建HBase环境2.HBase伪分布环境搭建5)停止HBase如果想停止HBase服务,执行bin目录下的stop-hbase.sh命令即可,如图6-5所示。
4)验证HBase安装HBase启动后,可以通过jps命令查看启动的进程,如图6-4所示。
3)启动HBase配置完成后就可以启动HBase了。
启动和停止的脚本命令都存放在HBase安装目录的bin目录下。
图6-4查看HMaster进程图6-5停止HBase任务2理解HBase体系架构6.2.1架构简介HBase采用Master/Slave架构搭建集群。
由一个HMaster服务器带多个HRegionServer服务器组成。
HMaster负责管理所有的HRegionServer,每个HRegionServer负责存储许多HRegion(HBase逻辑表的分块)。
HBase使用ZooKeeper存放集群的元数据和状态信息,同时实现HMaster的容错处理,HBase的架构如图6-6所示。
图6-6HBase的架构任务2理解HBase体系架构6.2.1架构简介在架构图中我们发现,HBase主要由HMaster、HRegion、HRegionServer和ZooKeeper组成。
HRegionServerHMasterHRegionZooKeeper任务2理解HBase体系架构6.2.1架构简介1.HMasterHMaster是HBase集群的主节点,主要负责HBase中Table和Region的管理工作,它会通知每个HRegionServer要维护哪些HRegion。
HMaster的具体功能包括以下几点。
(1)管理HRegionServer,通过调整HRegion的分布,实现负载均衡。
(2)管理和分配HRegion。
(3)实现DDL(datadefinitionlanguage,数据定义语言)操作,管理用户对表、列族及名字空间的增、删、改、查操作。
(4)管理名字空间(namespace)和表(table)的元数据。
(5)管理权限控制(ACL)。
任务2理解HBase体系架构6.2.1架构简介2.HRegionHRegion是HBase集群上分布式存储和负载均衡的最小单位,与HDFS中文件块的概念类似。
HBase使用表(table)来组织和管理数据,当表的大小超过阈值时,HBase会根据rowkey(行的主键)按字典顺序将表水平切割成多个HRegion,如图6-2所示。
HRegion保存一个表中的一段连续的数据,每个HRegion都记录了它的StartKey(开始主键)和EndKey(结束主键),通过表名和主键范围来区别每一个HRegion。
最开始时,一个表只有一个HRegion,随着数据量的增加,HRegion逐渐变大,如果超过了设定的阈值,便将表分成两个大小基本相同的HRegion,这个过程称为HRegion分裂,如图6-7所示。
任务2理解HBase体系架构6.2.1架构简介2.HRegion图6-7HRegion排序和分裂任务2理解HBase体系架构6.2.1架构简介3.HRegionServerHRegionServer一般和DataNode在同一台机器上,以实现数据的本地性。
一般情况下,一台机器上只运行一个HRegionServer。
HRegionServer负责数据的读写服务,用户通过HRegionServer可以实现对数据的访问,同时HRegionServer还管理本地Region和Table中的数据。
HRegion由两部分组成:
WAL(writeaheadlog)和HRegion。
任务2理解HBase体系架构6.2.1架构简介4.ZooKeeper想一想!
ZooKeeper在HBase中起着非常重要的作用,具体功能有哪些?
(1)HBase使用ZooKeeper维护集群中服务器的状态并协调分布式系统的工作。
(2)ZooKeeper维护服务器是否存活、是否可访问的状态,并提供服务器故障/宕机的通知。
(3)ZooKeeper使用一致性算法来保证服务器的同步。
(4)ZooKeeper负责HMaster的选举工作。
任务2理解HBase体系架构6.2.2理解HBase数据模型想一想!
HBase的数据模型是由一张张的表组成的,表由行和列组成。
想一想它们代表的意义?
任务2理解HBase体系架构6.2.2理解HBase数据模型
(1)表(table):
HBase会将数据组织成一张张的表,表是稀疏表(NULL数据不存储),表的索引是行关键字、列关键字和时间戳。
(2)行(row):
表中的每一行代表一个数据对象,每一行都以一个行关键字(rowkey)进行唯一标识。
(3)行关键字(rowkey):
行的主键,唯一标识一行数据,也被称为行键。
(4)列族(columnfamily):
HBase表中的每一列都归属于某个列族,列族是表的Schema的一部分,而列不是。
(5)列关键字(columnqualifier):
也称列键。
列族中的数据通过列键来进行映射。
(6)存储单元格(cell):
每一行键、列关键字共同组成一个单元格,在该单元格中存储数据。
(7)时间戳(timestamp):
在向HBase表中插入数据时都会使用时间戳来进行版本标识,作为单元格数据的版本号。
任务2理解HBase体系架构6.2.3概念视图HBase中的表可以看成一个大的映射关系。
通过行键、时间戳、列关键字(family:
qualifier每一列都设置成一个family,一个family下面可以有多个qualifier)可以定位到单元格中的数据。
在HBase中,表格中的单元格如果是空的,将不占用空间。
HBase表的概念视图如图6-8所示。
图6-8HBase表的概念视图任务2理解HBase体系架构6.2.3概念视图这个表中空的单元不占用空间,或者实际上存在于HBase中。
这就是HBase“稀疏”的原因。
表格视图不是查看HBase中数据的唯一可能方法,甚至也不是最准确的方法。
如图6-9所示是概念视图的映射,rowkey映射到columnfamily的列表,每一个columnfamily映射到columnqualifier的列表,每一个columnqualifier映射到timestamp的列表,每一个timestamp映射到一个值(cell的值)。
图6-9概念视图的映射任务2理解HBase体系架构6.2.4物理视图在HBase的概念视图中,表格被视为一组稀疏的行的集合,但在物理存储上它们是按列族进行存储的,可以随时将新的列族修饰符添加到现有列族上。
如图6-9所示的概念视图中的前两行可以用表6-2所示的形式进行存储。
后面三行使用表6-3所示的形式存储。
任务2理解HBase体系架构6.2.4物理视图表6-2columnfamilyanchor表表6-3columnfamilycontents表任务2理解HBase体系架构6.2.4物理视图
(1)数据类型:
HBase中只有字符串类型,也就是说,HBase只保存字符串。
(2)数据操作:
HBase只提供数据插入、查询、删除、清空等操作,表和表之间不存在关联操作。
与关系型数据库相比,HBase具有以下特点:
(3)存储模式:
这是HBase与关系型数据库最明显的区别,HBase是基于列存储的,每个列族由几个文件保存,不同列族的文件是分离的。
(4)数据更新:
HBase的更新操作实际上是插入了新的数据,旧版本依然会根据时间戳进行不同版本的保存。
(5)可扩展性:
HBase的性能提高可以通过简单地增加机器的方式实现。
任务2理解HBase体系架构6.2.5HBase的命名空间HBase的命名空间namespace与关系型数据库系统中表的逻辑分组类似。
这种抽象为即将出现的多租户相关功能奠定了基础。
(1)配额管理(quotamanagement,HBASE-8410)
(2)命名空间安全管理(namespacesecurityadministration,HBASE-9206)(3)区域服务器组(regionservergroups,HBASE-6721)任务2理解HBase体系架构6.2.5HBase的命名空间可以创建、删除或更改命名空间。
通过指定表单的完全限定表名,在创建表时确定命名空间成员权限。
例如,任务2理解HBase体系架构6.2.6HBase表、行与列族概念在HBase中,表是在schema定义时被预先声明的。
可以使用以下命令来创建一个表,在这里必须指定表名和列族名。
在HBaseshell中创建表的语法如下。
HBase中的行是逻辑上的行,物理上和模型上的行是按列族(columnfamily)分别存取的。
行键是未解释的字节,行是按字母顺序排序的,最低顺序首先出现在表中。
空字节数组用于表示表命名空间的开始和结束。
HBase中的列被分组为列族。
列族的所有列成员具有相同的前缀。
任务3HBaseshell基本操作HBase属于NoSQL数据库的典型代表,并不支持SQL查询语句,但是HBase有自带的查询语句HQL,用户可以通过在HBaseshell中使用HQL语句进行数据的查询。
HBaseshell是HBase的命令行工具,是最简单的接口。
功能类似于Oracle、MySQL等数据库的SQLPlus窗口,用户可以通过命令行模式创建表、删除表,以及对数据进行增、删、改、查等操作。
HBase服务启动后,通过HBaseshell命令就可以运行shell模式,运行help命令能够查看所有shell的命令和选项,如图6-10所示。
任务3HBaseshell基本操作图6-10HBaseshell和help命令任务3HBaseshell基本操作
(1)创建表。
执行命令“createt,f”创建一个表t并指定该表的一个列族f,如图6-11所示。
(2)向列族添加值。
使用命令put可以向列族添加值。
其格式为(3)查看行信息。
如果想查看表中的行信息,可以执行命令“scantablename”。
例如,查看表t的行信息,可以写为HBaseshell基本操作如下。
图6-11创建表任务3HBaseshell基本操作(4)查看某行列族信息。
如果想查看表中某行列族的某列数据的信息,可以执行命令“gettablename,row,columnfamily:
column”。
例如,查看表t的第一行的f列族的数据,可以写为(5)删除表。
如果想删除前面创建的表,需要先执行“disabletablename”命令让该表处于无效状态,然后执行“droptablename”命令删除该表。
(6)退出shell环境。
如果想退出shell环境,可以执行命令quit。
任务4HBaseAPI操作6.4.1HBaseAPI类1.HBaseAdminHBaseAdmin类位于org.apache.hadoop.hbase.client.HBaseAdmin。
这个类提供了一个接口来管理HBase数据库的表信息,它提供的函数可以创建表、删除表、列出表项、使表有效或无效,以及添加或删除表列族成员等。
这个类包含如下几个函数。
任务4HBaseAPI操作6.4.1HBaseAPI类2.HBaseConfigurationHBaseConfiguration类位于org.apache.hadoop.hbase.HBaseConfiguration。
这个类可以对HBase进行配置。
配置函数如下。
任务4HBaseAPI操作6.4.1HBaseAPI类3.HTableDescriptorHTableDescriptor类位于org.apache.hadoop.hbase.HTableDescriptor。
这个类包含了表的名字及其对应表的列族。
主要函数如下。
任务4HBaseAPI操作6.4.1HBaseAPI类4.PutPut类位于org.apache.hadoop.hbase.client.put,用来对单个行执行添加操作。
任务4HBaseAPI操作6.4.1HBaseAPI类5.GetGet类位于org.apache.hadoop.hbase.client.Get。
这个类用来获取单个行的相关信息。
任务4HBaseAPI操作6.4.2HBaseJavaAPI操作1.创建和删除表Step1任务4HBaseAPI操作6.4.2HBaseJavaAPI操作删除表的操作步骤和添加表相同,代码如下。
任务4HBaseAPI操作6.4.2HBaseJavaAPI操作Step22.从HBase中读取数据并写入HDFS中任务5基于HBaseAPI的应用6.5.1Scan通过Scan技术可以对指定范围内的内容进行查询。
它类似于数据库系统中的游标(cursor),同时,利用HBase提供的底层顺序存储的数据结构,则只需调用table的getScanner方法,就可以返回真正的扫描器(scanner)实例,用户也可以使用它迭代获取数据,最终将结果放在ResultScanner结果集中。
ResultScanner把扫描操作转换为类似的get操作,它将每一行数据封装成一个Result实例,并将所有的Result实例放入一个迭代器中。
下面看一下表数据的操作实例。
任务5基于HBaseAPI的应用6.5.1Scan任务5基于HBaseAPI的应用6.5.2过滤器在HBaseAPI包中,“org.apache.hadoop.hbase.filter”提供了过滤器最基本的接口。
通过这个过滤器可以对HBase中的数据进行多维度的筛选操作。
也就是说,过滤器最终能够筛选的数据能够细化到具体的一个存储单元格(由行键、列名、时间戳定位)上,一般通过行键和值来筛选数据的应用场景非常多。
要完成过滤操作,需要了解两个参数:
一个是比较操作符,另一个是比较器。
任务5基于HBaseAPI的应用6.5.2过滤器比较器代表具体的比较逻辑,可以提高字节级的比较、字符串级的比较等。
比较器主要有六种,分别是:
uBinaryComparatoruBinaryPrefixComparatoruNullComparatoruBitComparatoruRegexStringComparatoruSubstringComparator任务5基于HBaseAPI的应用6.5.2过滤器看一看!
下面来看一下比较过滤器RowFilter的使用方法。
任务5基于HBaseAPI的应用6.5.2过滤器
(1)创建一个Java工程,在Eclipse中的项目列表中,右击并选择NewJavaProject命令,新建一个RowFilter项目。
(2)创建Java类。
在项目src目录下,右击并选择New命令,创建一个类文件名称为RowFilterTest的Java类,并指定包名com.simple.filter,如图6-12所示。
(3)复制HBase相关的jar包到lib文件夹。
(4)将lib文件夹中所有的jar包导入项目环境中,全选lib文件夹下的jar包文件,右击并选择BuildPathAddtoBuildPath命令。
添加后在ReferencedLibraries中新增很多jar包,如图6-13所示。
(5)在类RowFilterTest中编写代码。
任务5基于HBaseAPI的应用6.5.2过滤器图6-12新建类图6-13引入jar包任务5基于HBaseAPI的应用6.5.2过滤器任务5基于HBaseAPI的应用6.5.3协处理器通过使用过滤器,可以减少服务器端通过网络返回到客户端的数据量。
由于数据量大,如果可以进一步细致约束数据传输(如在过滤器应用中通过限制列范围控制返回给客户的数据量),并进一步控制让数据的处理流程在服务器端执行,仅给客户端返回小的结果会更理想,这样可以让集群来分担工作。
HBase协处理器仿照GoogleBigTable的协处理器来实现。
协处理器框架提供了直接在管理数据的RegionServer上运行自定义代码的机制,帮助用户透明地完成这些工作。
任务5基于HBaseAPI的应用6.5.4计数器HBase在shell及API中提供了计数的功能。
示例如下。
上述代码完成了实时计数统计的操作,从而不需要使用延时较高的批处理操作了。
总结与回顾总结与回顾本项目主要对HBase存储理论做了介绍,主要包括基本概念和HBase的架构。
同时对于HBase的环境搭建进行了较详尽的说明。
重点讲解了HBaseshell、HBaseAPI的基本应用。
学习者可通过命令、API接口与HBase进行交互,解决存储问题。
习题1.简述HBase体系架构。
2.HBase中表、行、列族分别是什么?
3.练习安装HBase。
4.使用HBaseAPI完成创建表和删除表的操作。
BUSENESSACTIVITYPLANNINGTHANKS感谢聆听
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Hadoop系统搭建及项目实践 Hadoop 系统 搭建 项目 实践 课件 06 HBase 技术