1:start-all.sh

开启hadoop相关进程

2: start-hbase.sh

启动hbase

3: jps

查看启动的进程情况

3: hbase shell

进入hbase

4: list

显示所有表

http://localhost:16010/master-status

5: create ‘rg34’,’f1’,’f2’,’f3’

创建rg34表,f1,f2,f3为列族

6: describe ‘rg34’

查看表结构

7: scan ‘rg34’

查看表全部数据

8: put ‘rg34’,’h1’,’f1:r1’,’hello’

往表中插入一条数据

9: scan ‘rg34’

查看表全部数据

10: get ‘rg34’,’h1’,{COLUMN=>’f1:c1’}

通过列名查找数据

11: put ‘rg34’,’h1’,’f1:c1’,’hello1’

往表中插入一条数据

12: scan ‘rg34’

查看表全部数据

13: get ‘rg34’,’h1’,{COLUMN=>’f1:c1’}

通过列名查找数据

发现只有hello1的数据,但实际上hello数据并没有被覆盖,hello数据也被保存起来了,这两个方式查看表数据的时候只显示这些列的最新数据

14: scan ‘rg34’,{RAW=TRUE,VERSIONS=1}

查看隐藏的数据 1表示显示数据版本个数为1个版本

15: scan ‘rg34’,{RAW=TRUE,VERSIONS=2}

查看隐藏的数据 2表示显示数据版本个数为2个版本

16: delete ‘rg34’,’h1’,’f1:c1’

删除数据

17: scan ‘rg34’

查看表全部数据,发现hello数据出来了

18: scan ‘rg34’,{RAW=TRUE,VERSIONS=2}

hello1数据并没有被删除,因为hbase的数据通常是保存在HDFS上,而hdfs只允许新增或者追加数据文件,如果要删除的话要对整个文件进行替换,所以删除操作是对删除的数据打上标记

什么时候数据被真正删除?

具体操作:
当多个storefile进行major_compact全局合并时,就会真正对那些打标记的数据进行删除。

storefile:
因为hbase基于hdfs进行数据存储。为了提升效率,会有一个memstore、block cache对数据进行缓存,使用wal日志文件来防止内存数据丢失。但这些东西最终都会放到磁盘中的某个文件进行存储,这个磁盘文件就是storefile

手动实现major_compact:
先进行flush数据刷写,然后再进行major_compact ‘rg34’

19: flush ‘rg34’

20: major_compact ‘rg34’

21: scan ‘rg34’,’h1’,’f1:c1’

发现标记要删除的数据不见了

22: disable ‘rg34’

使表不可用

23: drop ‘rg34’

删除表

24: list

显示全部表

java程序操作hbase

1:createTable(“rg34”); 创建表rg34

2:insertData(“rg34”); 往rg34表插入数据f1 c1 aaa

3:insertData(“rg34”); 往rg34表插入数据f1 c2 bbb

4:QueryAll(“rg34”); 查询rg34全部数据

5:QueryByCondition1(“rg34”,“Hbase”); 根据行键查询数据

6:getCellData(“rg34”,“Hbase”,“f1”,“c2”); 根据行键、列族、列名查询数据

7:deleteRow(“rg34”,“Hbase”); 删除Hbase行

8:deleteColumnFamily(“rg34”,“f1”); 删除f1列族

9:dropTable(“rg34”); 删除rg34表

高可靠性、高性能、列存储、可伸缩、扩展性强、实时读写的分布式数据库系统,海量存储、列式存储、极易扩展、高并发、稀疏灵活

适用:

高吞吐量
在大规模数据集中进行很好性能的随机访问(按列)
非结构化和半结构化的数据

不适用:

1 瞬间写入量很大,数据库不好支撑或需要很高成本支撑的场景。
2 数据需要长久保存
3 HBase不适用有join,多级索引,表关系复杂的数据模型

HBase包含3个重要组件:

ZooKeeper、HMaster、RegionServer。

ZooKeeper为整个HBase集群提供协助的服务(信息传输),HMaster主要用于监控和操作集群中的所有RegionServer,HRegionServer主要用于服务和管理分区(regions)。