Hbase 集群维护

集群维护
手动flush
hbase> flush 'REGIONNAME'

> flush 't2,''482129525576.b9de5c52a9c3fb4580ee9cacb6520e7f'

日常维护:
1,flush 'testtable',将所有memstore刷新到hdfs,通常如果发现regionserver的内存使用过大,造成该机的 regionserver很多线程block,可以执行一下flush操作,这个操作会造成hbase的storefile数量剧增,应尽量避免这个操作,还有一种情况,在hbase进行迁移的时候,如果选择拷贝文件方式,可以先停写入,然后flush所有表,拷贝文件。

================compact 合并====================================================

## 1. major compactions
会将store中的所有storefile合并成一个文件
会删除已经过期的cells
## 2. minor compactions
一般会合并一些临近的小的storefile文件
不会删除已经过期的cells
偶尔也会将所有storefile文件合并成一个文件,此时它已经将自己提升为一个major compactions

minor compaction,轻量级
将符合条件的最早生成的几个storefile合并生成一个大的storefile文件,它不会删除被标记为“删除”的数据和已过期的数据,并且执行过一次minor合并操作后还会有多个storefile文件。

major compaction,重量级
把所有的storefile合并成一个单一的storefile文件,在文件合并期间系统会删除标记为"删除"标记的数据和过期失效的数据,同时会block所有客户端对该操作所属的region的请求直到合并完毕,最后删除已合并的storefile文件。

日常维护:
2,major_compact 'testtable',通常生产环境会关闭自动major_compact(配置文件中hbase.hregion.majorcompaction设为0),选择一个晚上用户少的时间窗口手工major_compact,如果hbase更新不是太频繁,可以一个星期对所有表做一次 major_compact,这个可以在做完一次major_compact后,观看所有的storefile数量,如果storefile数量增加到 major_compact后的storefile的近二倍时,可以对所有表做一次major_compact,时间比较长,操作尽量避免高锋期。

eg:
删除前:scan  'nsa:users'
10010   column=info:name, timestamp=1498812410496, value=murongfu
                  
delete 'nsa:users','10010','info:name'


再次查询:scan  'nsa:users'
已无对应记录

查询删除数据:打上了删除标记
scan 'nsa:users',{RAW => true,VERSIONS => 1}
10010            column=info:name, timestamp=1499093816706, type=
                  DeleteColumn                                    
10010            column=info:name, timestamp=1498812410496, value

                  =murongfu



=============================flush==============================================
通过调用HTable.setAutoFlush(false)方法可以将HTable写客户端的自动flush关闭,这样可以批量写入数据到HBase,而不是有一条put就执行一次更新,只有当put填满客户端写缓存时,才实际向HBase服务端发起写请求。默认情况下auto flush是开启的。
手动flush
flush 'nsa:users'

手动major_compact
major_compact 'nsa:users'
scan 'nsa:users',{RAW => true,VERSIONS => 1}


==============================Split==========================================
减少Region Split次数:
region split是提升写性能的一大障碍。减少region split次数可以从两方面入手,一是预分配region。其二是适当提升hbase.hregion.max.filesize
 
提升region的file容量也可以减少split的次数。具体的值需要按照你的数据量,region数量,row key分布等情况具体考量。一般来说,3~4G是不错的选择。
手动split
split 'tableName'  ## 默认从表的中间进行切分
> split 'so_detail_hbase'

split 'regionName', 'splitKey'
## 从指定的key将region进行切分
> split 'so_detail_hbase,,1482198683093.417cac6f3fb082186a315d1c4f4869b4.' ,'397777'

> split  '1213fd43e864d02e696054d767ffaa1f','17'
注意:regionname可以是全名 也可以是它的hash后缀

================move===============================================
移动region
> move 'regionname'  --//仅能加region的hash后缀名
=====================balance================================================
3,balance_switch true或者balance_switch flase,配置master是否执行平衡各个regionserver的region数量,当我们需要维护或者重启一个regionserver时,会关闭balancer,这样就使得region在regionserver上的分布不均,这个时候需要手工的开启balance。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值