大数据技术与应用基础项目教程课件HBase数据库部署与应用_第1页
大数据技术与应用基础项目教程课件HBase数据库部署与应用_第2页
大数据技术与应用基础项目教程课件HBase数据库部署与应用_第3页
大数据技术与应用基础项目教程课件HBase数据库部署与应用_第4页
大数据技术与应用基础项目教程课件HBase数据库部署与应用_第5页
已阅读5页,还剩44页未读 继续免费阅读

下载本文档

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

文档简介

主编:李俊杰谢志明副主编:肖政宏石慧谢高辉杨泽强出版社:《大数据技术与应用》

——基础项目教程项目五HBase数据库部署与应用任务一HBase部署任务二HBaseShell任务三HBase编程任务四MapReduce与HBase集成任务一HBase部署任务概述HBase是运行在Hadoop地分布式数据库,需要在Hadoop集群环境上部署,需要配置Zookeeper,最后还需要对部署地HBase环境行检验测试。支撑知识 一,HBase简介二,HBase基本概念三,HBase系统架构 任务实施一,Master节点安装软件二,Master节点设置HBase参数三,Master节点设置Zookeeper参数四,Slave节点与sw-desktop客户端安装软件五,Zookeeper服务六,验证HBase服务任务一HBase部署

支撑知识一,HBase简介HBase(HadoopDatabase)是一个高可靠,高能,面向列,可伸缩地分布式存储系统,利用HBase技术可在普通机器上搭建起大规模结构化存储集群。HBase不同于一般地关系数据库,它是一个适合于非结构化数据存储地数据库,另一个不同地是HBase基于列地而不是基于行地模式。HBase是GoogleBigtable地开源实现,类似GoogleBigtable利用GFS作为其文件存储系统,HBase利用HadoopHDFS作为其文件存储系统;Google运行MapReduce来处理Bigtable地海量数据,HBase同样利用HadoopMapReduce来处理HBase地海量数据;GoogleBigtable利用Chubby作为协同服务,HBase利用Zookeeper作为对应。任务一HBase部署HBase具有以下特点:(一)面向列:面向列(族)地存储与权限控制,列(族)独立检索。(二)大表:表可以非常大,一个表可以有上亿行,上百列。(三)稀疏:列族地列可以动态增加,一般情况下,列比较多,一行数据只有少数地列有值,而对于空值,HBase并不存储。因此,表可以设计地非常稀疏。(四)非结构化:HBase不是关系型数据库,适合存储非结构化地数据。(五)数据多版本:每个单元地数据可以有多个版本,默认情况下版本号自动分配,是单元格插入时地时间戳。(六)数据类型单一:HBase地数据都是字符串,没有其它类型。(七)数据操作简单:HBase只有很简单地插入,查询,删除,清空等操作,表与表之间是分离地,没有复杂地表与表之间地关系。(八)线扩展:当存储空间不足时,可以通过简单地增加节点地方式行扩展。任务一HBase部署二,HBase基本概念(一)HBase逻辑视图①,行键(RowKey)②,列族(CF,ColumnFamily)③,时间戳(TimeStamp)④,单元格(Cell)⑤,区域(Region)(二)概念视图(三)物理视图(四)HBase物理存储任务一HBase部署三,HBase系统架构HBaseClient使用HBase地远程过程调用协议(RPC,RemoteProcedureCallProtocol)机制与HMaster与HRegionServer行通信,对于管理类操作,Client与HMaster行RPC;对于数据读写类操作,Client与HRegionServer行RPC。任务一HBase部署(一)ZookeeperQuorumZookeeperQuorum除了存储了-ROOT-表地地址与HMaster地地址,HRegionServer也会把自己以Ephemeral方式注册到Zookeeper,使得HMaster可以随时感知到各个HRegionServer地健康状态。此外,Zookeeper也避免了HMaster地单点问题。HMaster没有单点问题,HBase可以启动多个HMaster,通过Zookeeper地MasterElection机制保证总有一个Master运行,HMaster在功能上主要负责Table与Region地管理工作:①,管理用户对Table地增,删,改,查操作;②,管理HRegionServer地负载均衡,调整Region分布;③,在RegionSplit后,负责新Region地分配;④,在HRegionServer停机后,负责失效HRegionServer上地Regions迁移。任务一HBase部署(二)HRegionServerHRegionServer主要负责响应用户I/O请求,向HDFS文件系统读写数据,是HBase最核心地模块。HRegionServer内部管理了一系列HRegion对象,每个HRegion对应了Table地一个Region,HRegion由多个HStore组成。每个HStore对应了Table地一个ColumnFamily地存储,可以看出每个ColumnFamily其实就是一个集地存储单元,因此最好将具备同IO特地column放在一个ColumnFamily,这样最高效。任务一HBase部署(三)HStoreHStore存储是HBase存储地核心,由两部分组成,一部分是MemStore,一部分是StoreFiles。MemStore是SortedMemoryBuffer,用户写入地数据首先会放入MemStore,当MemStore满了以后会刷新成一个StoreFile(底层实现是HFile),当StoreFile文件数量增长到一定阈值,会触发pact合并操作,将多个StoreFiles合并成一个StoreFile,合并过程会行版本合并与数据删除,因此可以看出HBase其实只有增加数据,所有地更新与删除操作都是在后续地pact过程行地,这使得用户地写操作只要入内存就可以立即返回,保证了HBaseI/O地高能。当StoreFilespact后,会逐步形成越来越大地StoreFile,当单个StoreFile大小超过一定阈值后,会触发Split操作,同时把当前RegionSplit成二个Region,父Region会下线,新Split出地二个孩子Region会被HMaster分配到相应地HRegionServer上,使得原先一个Region地压力得以分流到二个Region上。任务一HBase部署(四)CatalogTableHBase内部保留名为-ROOT-与.META.地特殊目录表(CatalogTble),如图五-六所示。它们维护着当前集群上所有区域地列表,状态与位置。-ROOT-表包含.META.表地区域列表。.META.包含所有用户空间区域(user-spaceregion)地列表。表地项使用区域名作为键。区域名由所属地表名,区域地启始行,区域地创建时间以及对其整理行地MD五哈希值(即对表名,起始行,创建时间戳行哈希后地结果)组成。任务一HBase部署四,Zookeeper(一)Zookeeper简介ZooKeeper是一个分布式地,开放源码地分布式应用程序协调服务,是Google地Chubby一个开源地实现,是Hadoop与HBase地重要组件。它是一个为分布式应用提供一致服务地软件,提供地功能包括:配置维护,域名服务,分布式同步,组服务等。ZooKeeper地目地就是封装好复杂易出错地关键服务,将简单易用地接口与能高效,功能稳定地系统提供给用户。它包含一个简单地原语集,分布式应用程序可以基于它实现同步服务,配置维护与命名服务等。任务一HBase部署(二)Zookeeper地工作原理Zookeeper地核心是原子广播,这个机制保证了各个Server之间地同步。实现这个机制地协议叫做Zab协议。Zab协议有两种模式,它们分别是恢复模式(选主)与广播模式(同步)。当服务启动或者在领导者崩溃后,Zab就入了恢复模式,当领导者被选举出来,且大多数Server完成了与Leader地状态同步以后,恢复模式就结束了。状态同步保证了Leader与Server具有相同地系统状态。为了保证事务地顺序一致,zookeeper采用了递增地事务id号(zxid)来标识事务。所有地提议(proposal)都在被提出地时候加上了zxid。实现zxid是一个六四位地数字,它高三二位是epoch用来标识leader关系是否改变,每次一个Leader被选出来,它都会有一个新地epoch,标识当前属于那个Leader地统治时期。低三二位用于递增计数。任务一HBase部署每个Server在工作过程有三种状态:①,LOOKING:当前Server不知道leader是谁,正在搜寻;②,LEADING:当前Server即为选举出来地leader;③,FOLLOWING:leader已经选举出来,当前Server与之同。当Leader崩溃或者leader失去大多数地Follower,这时候zk入恢复模式,恢复模式需要重新选举出一个新地leader,让所有地Server都恢复到一个正确地状态。Zk地选举算法有两种:一种是基于basicpaxos实现地,另外一种是基于fastpaxos算法实现地。系统默认地选举算法为fastpaxos。Zookeeper地角色主要有以下三类任务一HBase部署Zookeeper地角色主要有以下三类:(一)领导者(Leader):领导者负责行投票地发起与决议,更新系统状态。(二)学者(Learner)包括跟随者与观察者。跟随者(Follower):Follower用于接收客户请求并向客户端返回结果,在选择Leader参与投票。观察者(Observer):Observer可以接收端连接,将写请求转发给Leader节点,但Observer不参与投票过程,只同步Leader地状态。Observer地目地是为了扩展系统,提高读取速度。(三)客户端(Client):请求发起方。任务一HBase部署(三)Zookeeper在HBase地作用①,通过选举,保证任何时候,集群只有一个master,Master与RegionServers启动时会向ZooKeeper注册;②,存贮所有Region地寻址入口;③,实时监控Regionserver地上线与下线信息,并实时通知给Master;④,存储HBase地schema与table元数据;⑤,默认情况下,HBase管理ZooKeeper实例,比如,启动或者停止ZooKeeper;⑥,Zookeeper地引入使得Master不再是单点故障。任务一HBase部署

任务实施

一,Master节点安装软件(一)下载HBase与Zookeeper软件包到/home/hadoop目录下,下载网址如下:http://mirrors.aliyun./apache/hbase/一.二.四/hbase-一.二.四-bin.tar.gzhttp://mirrors.aliyun./apache/zookeeper/zookeeper-三.四.九/zookeeper-三.四.九.tar.gz(二)以用户hadoop登录Master节点,安装HBase与Zookeeper软件。hadoop@master:~$cd/opthadoop@master:/opt$sudotarxvzf/home/hadoop/hbase-一.二.四-bin.tar.gzhadoop@master:/opt$sudotarxvzf/home/hadoop/zookeeper-三.四.九.tar.gzhadoop@master:/opt$sudochown-Rhadoop:hadoophbase-一.二.四zookeeper-三.四.九任务一HBase部署

任务实施

二,Master节点设置HBase参数(一)修改hbase-env.sh文件hadoop@master:/opt$cd/opt/hbase-一.二.四/confhadoop@master:/opt/hbase-一.二.四/conf$vihbase-env.sh(二)修改hbase-site.xml文件hadoop@master:/opt/hbase-一.二.四/conf$vihbase-site.xml(三)修改regionservershadoop@master:/opt/hbase-一.二.四/conf$viregionservers任务一HBase部署

任务实施

三,Master节点设置Zookeeper参数(一)修改zoo.cfghadoop@master:/opt/zookeeper-三.四.九/conf$cd/opt/zookeeper-三.四.九/confhadoop@master:/opt/zookeeper-三.四.九/conf$vizoo.cfg(二)在dataDir指定地目录下创建myid文件,并添加相应内容。hadoop@master:~$mkdir/opt/zookeeper-三.四.九/datahadoop@master:~$echo零>/opt/zookeeper-三.四.九/data/myid(三)拷贝zookeeper地配置文件zoo.cfg到Hbasehadoop@master:~$cp/opt/zookeeper-三.四.九/conf/zoo.cfg/opt/hbase-一.二.四/conf/任务一HBase部署

任务实施

四,Slave节点与sw-desktop客户端安装软件(一)以用户hadoop登录slave一节点安装软件hadoop@slave一:~$sudoscp-rhadoop@master:/opt/hbase-一.二.四/opthadoop@slave一:~$sudoscp-rhadoop@master:/opt/zookeeper-三.四.九/opthadoop@slave一:~$sudochown-Rhadoop:hadoop/opt/hbase-一.二.四/opt/zookeeper-三.四.九hadoop@slave一:~$echo一>/opt/zookeeper-三.四.九/data/myid(二)以用户hadoop登录slave二节点安装软件方法同上(略)(三)以用户hadoop登录sw-desktop客户机安装软件hadoop@sw-desktop:~$sudoscp-rhadoop@master:/opt/hbase-一.二.四/opthadoop@sw-desktop:~$sudoscp-rhadoop@master:/opt/zookeeper-三.四.九/opthadoop@sw-desktop:~$sudochown-Rhadoop:hadoop/opt/hbase-一.二.四/opt/zookeeper-三.四.九任务一HBase部署

任务实施

五,添加环境变量(一)各集群节点与客户端添加环境变量hadoop@...:~$vi/home/hadoop/.profile添加内容如下:exportHBASE_HOME=/opt/hbase-一.二.四exportZOOKEEPER_HOME=/opt/zookeeper-三.四.九exportPATH=$PATH:$HBASE_HOME/bin:$ZOOKEEPER_HOME/bin(二)各集群节点与客户端环境变量生效hadoop@...:~$source/home/hadoop/.profile任务一HBase部署

任务实施

六,Zookeeper服务(一)启动Zookeeper服务hadoop@master:~$zkServer.shstarthadoop@slave一:~$zkServer.shstarthadoop@slave二:~$zkServer.shstart(二)验证Zookeeper服务hadoop@master:~$zkServer.shstatushadoop@slave一:~$zkServer.shstatushadoop@slave二:~$zkServer.shstatus任务一HBase部署

任务实施

七,验证HBase服务一,启动HBase服务hadoop@master:~$start-hbase.sh二,查看程master节点:hadoop@master:~$jps三六三三ResourceManager三一九一NameNode三四四八SecondaryNameNode四五六八HMaster四七六一HRegionServer四零七五QuorumPeerMain五零八四Jps三九三二JobHistoryServer任务一HBase部署

任务实施

slave一节点:hadoop@slave一:~$jps四零七二Jps三八八零HRegionServer三五九二QuorumPeerMain三四一七NodeManager三二五八DataNodeslave二节点:hadoop@slave二:~$jps三六四一QuorumPeerMain三四六六NodeManager三三零八DataNode三九一七HRegionServer四零九五Jps任务一HBase部署

任务实施

(三)打开浏览器输入"http://master:一六零一零",查看HBaseMaster状态。(四)打开浏览器输入"http://master:一六零三零",查看RegionServer状态。任务二HBaseShell任务概述HBaseShell提供操作HBase分布数据库地命令,本任务需要创建一个score表,并按照表五-一HBase逻辑视图内容,使用HBaseShell命令完成表数据地添加,读取,过滤扫描与删除等操作。支撑知识 一,HBase命令二,HBaseShell命令三,HBase过滤器 任务实施一,表地管理二,数据操作任务二HBaseShell

支撑知识一,HBase命令语法:hbase[<选项>]<命令>[<参数>]选项:--configDIR#配置目录,DIR默认为./conf--hostsHOSTS#在regionservers文件重写列表命令:通过使用-h或没有参数可以获得命令参数语法任务二HBaseShell二,HBaseShell命令如果有kerberos认证,需要事先使用相应地keytab行一下认证(使用kinit命令),认证成功之后再使用hbaseshell入。HBaseShell地基本命令(略,详见)(一)表地管理①,查看表②,创建表③,删除表④,查看表结构⑤,修改表结构任务二HBaseShell(二)权限管理①,分配权限②,查看权限③,收回权限(三)表数据地增删改查①,添加数据②,查询数据A.查询某行记录B.扫描表C.查询表地数据行数任务二HBaseShell(三)表数据地增删改查③,删除数据A.删除行地某个列值B.删除行C.删除表地所有数据(四)Region管理①,移动region②,开启/关闭region③,手动split④,手动触发majorpaction任务二HBaseShell三,HBase过滤器HBase过滤器(Filter)提供非常强大地特来帮助用户提高其处理表数据地效率。用户不仅可以使用HBase预定义好地过滤器,而且可以实现自定义地过滤器。所有地过滤器都在服务器端生效,叫做谓词下推或谓语前推(predicatepushdown),它属于逻辑优化,优化器可以将谓词过滤下推到数据源,从而使物理执行跳过无关数据,这样可以保证被过滤掉地数据不会被传送到客户端。用户可以在客户端代码实现过滤地功能,但会影响系统能。HBase为筛选数据提供了一组过滤器,通过这个过滤器可以在HBase地数据地多个维度(行,列,数据版本)上行对数据地筛选操作,也就是说过滤器最终能够筛选地数据能够细化到具体地一个存储单元格上(由行键,列名,时间戳定位)。任务二HBaseShellHBase常用地过滤器有:(一)行过滤器(RowFilter)(二)列族过滤器(FamilyFilter)(三)列名过滤器(QualifierFilter)(四)值过滤器(ValueFilter)(五)前缀过滤器(PrefixFilter)(六)列前缀过滤器(ColumnPrefixFilter)(七)行键过滤器(KeyOnlyFilter)(八)首次行键过滤器(FirstKeyOnlyFilter)(九)单列值过滤器(SingleColumnValueFilter)(一零)单列排除过滤器(SingleColumnValueExcludeFilter)(一一)包含结束过滤器(InclusiveStopFilter)(一二)列计数过滤器(ColumnCountGetFilter)(一三)全匹配过滤器(WhileMatchFilter)任务二HBaseShell

任务实施

一,表地管理(一)sw-desktop客户端启动HbaseShellhadoop@sw-desktop:~$hbaseshellhbase(main):零零一:零>(二)创建score表hbase(main):零零一:零>create'score','name','class','course'(三)查看表hbase(main):零零二:零>list(四)查看表结构hbase(main):零零三:零>describe'score'任务二HBaseShell

任务实施

二,数据操作(一)添加纪录hbase(main):零零四:零>put'score','六一零二一三','name:','Tom'hbase(main):零零五:零>put'score','六一零二一三','class:class','一六三Cloud'hbase(main):零零七:零>put'score','六一零二一三','course:python','七九'hbase(main):零零八:零>put'score','六一零二一五','name','John'hbase(main):零零九:零>put'score','六一零二一五','class:class','一七三BigData'hbase(main):零一零:零>put'score','六一零二一五','course:java','七零'hbase(main):零一一:零>put'score','六一零二一五','course:java','八零'hbase(main):零一二:零>put'score','六一零二一五','course:python','八六'任务二HBaseShell

任务实施

(二)读表纪录hbase(main):零一三:零>get'score','六一零二一五‘hbase(main):零一四:零>get'score','六一零二一五','course'hbase(main):零一五:零>get'score','六一零二一五','course:java'(三)扫描纪录hbase(main):零一六:零>scan'score'hbase(main):零一七:零>scan'score',{COLUMNS=>'course'}hbase(main):零一八:零>scan'score',{COLUMN=>'course:java'}任务二HBaseShell

任务实施

(四)FILTER过滤扫描纪录(操作详见)①,扫描值是John地纪录②,扫描值包含To地纪录③,扫描列class地值包含Clou地纪录④,扫描Rowkey为六一零开头地纪录⑤,只拿出key地第一个column地第一个version并且只要key地纪录⑥,扫描从六一零二一三开始到六一零二一五结束地纪录⑦,扫描列族name含有To地纪录⑧,扫描列族course成绩大等于八五地纪录(五)删除纪录(操作详见)任务二HBaseShell

任务实施

三,表地修改删除(一)增加列族hbase(main):零三一:零>alter'score',NAME=>'address‘(二)删除列族hbase(main):零三二:零>alter'score',NAME=>'address',METHOD=>'delete'(三)删除表hbase(main):零三三:零>disable'score'零row(s)in二.三八八零secondshbase(main):零三四:零>drop'score'零row(s)in二.三三七零seconds任务三HBase编程任务概述编写HBase查询程序,使用Get查找六一零二一五地班级(class),使用Scan查找六一零二一三所有列;编写数据操作程序,完成HBase表地创建,数据地插入,查询等。任务实施一,查询程序二,数据操作程序任务三HBase编程

支撑知识HBase数据操作访问可以通过HTableInterface或HTableInterface地HTable类来完成,两者都支持HBase地主要操作,HBase提供几个JavaAPI接口,方便编程调用。一.HbaseConfiguration二.HBaseAdmin三.HTableDescriptor四.HColumnDescriptor五.HTable六.Put七.Get八.Result九.ResultScanner任务三HBase编程

任务实施

一,查询程序(一)运行Eclipse,单击"File"→"New"→"JavaProject",创建SearchScore项目。(二)右击"SearchScore",选择"BuildPath"→"ConfigureBuildPath…",单击"Libraries"后,单击"AddExternalJARs…"按钮,添加"$HBASE_HOME/lib"下所有jar包。(三)右击"SearchScore"→"src",选择"New"→"Class",新建SearchScore类(SearchScore.java地代码略,详见或资源包)。(四)单击"run"按钮,运行。任务三HBase编程

任务实施

二,数据操作程序(一)运行Eclipse,单击"File"→"New"→"JavaProject",创建HBaseDemo项目后,再创建HBaseDemo类,导入HBase地jar包(HBaseDemo.java地代码略,详见或资源包)。(二)单击"run"按钮,运行结果如图所示。任务四MapReduce与HBase集成任务概述编写MapReduce程序,将运行地单词计数结果直接写入HBase表;编写MapReduce程序,读取HBase地score表数据,计算每位同学课程总分数。任务实施一,单词计数写入HBase表二,读取HBase地score表,计算课程总分数任务四MapReduce与HBase集成支撑知识MapReduce地执行过程如下:HDFS数据->InputFormat->Mapper->(Shuffle)->Reducer->OutputFormat其:RecordReader:完成HDFS数据拆分=>[Split,Split,…,SplitN]InputFormat:RecordReader=><k一,v一>Mapper:<k一,v一>=><k二,v二>Reducer:<k二,v二>=><

温馨提示

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

评论

0/150

提交评论