《大数据处理:HBASE.ppt》由会员分享,可在线阅读,更多相关《大数据处理:HBASE.ppt(42页珍藏版)》请在优知文库上搜索。
1、大数据处理HBASE(2)1提纲 q 从RDMBS到HBase的表设计转变q HBASE操作方式q HBase数据操作基本功能q HBase数据操作高级功能2RDBMS表设计q RDBMS表的ER设计模型:以实体(Entitiy)、实体间关系(Relationship)、以及实体属性(Attribute)为核心的建模过程q 数据库设计范式3HBase表设计q 行关键字取代了主键,属性由列关键字取代4RowKey的设计例:收集一个集群中所有节点的日志log,保存在Hbase表LOG_DATA中。字段:机器名,时间,事件,事件正文数据访问特性1 数据生成速度快,因此插入速度要快。2 典型查询操作1
2、)对每台机器,查询一个较大时间段(例如1个月)内所有满足条件的记录(单机查询)2)查询某个时间段内对所有机器满足条件的记录(全局查询)5RowKey的设计设计1:机器名时间事件可以高效实现单机查询插入性能高设计2:时间机器名事件可以高效实现全局查询插入性能低(导致存储热点)设计3:盐值时间机器名事件盐值=时间%桶的个数6RowKey的设计原则q 长度原则:越短越好,一般不要超过16个字节q 数据的持久化文件HFile中是按照KeyValue存储的,如果rowkey过长,比如超过100字节,1000w行数据,光rowkey就要占用100*1000w=10亿个字节,将近1G数据,这样会极大影响HF
3、ile的存储效率;q MemStore将缓存部分数据到内存,如果rowkey字段过长,内存的有效利用率就会降低,从而降低检索效率。q 唯一原则q 充分利用这个排序的特点,将经常读取的数据存储到一块,将最近可能会被访问的数据放到一块q 散列原则q 如果rowkey按照时间戳的方式递增,不要将时间放在二进制码的前面,建议将rowkey的高位作为散列字段,由程序随机生成,低位放时间字段,利于数据均衡分布。7操作HBase数据方式(1)Shellq HBase的Shell工具q 通过Shell可以连接到本地或远程的HBase服务器上操纵数据q 命令行启动: $HBASE_HOME/bin/hbase
4、shellq 五类命令:q 表管理:创建、删除和修改表的相关操作指令q create table, col_f1, col_f2q 数据管理:对表中的数据进行操作q put table, row1, col_f1, valueq get table, row1, col_f1q scan table, LIMIT=5q delete table, row1q 工具:管理和优化数据存储方式的功能q 复制:将数据备份到多个节点的相关操作指令q 其他:查看HBase集群状态和版本8操作HBase数据方式(1)Shellq 在HBase查询的时候,有以下几种方式:q 通过get方式,指定rowkey获
5、取唯一一条记录q 通过scan方式,设置startRow和stopRow参数进行范围匹配q 全表扫描,即直接扫描整张表中所有行记录9操作HBase数据方式(2)Java APIq HBaseConfigurationq 配置类q HBaseAdminq 对数据表进行操作的接口q HTableDescriptorq 数据表列族操作及表属性的操作接口q HColumnDescriptorq 数据列相关的数据和操作接口q HTable,Put/Get/Deleteq 数据的插入、检索和删除操作10HBase数据操作示例q创建表q插入数据q检索数据q删除数据q批量组合操作11创建表:Create12创
6、建表后13插入单行数据:Put14插入多行数据:Puts15插入数据后16检索单行数据:Get17检索数据18检索数据过程19检索多行数据:Gets20扫描数据:Scan1 Scan2 Scan(byte startRow)3 Scan(byte startRow, byte stopRow)4 Scan(byte startRow, Filter filter)Filter filter=new SingleColumnValueFilter(Bytes.toBytes(family), Bytes.toBytes(qualifier),CompareOp.EQUAL, Bytes.toBy
7、tes(value); ResultScanner rs = table.getScanner(scan);21删除多行数据:Delete22批量组合操作23更新操作哪去了?q 思考q HDFS的特性q HBase的表结构24启用客户端写缓存q setWriteBufferSize(long writeBufferSize)q setAutoFlush(false)q flushCommits()25高级功能(1)联合查询q RDBMS联合查询:张三选修成功的课程名称和地点q SELECT sid=student_id FROM Student WHERE name=张三q SELECT ti
8、tle, location FROM Course c JOIN Registration r ON (c.course_id=r.course_id) WHERE r.student_id=sid and r.status=ok“q 结果: 网络原理, 教2楼20226高级功能(1)联合查询的HBase实现27高级功能(1)联合查询的HBase实现28高级功能(1)联合查询的去规范化实现q去规范化实现联合查询:空间换时间29高级功能(1)联合查询的去规范化实现30高级功能(2)非主键条件查询q RDBMS非主键查询:王五的所在系q SELECT department FROM Student
9、 WHERE name=王五“q 结果:经管系q HBase如何根据非rowkey的值进行条件查询?31高级功能(2)非rowkey条件普通查询32高级功能(2)基于索引表的二级索引33高级功能(3)查询过滤34高级功能(3)过滤条件q Dedicated Filtersq SingleColumnValueFilterq SingleColumnValueExcludeFilterq PrefixFilterq PageFilterq KeyOnlyFilterq FirstKeyOnlyFilterq TimestampsFilterq RandomRowFilterq Decoratin
10、g Filtersq SkipFilterq WhileMatchFiltersq Comparision Filtersq RowFilterq FamilyFilterq QualifierFilterq ValueFilterq DependentColumnFilter35高级功能(3)过滤条件示例q 查询王五的所在系q SELECT department FROM Student WHERE name=王五“q 结果:经管系q Scan代码: 36高级功能(4)HBase与MapReduce集成q HBase提供了与Hadoop包中Mapper和Reducer基础类相近的类q 还提供了一个TableMapReduceUtil类简化操作37高级功能(4)HBase与MapReduce集成q 数据表q 目标:查找相同兴趣用户分组q Map:Scan Reduce:Put38高级功能(4)HBase与MapReduce集成q Mapper代码39高级功能(4)HBase与MapReduce集成qReducer代码40高级功能(4)HBase与MapReduce集成q Main代码4142谢谢 谢谢 !