Hbase 命令
start-hbase.sh //启动hbase集群
hbase-daemon.sh start master //启动Hbase master
hbase-daemons.sh start regionserver //启动Hbase regionserver
hbase的ha设置
启动多个master即可。
zk节点下: /hbase/backup-master
hbase在hadoop存放文件目录
/hbase/data/${ns}/${tablename}/${rs}/${f1}/文件名。
hbase shell操作
$>hbase shell //登录shell终端.
$hbase>help // 查看帮助
$hbase>help 'list_namespace' //查看特定的命令帮助
$hbase>list_namespace //列出名字空间(数据库)
$hbase>list_namespace_tables 'defalut' //列出名字空间(数据库)
$hbase>create_namespace 'ns1' //创建名字空间
$hbase>help 'create'
$hbase>create 'ns1:t1','f1' //创建表,指定空间下
$hbase>put 'ns1:t1','row1','f1:id',100 //插入数据
$hbase>put 'ns1:t1','row1','f1:name','tom' //
$hbase>get 'ns1:t1','row1' //查询指定row
$hbase>scan 'ns1:t1'
$hbase>flush 'ns1:t1' //清理内存数据到磁盘。
$hbase>count 'ns1:t1' //统计函数
$hbase>disable 'ns1:t1' //删除表之前需要禁用表
$hbase>drop 'ns1:t1' //
$hbase>scan 'hbase:meta' //查看元数据表
$hbase>split 'ns1:t1' //切割表
$hbase>split '' 'row5000' //从row5000切割区域
$move "ea0a7c0f39baf7afac901a9086878706", "s204,16020,1555393146398" //移动区域 ea0a7c0f39baf7afac901a9086878706 //区域名称
s204,16020,1555393146398 //hbase服务器位置
预先切割
创建表时,预先对表进行切割。
切割线是rowkey.
$hbase>create 'ns1:t2','f1',SPLITS=>['row3000','row6000']
原生扫描(专家)
1.原生扫描
$hbase>scan 'ns1:t3',{COLUMN=>'f1',RAW=>true,VERSIONS=>10} //包含标记了delete的数据
2.删除数据
$hbase>delete 'nd1:t3','row1','f1:name',148989875645 //删除数据,标记为删除.
//小于该删除时间的数据都作废。
3.TTL
time to live ,存活时间。
影响所有的数据,包括没有删除的数据。
超过该时间,原生扫描也扫不到数据。
$hbase>create 'ns1:tx' , {NAME=>'f1',TTL=>10,VERSIONS}
4.KEEP_DELETED_CELLS
删除key之后,数据是否还保留。
$hbase>create 'ns1:tx' , {NAME=>'f1',TTL=>10,VERSIONS,KEEP_DELETED_CELLS=>true}
hbase基于hdfs
相同列族的数据存放在一个文件中。
[表数据的存储目录结构构成]
hdfs://s201:8020/hbase/data/${名字空间}/${表名}/${区域名称}/${列族名称}/${文件名}
[WAL目录结构构成]
hdfs://s201:8020/hbase/WALs/${区域服务器名称,主机名,端口号,时间戳}/
client端交互过程
0.hbase集群启动时,master负责分配区域到指定区域服务器。
1.联系zk,找出meta表所在rs(regionserver)
/hbase/meta-region-server
2.定位row key,找到对应region server
3.缓存信息在本地。
4.联系RegionServer
5.HRegionServer负责open HRegion对象,为每个列族创建Store对象,Store包含多个StoreFile实例,
他们是对HFile的轻量级封装。每个Store还对应了一个MemStore,用于内存存储数据。