资源描述
单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,版权所有:南京第五十五所计算开发有限公司,#,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,版权所有:南京第五十五所计算开发有限公司,#,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,版权所有:南京第五十五所计算开发有限公司,#,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,版权所有:南京第五十五所计算开发有限公司,#,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,版权所有:南京第五十五所计算开发有限公司,#,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,版权所有:南京第五十五所计算开发有限公司,#,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,版权所有:南京第五十五所计算开发有限公司,#,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,版权所有:南京第五十五所计算开发有限公司,#,HBase,简介,安装环境搭建,1.1,任务,理解,HBase,架构,1.2,任务,HBase,简介,单元,1,1,学习目标,理解,HBase,架构。,掌握,HBase,架构中各组件的作用。,掌握,HBase,数据读写流程。,1,学习情境,1,HBase,HBase,是一个分布式的、面向列的开源数据库,该技术来源于,Fay Chang,所撰写的,Google,(谷歌)论文“,Bigtable,:一个结构化数据的分布式存储系统”。就像,Bigtable,利用了,Google,文件系统(,File System,)所提供的分布式数据存储一样,,HBase,在,Hadoop,之上提供了类似于,Bigtable,的能力。,HBase-Hadoop Database,是一个高可靠性、高性能、面向列、可伸缩的分布式存储系统。,2,安装环境搭建,知识学习,HBase,是,Apache Hadoop,中的一个子项目。,HBase,依托于,Hadoop,的,HDFS,作为最基本存储基础单元。通过使用,Hadoop,的,HDFS,工具就可以看到这些这些数据存储文件夹的结构,还可以通过,Map/Reduce,的框架(算法)对,HBase,进行操作。,本书中的环境部署为:节点操作系统为,CentOS 7,,防火墙禁用。系统用户,root,在目录,/opt,下创建目录,/module,,用于存放,Hadoop,、,Zookeeper,、,HBase,组件运行包。因为该目录用于安装,Hadoop,、,HBase,等组件程序。,2,任务实施,(,1,)安装前环境配置,(,2,),Java,安装,(,3,),Hadoop,安装,(,4,),Zookeeper,安装,(,5,),HBase,安装,2,任务实施,(,1,)安装前环境配置,启动,HBase,需要先启动,Hadoop DFS,集群,启动,Yarn,集群,最好是使用外置的,Zookeeper,集群。本书中的,HBase,环境基于,Hadoop 2.7.2,、,Zookeeper 3.4.10,,,HBase 1.3.3,。一共需要搭建,3,台节点,,1,个主节点,2,个从节点。在安装之前需要配置好虚拟机网络静态,IP,,同步时间,关闭防火墙和使用,Linux SSH,(安全,Shell,)。,1,),配置虚拟机网络模式,2,),配置虚拟机静态,IP,3,),SSH,设置和密钥生成,2,任务实施,(,2,),Java,安装,Java,是,Hadoop,和,HBase,主要先决条件。首先应该使用,java verion,命令检查,Java,是否存在在您的系统上。,1,)下载,JDK-X64.tar.gz,,,可以通过访问以下链接:,Shell,命令进入,HBase Shell,窗口,然后可以使用,help,命令浏览帮助文档,查看每个具体参数的使用方法。,3,总结,本单元介绍了,HBase,集群环境的搭建、,HBase,的架构,以及架构中各组件的作用,最后阐述了,HBase,数据读写的流程。在任务实施环节介绍了,HBase,的开发环境搭建和配置。通过本单元的学习,相信学生可以产生对,HBase,技术的学习兴趣,4,Thank,YOU!,使用,HBase Shell,命令,01,任务,综合案例实训,02,任务,HBase,基本操作,单元,2,学习,HBase shell,命令的语法,学习,HBase shell,的通用操作的语法,学习,HBase shell,的,DDL,操作的语法,学习,HBase shell,的,DML,操作的语法,学习,HBase shell,的安全操作的语法,学,习,目,标,1,使用,HBase Shell,命令,知识学习,任务实施,1,使用,HBase Shell,命令,general,Hbase shell,DML,1,2,DDL,3,4,安全操作,分类,1,使用,HBase Shell,命令,status,:提供,HBase,的状态,例如,服务器的数量。,version,:提供正在使用,HBase,版本。,whoami,:提供有关用户的信息。,table_help,:为表引用命令提供帮助。,通用操作,1,使用,HBase Shell,命令,create,:表示创建一个表。,list,:表示列出,HBase,的所有表。,alter,:表示改变一个表,disable,:此命令表示禁用表。,disable_all,:表示通过正则表达式来停用多个表。,is_disabled,:表示验证表是否被禁用。,enable,:表示启用一个表。,enable_all,:表示通过正则表达式来启动指定表。,is_enabled,:表示验证表是否已启用。,describe,:提供了一个表的描述。,exists,:表示验证表是否存在。,drop,:表示从,HBase,中删除表。,DDL,操作,1,使用,HBase Shell,命令,scan:,表示扫描并返回表中数据信息。,count:,表示计数并返回表中的行的数目。,put:,表示向表中添加数据信息。,get:,表示获取行或单元格的内容。,append,:,给某个单元格的值拼接上新的值。,delete:,表示删除表中的单元格值。,deleteall:,表示删除给定行的所有单元格。,DML,操作,1,使用,HBase Shell,命令,list_security_capabilities,:表示列出所有支持的安全特性。,grant,:表示授予特定的权限,如读、写、执行和管理表给定一个特定的用户。,revoke,:表示撤销用户访问表的权限。,user_permission,:表示列出特定表的所有权限,或者指定用户针对指定表的权限。,安全,操作,2,综合案例实训,2,综合案例实训,任务实施,通过一个小案例,将任务,1,中所讲的知识融会贯通,掌握,HBase shell,的常用命令。,包括创建表、列出表、对表的数据操作、禁用,/,启用表、表描述、查找表存在与否以及删除表等操作。,Thank You!,HBase,客户端,API,使用,HBase,的客户端,API,01,任务,HBase,客户端,API,单元,3,操作数据的,CRUD,02,任务,批量操作,03,任务,Scan,扫描,04,任务,综合案例实训,05,任务,学习,HBase,中数据库的初始基本操作(,CRUD,)语法,学习,HBase,中,API,调用,实现批量处理操作,学习,HBase,中扫描(,Scan,)技术,学,习,目,标,1,使用,HBase,的客户端,API,1,使用,HBase,的客户端,API,Eclipse,安装,HBase,开发环境,Hbase API,案例,(,1,)数据库连接,(,2,)创建表,核心内容,2,操作数据的,CRUD,2,操作数据的,CRUD,Put,方法,Get,方法,Delete,方法,append,方法,Increment,方法,mutation,方法,核心内容,3,批量操作,3,批量操作,批量,put,操作,批量,get,操作,批量,delete,操作,核心内容,4,Scan,扫描,4,Scan,扫描,不进行,Scan,对象创建的全表扫描,进行初始化的全表扫描,数据遍历与显示,ScannerResult,核心内容,5,综合案例实训,5,综合案例实训,增、删、改、查案例,批量处理案例,Scan,扫描案例,Thank You!,HBase Admin API,介绍,HBase Admin API,4.1,任务,HBase,的表,API,操作,4.2,任务,HBase Admin API,单元,4,1,综合案例实训,4.3,任务,学习,HBase Admin,类的使用方法,学习,HBase Admin,的表操作,掌握,HBase Admin API,的方法,掌握,HBase Admin,的表操作的方法和步骤。,学,习,目,标,1,介绍,HBase,Admin API,HBase,是,Hadoop,的数据库,能够对大数据提供随机、实时读写访问。它是开源的、分布式的、多版本的、面向列的、存储模型。,HBase Master,是服务器负责管理所有的,HRegion,服务器,,HBase Master,并不存储,HBase,服务器的任何数据,,HBase,逻辑上的表可能会划分为多个,HRegion,,然后存储在,HRegion Server,群中,,HBase Master Server,中存储的是从数据到,HRegion Server,的映射。,1,知识学习,2,HBase,的表,API,操作,2,知识学习,1,),HBaseConfiguration,2,),addFamily,方法,3,),建表,API,4,),删除表,5,),查询数据,2,任务实施,基本功能,(,1,),HBase,创建表,(,2,),HBase,列出表,(,3,),HBase,禁用表,(,4,),HBase,启用表,(,5,),HBase,表描述和修改,(,6,),HBase Exists,(,7,),HBase,删除表,3,综合案例实训,3,任务描述,HBase,采用,Java,实现,原生客户端也是,Java,实现,其他语言需要通过,Thritf,接口服务,间接访问,HBase,的数据。,HBase,作为大数据存储数据库,其写能力非常强,加上,HBase,本身就脱胎于,Hadoop,,所以和,Hadoop,的兼容性极好,非常适合于存储半规则数据(灵活、可扩展性强、大数据存储)。基于,Hadoop,的,MapReduce,和,Hbase,存储,非常适合处理大数据。,Thank,YOU!,探究使用,MapReduce,的原因,5.1,任务,MapReduce,快速入门,5.2,任务,HBase,与,MapReduce,单元,5,1,编写自己的,MapReduce,5.3,任务,掌握,MapReduce,在,HBase,上的使用方法以及常见类的使用方法,掌握,MapReduce,的内部机制,能够在,HBase,上编写自己的,MapReduce,示例,学,习,目,标,1,探究使用,MapReduce,的原因,1,知识学习,1.,用,MapReduce,的原因有两点:,(,1,)统计的需要。,(,2,)性能的需要:说白了就是“快”!,2.Apache MapReduce,概述,3.MapReduce,核心思想:分久必合,1,任务实施,默认情况下,部署到,MapReduce,集群的,MapReduce,作业无权访问,$HBASE_CONF_DIR,下的,HBase,配置或,HBase,类。,要为,MapReduce,作业提供它们所需的访问权限,可以将,hbase-site.xml,添加到,$HADOOP_HOME/conf,,然后将,HBase jar,添加到,$HADOOP_HOME/lib,目录中。,1,任务实施,1.,使用,HBase,作为数据源,2.,使用,HBase,接收数据,2,MapReduce,快速入门,2,知识学习,1,),Hadoop,加载,HBase,的,jar,包,2,),TableMapper,类,3,),TableReducer,类,4,),TabMapReduceUtil,类,3,编写自己的,MapReduce,3,知识学习,一个,MapReduce,任务有三个组成部分:,(,1,),Mapper,类。,(,2,),Reducer,类。,(,3,)驱动类,主要提供,main,方法以供调用。,Thank,YOU!,HBase,预分区,搭建小程序开发环境,单元,6,1,HBase Shell,手动指定预分区,6.1,任务,HBase Shell,使用算法指定,预分区,6.2,任务,Java API,创建预分区,6.3,任务,预分区,rowkey,设计技巧,6.4,任务,学习目标,了解为什么要预分区,掌握如何进行预分区,熟悉,rowKey,预分区的设计,1,HBase Shell,手动指定预分区,1,知识学习,(,1,)使用,HBase Shell create,命令创建表,添加,SPLITS=,参数。创建属于名称空间,ns1,的表,t1,,列簇为,f1,,手动指定预分区:,create t1,f1,SPLITS=10,20,30,40,(,2,)分区规则创建于文件中:,创建,splits.txt,文件,文件内容如下,create t1,f1,SPLITS_FILE=splits.txt,2,HBase Shell,使用算法指定预分区,2,知识学习,HBase shell create,命令的学习。,(,1,)使用十六进制算法生成预分区,create t1,f1,NUMREGIONS=5,SPLITALGO=HexStringSplit,该命令的含义是创建属于默认名称空间的表,t1,,列簇为,f1,,,rowkey,按照十六进制字符串将表分为,5,个分区。,(,2,)使用随机字节生成预分区,create t2,f1,NUMREGIONS=4,SPLITALGO=UniformSplit,该命令的含有是创建属于默认名称空间的表,t1,,列簇为,f1,,,rowkey,基于随机字节键创建,4,个分区。,3,Java API,创建预分区,3,知识学习,相关,Java,核心代码如下:,(,1,)自定义算法,产生一系列,Hash,散列值存储在二维数组中。,byte splitKeys=,某个散列值函数,(,2,)创建,HBaseAdmin,实例。,HBaseAdmin hAdmin=new HBaseAdmin(HBaseConfiguration.create();,(,3,)创建,HTableDescriptor,实例。,HTableDescriptor tableDesc=new HTableDescriptor(tableName);,(,4,)通过,HTableDescriptor,实例和散列值二维数组,创建带有预分区的,HBase,表。,hAdmin.createTable(tableDesc,splitKeys);,4,预分区,rowkey,设计技巧,4,知识学习,1.,哈希(,hash,),哈希取业务,id,的哈希值作为,rowkey,,如,hash,(,url,)。,hash,就是,rowkey,前面由一串随机字符串组成,随机字符串生成方式可以由,SHA,或者,MD5,等方式生成,只要,Region,所管理的,start-end keys,范围比较随机,那么就可以解决写热点问题。,2.,分区(,partition,),分区有点类似于,MapReduce,中的,partitioner,,将区域用长整数(,Long,)作为分区号,每个,Region,管理着相应的区域数据,在,rowKey,生成时,将,id,取模后,然后拼上,id,整体作为,rowKey,,,splitKey,直接是分区号即可。,Thank,YOU!,
展开阅读全文