本文共 1242 字,大约阅读时间需要 4 分钟。
Namespace:其实就是database,但是Hbase其实没有数据库这种概念的,为了区分就叫namespace。
安全上做的比较粗糙,用grant来授权给表或者列族(这里做的还挺细)
R 织入
W 可写
C 创建
A 管理
如grant 'liugen' ,'RWCA' ,'my_hbase_table'
revoke 去掉权限
反向操作很简单
查询就用 user_permission 'my_hbase_table'
HBase Region是随着put数据不断变大的,内部机制细胞分裂搬地进行分Region。
新Region会放到另一个RegionServer。
两种方式:
0.默认自动化
1. 人为设定,但本质还是自动化,达到某些阀值就自动split。
2. 自定义split方式
Compaction:压缩(打包)机制
动机是普通的关系型数据库删了就是从磁盘上删了,这样速度就比较慢。
而Hbase是通过合并日志的方式,把新数据直接append到旧数据后面,在内存中直接合并。
这样的好处是速度非常快,相当于以空间换时间,以后我们发现旧版本确实用不上的时候(维护的时候),我们在把数据从磁盘上删除。
压缩有2种,一种是小文件的压缩,一种是大文件的压缩。
小文件的压缩如下图所示,HBase把文件从RegionServer下发到hdfs中,由于它用的都是自己的HFile格式,64k一个数据块很小。小文件太多不适合hdfs,所以就用minor compaction来合并成相对大的文件。这种情况不怎么占用I/O CPU资源,随时可以进行。
Majorcompaction:大的合并也如下图所示
1. 把相同column family的所有Hfile文件统一合并起来
2.把标记过的打算删的文件,这次就真的从disk上删掉
compaction占用空间资源比较多,系统空闲时才能做。
总结
压缩过程:
写Hbase的时候,先写到WAL(预写式日志),
写到一定数量文件之后就会把这个log 给flush到disk
同时把Memstore里面真正的数据flush到disk。
也就是说,我们是先通过WAL来把它写入hdfs,之后在缓存Memstore里对数据进行一些处理,
然后再真正的写入hdfs的disk,然后做Minor Compaction和Major Compaction。
(这块现在不用理解这么深,有个大概印象就行,后面再深入理解,你现在知道是先通过log来合并就好,
然后Memstore是真正产生HFile的地方)
flush和MInor Compaction是事件驱动,
Major Compaction必须是时间驱动,因为对I/O和CPU消耗太大。
相关控制
Flush 可以设置memstore.flush的大小,
Mionor Compaction 你可以控制最大和最小的文件数目来合并。
Major Compaction 定义时间间隔来进行。
转载地址:http://xuvws.baihongyu.com/