《-大数据技术课件第6章PPT内容-.docx》由会员分享,可在线阅读,更多相关《-大数据技术课件第6章PPT内容-.docx(11页珍藏版)》请在三一办公上搜索。
1、“大数据技术课件第6章PPT内容“1、大数据技术与应用第六章HBase分布式数据库应用提纲。6.1HBase简介O6.2HBase集群部署O6.3HBaseShell操作命令O6.4HBase过滤器o6.5HBase编程o习题o小结26.1HBase简介HBase(HadoopDatabaSe)是一个高牢靠性、高性能、面对列、可伸缩的分布式存储系统。HBaSe利用ZooKeePer作为对应。HBaSe与Hadoop紧密集成,如下图所示。3TheHadoopEcosystemo6.1.1HBase架构IHBase采纳Master/Slave架构搭建集群,它隶属于Hadoop生态系统,由Cli2、
2、ent、HMaster、HRegionServerZe)OKeePer等组成,它将数据存储于HDFS中。HBase架构如图62所示。uZOOKeePer是一个分布式的、开放源码的分布式应用程序协调服务,是Google的Chubby一个开源的实现,是HadooP和HbaSe的重要组件。UHBaSe中可以启动多个HMaSter,通过Zookeeper的MasterElection机制保证总有一个Master运行。HMasterSHRegionServer,实现其负载均衡;46.1HBaSe简介6.1HBase简介5图图6-26-2HBaseHBase架构架构UHBase采纳Ma3、ster/Sla
3、ve架构搭建集群,它隶属于Hadoop生态系统,由ClientHMasterHRegionServerZOOKeePer等组成,它将数据存储于HDFS中。HMaSter主要负责利用ZooKeeper为HRegionServer安排HRegionoZooKeeper是一个高牢靠、高可用、长久化的分布式协调系统。CIient使用HBaSe的远程过程调用协议(RemoteProcedureCallProtocol,RPC)机制与HMaster和HRegionServer进行通信,对于管理类操作,Client与HMaster进行RPC;对于数据读写类操作,Client与HR4、egionServer进
4、行RPCoHBase架构如图6-2所示。66.1HBase简介6.1HBase简介(I)ZooKeeperZooKeeper是一个开放源码的分布式应用程序协调服务,是Google的Chubby一个开源的实现,是Hadoop和HBase的重要组件。分布式的HBaSe依靠于ZOOKeePer集群,全部节点和客户端必需能够正常访问ZooKeeper0HBase默认管理一个单点的ZooKeeper集群,HBase可以把ZooKeeper当作自己的一部分来启动和关闭进程。ZooKeeper也可以直接使用本地配置文件zoo.cfg,不依靠HBase的启动与关闭,独立运行Zo5、OKeeper。HBaseR
5、egionServer向ZooKeeper注册,供应HBaseRegionServer状态信息;HMaster启动时候会将HBase系统表(-ROOT-)加载到ZooKeeperCluster,通过ZooKeePerClUSter可以猎取当前系统表(.META.)的存储所对应的RegiOnSerVer信息。76.1HBaSe简介(2)HMasterHBase中可以启动多个HMaster,通过Zookeeper的MasterElection机制保证总有一个Master运行。HMaster管理HRegionServer,实现其负载均衡;管理和安排HRegi6、on,比如在HRegionSPIit时
6、安排新的HRegion;在HRegionSerVer退出时迁移其内的HRegion到其他HRegionServer上;实现数据定义和数据操作;管理namespace和table的元数据;权限掌握(ACL)管理等86.1HBase简介96.1HBase简介(3)HRegionServerHRegiOnSerVer主要负责响应用户I/O恳求,向HDFS文件系统中读写数据,是HBase中最核心的模块。HRegionServer内部管理了一系列HRegion对象,每个HRegion对应了Table中的一个Region,HRegion中由多个HStore组7、成。每个HStore对应了Table中的一个
7、ColumnFamily的存储,每个ColumnFamily其实就是一个集中的存储单元,因此最好将具备共同10特性的column放在一个COIUmnFamiIy中,这样最高效。IO6.1HBaSe简介(4)HFiIe实际的存储文件功能是由HFile类实现,它被特地创建用于有效存储HBase数据,基于Hadoop的TFiIe类,并仿照Google的BigTabIe架构使用SSTabIe格式。曾在HBase中使用过的Hadoop的MapFiIe类被证明性能不够好。HFile文件格式的具体信息如图6-3所示,文件长度为变长,仅FILEINFO/8、Trailer定长,Trailer中有指针指向其他数
8、据块的指针,它是长久化数据到文件结束时写入,写入后即确定其成为不行变的数据存储文件。IndeX块记录Data和Meta块的偏移量。Data和Meta块实际上都是可选的,但对于大多数HFiie,用户都可以找到Data块。块大小是由HCOIUmnDeSeriPtOr配置的,而该配置可以在创建时由用户指定或者使用默认值。11126.1HBase简介图图6-36-3HFiIeHFiIe结构图结构图6.1HBase简介(5)Write-Ahead-LogWrite-Ahead-Log(简称WAL),是HBase的RegionServer在处理9、数据插入和删除的过程中用来记录操作内容的一种日志。客户端初
9、始化一个更改数据的动作(如:put、delete和incrementcolumnvalue(incr),每一种改动都被包装进KeyValUe对象利用远程调用发送到ReginOSerVer对应这次改动的Region中,数据在RegionServer中首先被写入WAL,然后被写入MemStoreo最终当MemStore达到肯定的大小或者到达指定的时刻之后,数据被异步的长久化到文件系统上。在这之前数据是存储在内存中的,在这段时间里面假如RegionServer崩溃了,内存的数据就没有了,但是我们有WAL,就可以恢复数据。13146.1H10 、Base简介Write-Ahead-LogWrite-A
10、head-LogG.!HBase简介(6)SystemTablesHBase内部保留名为namespace和meta的SystemTablesonamespace指对一组表的规律分组,类似关系型数据库中的DataBase,便利对表在业务上划分。HBase从0.98.0,0.95.2两个版本开头支持namespace级别的授权操作,HBase全局管理员可以创建、修改和回收namespace的授权。15o6.1.2HBase的存储IHBase是基于列式存储的。列式存储是相对于传统关系型数据库的行式存储来说的,列式存储如下图所Jo11 、166.1HBaSe简介基于歹IJ式存储模式基于列式存储模式I
11、HBase以表的形式存储数据。表由行、列(列族)组成,列族(COlUmnFamily)由多个列组成,如下表所示。176.1HBase简介ScoresTabIeScoresTabIeRowKeyTimestampStudentCoursesnamepythonmath610215ts986ts880ts6Kate87610213ts491ts3Alice88590108ts290tslKane836.1HBase简介ROWKey是用来检索记录的主键,访问HBaSeTabIe中的行有三种方式:通过单个R12、OWKey访问、通过ROWKey的Range访问和全表扫描访问。RowKey可以是任意字符
12、串(最大长度是64KB),RoWKey在HBaSe内部保存为字节数组,数据存储时根据RowKey的字典排序(ByteOrder)存储。设计RowKey时,将常常一起读取的行存储放到一起。每个单元格(CelI)由RowKey.Family、ColumnTimestamp确定,Cell中的数据没有类型和长度的限定,以字节码存贮。时间戳的类型是64位整型。时间戳可以由HBase自动赋值,时间戳是精确到毫秒的当前系统时间;时间戳也可以由客户显式赋值。假如应用程序要避开数据版本冲突,就必需自己生成13、具有唯一性的时间戳。每个Cell中,不同版本的数据根据时间倒序排序,最新的数据排在最前面。18提纲06
13、.1HBase简介o6.2HBase集群部署o6.3HBaseShell操作命令06.4HBaSe过滤器06.5HBaSe编程0习题o小结19o6.2.1HBaSe参数配置IHBaSe需要添加环境变量和修改HBaSe参数,修改的配置文件有hbase-env.shhbase-site.xml和regionservers,3台节点机安装配置一样。u(1)修改Master节点和Slave节点的etchosts文件u(2)修改Master节点和Slave节点的/r14、oot/.bash_profile文件u(3)修改配置文件hbase-env.sh留意:留意:HBASE_MANAGES_ZK=tru
14、eHBASE_MANAGES_ZK=true表示使用自带的表示使用自带的ZooKeeperZooKeeper系统,系统,HBaseHBase把把ZooKeeperZooKeeper当作自己一部分来启动和关闭进程。当作自己一部分来启动和关闭进程。u(4)修改配置文件hbase-site.mlu(5)修改regionservers文件206.2HBase集群部署o6.2.2HBase运行与测试IHBase运行需要先启动Hadoop服务,再启动HBase服务15、。u(1)启动Hadoopu(2)启动HBase服务u(3)在slavel节点启动BackupMaster服务u(4)打开扫瞄器,输入ht
15、tp:/master:16010,查看MaSter信息u(5)打开扫瞄器,输入http:/slavel:16010,查看BackupMaSter信息u(6)打开扫瞄器,输入http:/slavel:16030,查看RegionSerVer信息u(7)启动hbaseshell216.2HBase集群部署o6.2.2HBase运行与测试IHBaSe供应了丰富的访问接口,HBaSeSheIl是最常用的交互方式,其供应的基本命令如下表所示。226.16、3HBaseShell操作命令命令描述create创建表alter修改列族(ColUmnFamily)模式describe显示表具体信息IiSt列出H
16、Base中存在的全部表count统计表中行的数量put向指向的表单元添加值get猎取行或单元(CeII)的值delete删除指定对象的值(可以为表、行、列对应的值,另外也可以指定时间戳的值)deleteall删除指定行的全部元素值incr增加指定表的行或列的值scan通过对表的扫描来猎取单元值truncate重新创建指定表disable使表无效enable使表有效exists测试表是否存在drop删除表tools列出HBase所支持的工具17、status返回HBase集群的状态信息ShUtdoWn关闭HBase集群(与exit不同)version返回HBase版本信息exit退出HBaseS
17、hello6.3.1general操作I(I)查询服务器状态I(2)查询hbase版本236.3HBaseShell操作命令o6.3.2namespace操作IHBase系统默认定义了两个缺省的namespaceoHbaSe为系统命名空间,包括namespace和meta表;default为用户默认命名空间,用户表在这创建。u(1)列出命名空间u(2)查看命名空间下的表U(3)创建命名空间U(4)查看命名空间U(5)删除命名空18、间246.3HBaseShell操作命令06.3.2namespace操作u(1)创建表u(2)猎取表信息u(3)增加表的列族U(4)删除表的列族U(5)查询表是否
18、存在U(6)推断表是否enable/disableu(7)删除表256.3HBaseSheIl操作命令o6.3.4DML操作U(1)插入记录U(2)读取表数据U(3)扫描表数据u(4)统计记录数u(5)删除列u(6)删除全部行u(7)删除表中全部数据266.3HBaSeShell操作命令o6.3.5授权IHBaSe的权限掌握是通过AccessControIIerCoprocessor协处理器框架实现19、的,可实现对用户的RWXCA的权限掌握,HBaSe权限与命令对比如下表所示。276.3HBaSeShell操作命令ACLs权限备注READ(R)GetzScanzOrExistscallsR表
19、示读权限WRlTE(W)PutzDeletezLockRowzUnlockRowjncrementcoIumnVaIuezCheckAndDeletezCheckAndputzFlushzCompactW表示写权限EXEC(X)表示执行协处理器端点所需的执行权限CREATE(C)CreatezAIterzDrop表示创建权限ADMlN(八)EnablezDisabIezSnapshotzRes20、tore,ClonezSpIitzMajorCompact,GrantzRevokezandShutdown表示admin(管理员)权限U(1)Namespace授权/撤权U(2)Table授权/撤
20、权286.3HBaseShell操作命令提纲06.1HBase简介o6.2HBase集群部署o6.3HBaseShell操作命令o6.4HBase过滤器o6.5HBase编程o习题o小结296.4HBaSe过滤器OHBaSe为筛选数据供应了一组过滤器,通过这个过滤器可以在HBaSe中的数据的多个维度(行、歹!、数据版本)上进行对数据的筛选操作,也就是说过滤器最终能21、够筛选的数据能够细化到详细的一个存储单元格上(由行键、列族、时间戳定位)。通常来说,通过行键、值来筛选数据的应用场景较多。OGet和SCan两类都支持过滤器,但这些类供应的基本APl不能对行键、列名和列值进行过滤,但过滤器可以实
21、现,过滤器最基本的接口叫Filter,同时用户可以通过继承Filter类来实现自己的需求。全部的过滤器都在服务器端生效,叫做谓词下推(PrediCatePUShdOWn),这样可以保证被过滤掉的数据不会被传送到客户端。用户可以在客户端代码实现过滤的功能(但会影响系统性能)。如图6-7描述了过滤器怎样在客户端进行配置,怎样在网络传输中被序列化,怎样在服务端执行。3022、I如下图描述了过滤器怎样在客户端进行配置,怎样在网络传输中被序列化,怎样在服务端执行。316.4HBase过滤器6.4HBase过滤器。在过滤器层次结构的最底层是Filter接口和FiIterBase抽象类,它们实现了过滤器的空
22、壳和骨架。大部分实体过滤类一般都直接继承FiIterBase,也有一些间接继承该类,用户定义一个所需要的过滤实例,同时把定义好的过滤器实例传递给Get和SCan实例(即:SetFiIter(filter)。在实例化过滤器的时候,用户需要供应一些参数来设定过滤器的用途。其中一组特别的过滤器,他们继承CompareFiIter,需要用户供应至少两个特定的参数,这两23、个参数会被基类用于执行它的任务。32U(I)行过滤器(ROWFilter)U(2)列族过滤器(FamiIyFilter)u(3)列名过滤器(QuaIifierFiIter)U(4)值过滤器(VaIueFiIter)U(5)前缀过滤器
23、(PrefiXFilter)U(6)列前缀过滤器(COlUmnPrefiXFiIter)u(7)行键过滤器(KeyonlyFiIter)U(8)首次行键过滤器(FirstKeyOnIyFiIter)u(9)单列值过滤器(SingIeCoIUmnValUeFilter)u(10)单列排解过滤(SingIeCoIiImnValUeEXCIUdeFiIter)U(11)包含24、结束过滤器(InclusiveStopFiIter)u(12)列计数过滤器(COIUmnCoUntGetFiIter)336.4HBase过滤器提纲06.1HBase简介o6.2HBase集群部署o6.3HBaSeShell
24、操作命令O6.4HBaSe过滤器O6.5HBaSe编程O习题o小结341HBase数据操作访问可以通过HTabIeInterface或HTabIeInterface的HTabIe类来完成,两者都支持HBase的主要操作。HBase供应几个JaVaAP接口,便利编程调用。U(1)HbaseConfiguration:通过此类可以对HBaSe进25、行配置u(2)HBaseAdmin:供应一个接口来管理HBaSe数据库中的表信息。它供应创建表、删除表等方法。u(3)HTabIeDescriptor:包含了表的名字及其对应列族。u(4)HColumnDescriptor:维护关于列的信息。u(5)H
25、table:用户与HBase表进行通信。U(6)Put:用于对单个行执行添加操作U(7)Get:用于猎取单个行的相关信息356.5HBase编程o6.5.1HBase表操作编程I编写Java应用程序,使用HBase供应的JavaAPI,实现HBase表的创建、数据查询、查询和表的删除。u(1)编写代码u(2)导出HBaseExljar26、运行包并执行366.5HBase编程o6.5.2HBase过滤查询编程I编写Java应用程序,使用HBase供应的过滤类进行查询。例如,查询scores表中rowkey为610开头,成果大于等于86的记录。U(I)编写代码u(2)导出HBaseE2.jar运
26、行包并执行376.5HBase编程提纲o6.1HBase简介o6.2HBase集群部署o6.3HBaseShell操作命令o6.4HBase过滤器o6.5HBase编程o习题。小结38习题I1、简述Hbase数据库I2、简述HBase过滤器的工作过程I3、学会HBaSe集群部署14、把握HbaS27、eJavaAPI编程15、把握HBase过滤器编程39提纲o6.1HBase简介o6.2HBase集群部署o6.3HBaSeShell操作命令O6.4HBaSe过滤器O6.5HBaSe编程O习题o小结40小结HBase是建立在Hadoop文件系统之上的分布式面对列的数据库。它是一个横向扩展的开源项目。它供应对数据的随机实时读/写访问,并作为Hadoop文件系统的一部分。HBase是一个数据模型,类似于谷歌的大表设计,可以供应快速随机访问海量结构化数据。它利用了HadooP的文件系统(HDFS)供应的容错力量。本章具体介绍HBaSe架构以及各组件的功能。介绍HBaSe集群部署与配置,重点讲解HBaSeSheIl命令的使用,包括DDL和DDM操作,具体讲解HBaSe过滤器的使用。最终讲解JaVaAPl编程和HBaSe过滤器编程,供应两个典型实例。41