1.什么是HBase:
1.是一个非关系型数据库(稀疏矩阵)
(1)关系型数据库:有固定的列,每一列的数据类型明确
(2)非结构化数据,半结构化数据。
2.存储的目标数据
(1)数据量大
(2)结构简单
(3)基于key的快速查找能力
(4)可以面向列进行查询
3.为什么要有hbase,为什么不用hdfs:
(1)因为hdfs适用的场景是海量的数据批读写,不支持海量数据中的个别数据修改
(2)而Hbase支持在海量数据中,修改某一个数据。
(3)Hbase的快,是相对于hdfs来说的。
2.数据仓库的特点
1.面向主题:每一种数据分析的方向都有对应的主题,主题是一个抽象的概念,主题不是固定的。
2.数据集成:任何一个主题的数据,最好是可以轻易的集成在一起。
3.非易失:用于保存历史归档数据,同时也是增量数据。
4.反应历史变化:通常不会删,会一直保存下去
3.hbase的数据结构
1.逻辑结构
(1)列族:多个列的组合
①在数据底层当中,各个列族之间,数据是分开存储的。
(2)列:一个列族下有若干的列
①注意:hbase的列,没有数据类型,都是string
②不需要在建表时声明
(3)行:rowkey
①所有的列族,所有的列,都可以引用同一个行号,但是不强制要求各个行之间对应
②可以当做索引用
③按字典顺序排序的
④要在hbase当中查某一行,只能通过行号来查,因为hbase是基于列数据进行查询的。但是行号是可以过滤的,行号是可以随意设置的。可以把某个常用列的值作为key的一部分,方便过滤。
⑤Hbase是有分区的,同一行数据,只会出现在一个分区当中
⑥一个分区中有若干的Store,一个Store中保存一个列族
4.物理结构
1.物理存储结构,即在物理文件当中,hbase数据的存储格式。
2.是基于列进行查询的,任何一个字段单元格都是一个独立的数据。
(1)Rowkey
(2)列族名
(3)列名
(4)时间戳
(5)操作类型
(6)值
(7)版本号
3.hbase当中没有真正意义上的update,所谓的修改和删除,是追加了一条数据,已最新的时间戳来显示。如果是删除数据,会将该数据的类型改为delete,删除的数据不会永久保留,如果没有正在进行的读写,那么就会启动删除。牺牲了一部分读的性能,换取写的性能。
5.hbase的shell操作
1.建表:create ‘[命名空间:]表名’,’列族名1’,’列族名2’……
2.添加/修改记录:put ‘[命名空间:]表明’,’行名’,’列族名:列名’,’值’
3.获取一行记录:get ‘[命名空间:]表明’,’行名’
4.获取记录数:count ‘[命名空间:]表明’ ---- 行数!!!
5.删除记录:delete ‘[命名空间:]表明’,’行名’,’列族名:列名’
6.scan命令:
(1)属性
①查询指定列
②指定行数
③起始行
④结束行
⑤时间戳
⑥版本
(2)过滤器:
①对值过滤
②binary等值
③substring包含
④列前缀过滤
⑤列明包含过滤
⑥Rowkey前缀过滤