1,遇到的问题
- hbase数据写入频繁,触发memstore刷写次数多,导致region , RS 下线,写入失败
- hbase 发生compact ,导致RS下线,查询失败
2,hbase读写流程
- hbase数据的存储结构:https://blog.csdn.net/eyeofeagle/article/details/105506606
- hbase读写流程图:https://sematext.com/blog/hbase-memstore-what-you-should
- https://blog.cloudera.com/guide-to-using-apache-hbase-ports/
- 表数据读写:
1 (通过zk, 获取meta区域的服务器地址)
2 (找到表所在的regionserver,开始读写) - 管理 Hbase表( memstore刷写,hfile合并 ):
1 (通过zk, 获取meta区域的服务器地址)
3 (通过master节点,创建/修改表)
4 (master节点通知regionserver打开/关闭/移动/分割/刷新/压缩区域)
5 (master节点把数据:[meta区域的服务器地址,创建日志拆分任务等],存入zk)
6,7,8 (regionserver 读取zk数据,执行拆分日志等任务,并报告给master节点)
通过zookeeper-client 命令行登录,查看zk中的数据:
[zk: localhost:2181(CONNECTED) 2] ls /hbase
[ meta-region-server, rs, master, namespace, hbaseid, table .... ]
[zk: localhost:2181(CONNECTED) 3] get /hbase/master
�master:60000-��3�gNNPBUF
hadoop1�����.��
...
[zk: localhost:2181(CONNECTED) 4] ls /hbase/rs
[hadoop1,60020,1605056703882]
[zk: localhost:2181(CONNECTED) 5] get /hbase/meta-region-server
�regionserver:60020]�i~p�<PBUF
hadoop1�����.
...
[zk: localhost:2181(CONNECTED) 6] ls /hbase/namespace
[default, t1, hbase]
[zk: localhost:2181(CONNECTED) 7] get /hbase/namespace/default
�master:60000J3�g�e
default
...
3,regionserver 内存调节
思路:CDH 管理的Hbase Region Server 内存调节
- 保存数据的是Region Server,要加大其java 堆内存:(4G); Master节点可小:(1G)
- Region Server内存主要消耗在缓存上:(以下两者之和不能大于0.8, 否则会报错)
hfile.block.cache.size(磁盘HFile缓存),默认0.4
hbase.regionserver.global.memstore.size (hbase写入数据到缓存), 默认0.4
MemStore刷写触发的条件:
- hbase.hregion.memstore.flush.size默认128M :每10s检查, 当memstore大小超出时flush
- hbase.regionserver.global.memstore.size:当该Region Server管理的所有memstore总大小超出时flush