Hbase底层设计 hbase命令

#hbase web : http://20.0.0.180:60010/
#hbase构成

服务

HMaster
( 1)为Region server分配region(2)负责Region server的负载均衡
(3)发现失效的Regionserver并重新分配其上的region( 4)管理用户对table的增删改操作
HRegionserver
(1) region io ->hdfs。(2 ) region split
QuorumPeerMain
/ hbase
backup-masters ,master,
master-maintenance,meta-region-server,namespace,
online-snapshot ,splitWAL,
table
【功能
(1)保证任何时候,集群中只有一个master(2)存贮所有Region的寻址入口。
(3)实时监控Region server的上线和下线信息,并实时迪知Master( 4)存储HBase的schema和table元数据】

存储结构

#物理存储
HRegionserver
HRegion(默认1个->达到阈值自行分裂->HMaster协助迁移->另一台HRegionServer)
store (columnFamily1)
Memstore (128M)
#吞快
storeFile (HFile)
store (ColumnFamily2)
…·
HLog =>WAL(write Ahead Log):数据丢失后进行数据恢复HRegion. . .
#逻辑存储
namespace
table
rowkey: 64k的字节数据,RowKey越短越好,基于rowkey构建一级索引columnFamily:权限控制、存储以及调优都是在列族层面进行的;同一列族里面的数据存储在同一目录下,由几个文件保存
column
cell =>
{row key,column ( = +),version }
column
cell =>
{row key,column ( =+)
version }
未解析的字节数组
值根据时间戳(put是自动填精确到毫秒)倒序排列
timestamp->version

Region切分触发策略

ConstantsizeRegionSplitPolicy : <Vo.94
hbase.hregion.max.filesize
region中压缩后最大的storeFile达到该配置阈值则分裂IncreasingToUpperBoundRegionSplitPolicy : <v2
hbase.hregion.max.filesize
region中压缩后最大的storeFile达到该配置阈值则分裂IncreasingToUpperBoundRegionSplitPolicy: <V2
(#regions) (#regions) (#regions) flush size * 21111282 256M
2
221282 2G3331282 6.75
hbase.hregion.max.filesize=10737418240=10GsteppingSplitPolicy: >=V2
12
128256M
hbase.hregion.max.filesizeKeyPrefixRegionsplitPolicy
KB1009981
KY1878394KW1276272
指定分裂策略为前2个字符
DelimitedKeyPrefixRegionsplitPolicy
KB_1009981
KY_1878394Kw1276272
指定分裂的分隔符为_预分区策略
HexStringSplit、 UniformSplit、 DecimalstringSplit
create ‘test:pre par_test’ , ‘cf1 ’ , ’ cf2’ ,{ NUMREGIONS =>4,SPIITALGO =>‘UniformSplit’ }

创建hbase表语法

create ‘namespace :table’ , 'cfl ',… , ’ cfn ‘create ’ namespace :table’, {
NAME=>'CFNAME ',
VERSIONS=>INT,
BLOCKCACHE=>true,#列簇数据是否存放于内存:吐快BLOOMFILTER=>NONE | ROw (default) | ROWCOL,
row : scan 'ns:table ',{LIMIT=>rows,FIITER=>“PrefixFilter ( ’ CONTENT”)"}row : get 'ns : table ’ ,rowkey
rowcol: get ‘ns : table ’ ,rowkey , ’ cf: col’
COMPRESSION=>NONE|Gzipl LZO | snappy ,
TTL=>NONE | number (second),
IN_MEMORY=>false / true, SPLITS=>见上面预分区策略
/lscan ( limit,filter)
scan 'test : userinfo ',{LIMIT=>3}
create 'test:filter_test ‘,{NAME=>’ relation ',VERSIONS=>3}put 'test: filter_test ‘, ‘1’ , ’ relation:friend’ , ’ zhangsan 'put 'test:filter_test ', '2 ’ , ’ relation:girlfriend ’ , ’ wangwu 'put 'test:filter_test ‘, ’ 2’ , ’ relation: girlfriend ‘, ’ lisi’
put 'test:filter_test ’ , ’ 2 ’ , 'relation:girlfriend ’ , ’ zhangsan ‘put ‘test:filter_test ’ , ’ 3’ , ’ relation: boyfriend’ , ’ zhangsan ’
scan 'test:filter_test ’ , {FILTER=>"ValueFilter (=, ‘substring:zha’ ) "}//版本切换查看历史数据
scan ‘test:userinfo’, {VERSIONS=>2 }//指定版本数
create 'test:filter_test ‘,{NAME=>’ relation ',VERSIONS=>3}/修改分区策略
hbase.regionserver.region.split.policy全局配置hbase.hregion.max.filesize

上一篇:【源码分析】Laravel-admin 关联保存的原理


下一篇:leetcode题库学习系列——LCP 07. 传递信息