实验:研究hbase自动均衡对接口读写的影响
(8月9号有做1个实验,数据量是1300G,自动均衡600个region,耗时300秒,均衡过程中接口未报错)
测试目的:研究region自动均衡对接口读写的影响
测试步骤如下
1.
测试集群环境关闭以下Region Servers
hbase-slave-003,
hbase-slave-004,
hbase-slave-005
2.
161集群环境开启以下Region Servers,使得集群仅有2个Region Servers
hbase-slave-001
hbase-slave-002
同时新建phoenix的会员表和对应的索引表
3.
开始推送数据进入测试集群,数据量大于200G时停止
4.
数据推送停止后
本地电脑开启5个线程进行Phoenix读操作。具体的读操作命令可参考
SELECT * FROM MEMBER where MEMBER_ID > ? limit 100
5.
数据推送停止后
本地电脑另外开启5个线程进行写操作。具体的写操作命令可参考
upsert INTO
MEMBER (MEMBER_ID,MEMBER_NO,MEMBER_NAME)
VALUES
(UUID,UUID,UUID)
6. 20:00开始运行,运行15分钟后,未发现程序运行异常,数据读取和写入均正常,并且集群每秒接收请求600个左右,查看hbase日志也无明显异常
7.
20:23:00
测试集群环境几乎同时开启以下Region Servers
hbase-slave-003,
hbase-slave-004,
hbase-slave-005
8.
20:25:37日志中发现集群开始进行负载均衡
20:26:14 日志中发现负载均衡已停止,无rit,页面显示已均衡所有region
9.
2021-07-21 20:25:51 开始发现程序报错,
2021-07-21 20:26:11 后程序结束报错
错误为
Write to the index failed. disableIndexOnFailure=true, Failed to write to multiple index tables: [IDX_GY_MEMBER_INFO_MOBILE_PHONE]
上述错误出现约16次
10. 由于写有校验代码,如果操作数据库的结果不符合预期,则会打印日志
经过排查,所有线程读写正常,报错是第三方jar包线程池报错,外部业务线程是无感知的
11. 后续程序又继续运行了25分钟,无报错,写入线程5个和读取线程5个都正常
结论:均衡过程中存在报错,均衡后无报错,并且报错对外部业务线程无感知,线程读写数据正常
推测:phoenix有重试机制,默认16次,在这个次数内失败可以重试
注:以上实验是在均衡节流为0.1的情况下测试的