Hbase:
*海量数据的存储
*海量数据的查询
秒级别
Table
Columnfamily
Column01,column02
每条数据有唯一的标识符
面向列的数据库
Rowkey+cloumnfamily+column01+timestamp : value =>cell
Hbase没有单节点故障,HMaster挂掉了,Hbase还可以正常读写,因为有zookerper
Hbase shell 进入shell命令
Help 查看帮助信息
create 查看create的帮助信息
exit 退出命令行
在hbase的数据查询方式有三种方式:
- 依据rowkey查询,最快的 get
get 'user' ,'1001'
- 范围查询 scan range
scan 'user', {STARTROW => '1002'}
- 全表扫描 scan
scan 'user'
删除:
delete 'user','1001','info:age' 删除一列中的某个字段(cell)
deleteall 'user','1003' 删除整列
ddl 操作:
create 'table1',"info1",'info2' 创建表table1 含有info1,info2两个列簇
list 列出所有的表
describe ‘table1’ 获取表的描述
disable 'table1'
alter 'table1',{NAME=>'info2',METHOD=>'delete'}
enable 'table1' 删除列簇info2
exists 'table1' 查看表是否存在
is_enabled 'table1'
is_disabled 'table1' 判断表是enable还是disable,返回布尔值
disable 'table2'
drop 'table2' 删除表
dml 操作
put 'table1','001','info1:name','tom'
put 'table1','001','info1:age','18' 插入数据
get 'table1','001','info1:age' 获取001行info1列簇age列数据
put 'table1','001','info1:age','20' 更新一行某列簇某列数据
delete 'table1','002','info1:name' 删除表002行info1列簇name列的值
deleteall 'table1','002' 删除002整行
count 'table1' 查看表有多少行
truncate 'table1' 清空表 实现过程是先禁用表,删除表,再重新建表
flush ‘user’ 将memstore中的user表的数据刷新到storefile里面,会新增加一个文件
Compact ‘user’ 将user表的storefile文件合并成一个文件,如果合并文件到达阀值,该region会分成两个region,之前的region下线。
Hbase数据写入流程
Put ->cell
- wal ->hdfs 预写日志到hdfs
- Memstore(内存中) ,数据满后写入storefile
- Storefile ->hdfs
hbase功能
Hadoop 数据库
存储数据
检索数据
与RDBMS相比
海量数据
数据条目上亿
检索速度, 准实时,秒级别
基于HDFS
Client 读数据或写数据->zookeeper(get /hbase/meta-region-server,找到meta表的region所在的regionserver)->hbase:meta表(regionserver的位置)->找到user_table表的regionserver->put/get
Hmaster也会连接zookeeper,通过zookeeper的get /hbase/rs,找到一共有那些regionserver,然后管理这些regionserver。