您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 销售管理 > 10-Hbase课程--进阶
课程安排LOGO2015/05课程回顾HBase简介HBase是一个分布式的、多版本的、面向列的开源数据库利用HadoopHDFS作为其底层存储系统,提供高可靠性、高吞吐、列存储、可伸缩、实时读写的数据库系统。利用HadoopMapReduce来处理HBase中的海量数据利用Zookeeper作为协同服务。HBase与RDBMS对比HBaseRDBMS数据类型只有字符串丰富的数据类型数据操作简单的增删改查各种各样的函数,表连接存储模式基于列存储基于表格结构和行存储数据保护更新后旧版本仍然会保留替换可伸缩性轻易的进行增加节点,可扩展性高需要中间层HBase与HDFS对比两者都具有良好的容错性和扩展性,都可以扩展到成百上千个节点;HDFS适合批处理场景不支持数据随机查找不适合增量数据处理不支持数据更新HBase数据表中一些关键概念Rowkey键ColumnFamily列族Cellqualifier列族修饰符(列)Cell单元格Timestamp时间戳Region区域HBaseTableColumnFamilyAColumnFamilyBQualifier1Qualifier2Qualifier3RowKey1ValueRowKey2ValueValueRowKey3ValueHBaseTableColumnFamilyAColumnFamilyBQualifier1Qualifier2Qualifier3RowKey1ValueRowKey2ValueValueRowKey3ValueHBaseTableColumnFamilyAColumnFamilyBQualifier1Qualifier2Qualifier3RowKey1KeyValueRowKey2KeyValueKeyValueRowKey3KeyValueMultipleVersionsHBase数据模型Hbase数据模型展示HBase语法DDL——数据定义语言DML——数据管理语言DQL——数据查询语言JAVA常用API介绍DDL语法命名空间显示\创建\删除表显示\创建\删除\启用\禁用\重建列族创建\删除DDL语句显示命名空间,如:list_namespace创建命名空间,如:create_namespace‘HBASE_TEST’删除命名空间,如:drop_namespace‘HBASE_TEST’显示所有表名称,如:listDDL语句创建表,如:create'PERSON_ARCH','BASE_INFO‘创建带命名空间的表,如:create'HBASE_TEST:PERSON_ARCH','BASE_INFO‘显示表详细信息,如:describe'PERSON_ARCH‘禁用表,如:disable'PERSON_ARCH’启用表,如:enable'PERSON_ARCH’DDL语句删除表,如:disable'PERSON_ARCH‘drop'PERSON_ARCH‘重建表,如:truncate'PERSON_ARCH‘增加列族,如:alter'PERSON_ARCH',NAME='OTHER_INFO‘删除列族,如:alter'PERSON_ARCH',{NAME='OTHER_INFO‘,METHOD=’delete’}DML语法增加/修改(put)取得数据(get)删除某列记录(delete)删除整行记录(deleteall)统计表行数(count)DML语句增加/修改数据,如:put'PERSON_ARCH','00000001','BASE_INFO:NAME','jerry‘取得整行数据,如:get'PERSON_ARCH','00000001'取得行的某列数据get'PERSON_ARCH','00000001','BASE_INFO:age'DML语句取得行的多列数据get'PERSON_ARCH','00000001',{COLUMN=['BASE_INFO:age','BASE_INFO:NAME']}取得修改数据的所有版本get'PERSON_ARCH','00000001',{COLUMN='BASE_INFO:age',VERSIONS=3}DML语句删除某列数据如:delete'PERSON_ARCH','00000001','BASE_INFO:age‘,1434527522637删除整行数据deleteall'PERSON_ARCH','00000001‘统计表行数,如:count'PERSON_ARCH‘DQL语法表扫描(scan)全表扫描限制输出条目指定输出字段DQL语句全表扫描,如:scan'PERSON_ARCH'得到前N条数据,如:scan'PERSON_ARCH‘,LIMIT=3指定输出字段,如:scan'PERSON_ARCH',{COLUMNS=['BASE_INFO:NAME'],LIMIT=3}指定起始行键扫描如:scan'PERSON_ARCH',{COLUMNS=['BASE_INFO:NAME'],LIMIT=10,STARTROW='00000001',STOPROW='00000004'}JAVA常用API介绍创建表删除表添加修改表记录get查询Scan查询删除行记录//hbase配置对象,配置habase.master,集群节点等..Configurationconf=newConfiguration();//创建admin对象HBaseAdminadmin=newHBaseAdmin(conf);//创建hbase表描述对象HTableDescriptortableDes=newHTableDescriptor(TableName);//创建列描述对象:增加state列族HColumnDescriptorcol=newHColumnDescriptor(state);//这顶列族的版本数量,默认是3col.setMaxVersions(3);tableDes.addFamily(newHColumnDescriptor(col);//创建列描述对象:增加info列族,并且只有一个版本tableDes.addFamily(newHColumnDescriptor(info).setMaxVersions(1));//创建表admin.createTable(tableDes);HbaseAPI开发——创建表(代码片段)LOGO课程学习目标•了解和掌握Hbase语法。•知道如何使用HBase。•能够对HBase进行调优。总结ContentsHbase体系结构HBase高级特性Hbase性能优化HBase体系结构Master为Regionserver分配region负责Regionserver的负载均衡发现失效的Regionserver并重新分配其上的region管理用户对table的增删改查操作RegionServerRegionserver维护region,处理对这些region的IO请求Regionserver负责切分在运行过程中变得过大的regionClient包含访问HBase的接口并维护cache来加快对HBase的访问,比如region的位置信息Zookeeper保证任何时候,集群中只有一个master存贮所有Region的寻址入口。实时监控Regionserver的上线和下线信息。并实时通知给Master存储HBase的schema和table元数据HBase体系结构-ROOT-与.META.表-ROOT-表包含.META.表所在的区域列表,该表只会有一个HRegion,且不会split;Zookeeper中记录了-ROOT-表的location.META.表包含所有的用户空间区域列表,以及RegionServer的服务器地址;Region定位27.META.表的一行在内存中大约占用1KB。并且每个region限制为128MB。那么此三层结构可以保存的region数目为:(128MB/1KB)*(128MB/1KB)==2(34)个region物理存储281、Table中的所有行都按照rowkey的字典序排列。2、Table在行的方向上分割为多个HRegion。物理存储293、Region按大小分割的,每个表一开始只有一个region,随着数据不断插入表,region不断增大,当增大到一个阀值的时候,Region就会等分会两个新的Region。当table中的行不断增多,就会有越来越多的Region。物理存储304、Region是HBase中分布式存储和负载均衡的最小单元。最小单元就表示不同的Region可以分布在不同的Regionserver上。但一个Region是不会拆分到多个Regionserver上的。物理存储315、Region虽然是分布式存储的最小单元,但并不是存储的最小单元。事实上,Region由一个或者多个Store组成,每个store保存一个columnfamily。每个Strore又由一个memStore和0至多个StoreFile组成。如图:StoreFile以HFile格式保存在HDFS上。物理存储32物理存储33HBase体系结构总结ContentsHBase基础知识HBase高级特性Hbase性能优化Hbase高级特性过滤器计数器协处理器过滤器Get和scan方法只能拿到粗粒度的数据值,缺少更细粒度的扫描数据方法。如:1、按部分行键值进行扫描,如:扫描rowk中包含875的值。2、扫描列中包含的值,如:年龄为25岁的人。在Get和scan过程中,使用过滤器可以达到更细粒度的扫描效果。所有的过滤器都在服务器端生效,叫谓词下推过滤器RowKey前缀查询过滤器PrefixFilter查看rowkey中以10000开头的数据put'PERSON_ARCH','10000005','BASE_INFO:NAME','张三‘put'PERSON_ARCH','20000001','BASE_INFO:NAME','李四‘put'PERSON_ARCH','30000001','BASE_INFO:NAME','赵大‘scan'PERSON_ARCH',{COLUMNS=['BASE_INFO:NAME'],LIMIT=10,FILTER=(PrefixFilter('10000')}RowKey模糊查询过滤器RowFilter查询在rowkey中包含000的数据importorg.apache.hadoop.hbase.filter.CompareFilterimportorg.apache.hadoop.hbase.filter.RowFilterimportorg.apache.hadoop.hbase.filter.SubstringComparatorscan'PERSON_ARCH',{COLUMNS='BASE_INFO:NAME',LIMIT=10,FILTER=RowFilter.new(CompareFilter::CompareOp.valueOf('EQUAL'),SubstringComparator.new('000'))}按字段值精确查询过滤器SingleColumnValueFilter查找姓名为赵大的数据,只能精确查询importorg.apache.hadoop.hbase.filter.CompareFilterimportorg.apache.hadoop.hbase.filter.SingleColumnValueFilterimportorg.apache.hadoop.hbase.filter.BinaryComp
本文标题:10-Hbase课程--进阶
链接地址:https://www.777doc.com/doc-4195290 .html