Hbase的笔记及常用操作

个人笔记部分:

列簇个人理解为是面向对象中的类,里面的具体列是属性,属性有它的值就是value

1、hbase是列式存储,和mysql的行式存储不一样

2、hbase中有列簇概念,同一个列簇下的列存储在一起,在Region的一个StoreFile中

3、hbase是按照rowkey进行查找,要查询的字段要想办法放到rowkey中

4、hbase适合OLAP类的应用(联网分析analysis处理应用),比如推荐系统

5、hbase内部使用LSM三层模型进行存储,数据先写到内存MemStore中,内存达到一定阈值再刷写到硬盘StoreFile中,再满足一定条件时,小的StoreFile会合并为大的StoreFile


hbase存储

写文件流程:

1、hbase client要写输入了,先从zookeeper中拿到meta表信息,根据数据的rowkey找到应该往哪个RegionServer写

2、然后hbase会将数据写入对应RegionServer的内存MemStore中,同时记录操作日志WAL

3、当MemStore超过一定阈值,就会将内存MemStore中的数据刷写到硬盘上,形成StoreFile

4、在触发了一定条件的时候,小的StoreFile会进行合并,变成大的StoreFile,有利于hdfs存储


读文件流程:

1、hbase client要读数据了,先从zookeeper中拿到meta表信息,根据要查的rowkey找到对应的数据在哪些RegionServer上

2、分别在这些RegionServer上根据列簇进行StoreFile和MemStore的查找,得到很多key-value结构的数据

3、根据数据的版本找到最新数据进行返回


参考文档:http://www.sohu.com/a/300230256_818692

======================================================

常用操作

1.创建表:create 'student','info'   --表名,列簇名(列簇必须指定)

2.插入数据到表:

put 'student','1001','info:sex','male'

put 'student','1001','info:age','18'

put 'student','1002','info:sex','female'

put 'student','1002','info:age','20'

3.扫描查看表数据:

scan 'student'  --全表,表的内容多时慎用

scan 'student',{STARTROW => '1001', STOPROW  => '1001'}   --开始和结束区间

scan 'student',{STARTROW => '1001'}  -- 单区间

4.查看表结构

describe ‘student’

5.更新指定字段的数据

put 'student','1001','info:age','100'    ,更新后如果不设置多版本,只会保留最新的一个数据

6.查看“指定行”或“指定列族:列”的数据

get 'student','1001'  

get 'student','1001','info:name'

7.统计表数据行数

count 'student'

8.删除数据

删除某rowkey的全部数据:deleteall 'student','1001'

删除某rowkey的某一列数据:delete 'student','1002','info:sex'

9.清空表数据

truncate 'student'  提示:清空表的操作顺序为先disable,然后再truncate。

10.删除表

首先需要先让该表为disable状态:disable 'student',然后才能drop删除:drop 'student'

提示:如果直接drop表,会报错:ERROR: Table student is enabled. Disable it first.

11.变更表信息:

将info列族中的数据存放3个版本:

alter 'student',{NAME=>'info',VERSIONS=>3}

12.   获取多个版本信息

get 'student','1001',{COLUMN=>'info:name',VERSIONS=>3}

你可能感兴趣的:(Hbase的笔记及常用操作)