前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >HBase集群WAL无法split,rs不断挂掉

HBase集群WAL无法split,rs不断挂掉

原创
作者头像
stevenxi
修改2022-08-24 11:01:29
3800
修改2022-08-24 11:01:29
举报
文章被收录于专栏:大数据分布式存储

regionserver日志如下

追查源码发现在WAL split时(WAL split是指RS异常挂掉后,其他RS会对该RS的WAL做relplay),WAL split时先将该WAL加载到内存,解析为entry,判断每个entry里的cell数据是否属于meta表

若属于meta表,则跳过该entry 若不是,则将该entry加入entryBuffers,等待后续重新加载到新region上

遍历cell的逻辑如下图所示

判断cell的逻辑中会cell和public static final byte [] METAFAMILY = Bytes.toBytes("METAFAMILY"),做比较。解析cell时需要将bytes数组转换为short类型

java中每个short为16位,每个byte为8位,所以bytes数组长度不能小于2

异常显示待转换的short数组长度为1,不符合转换条件,抛出异常。导致RS不断重启

解决办法:

移除split不不成功的WAL,问题解决,RS恢复正常

这个操作会暂时丢部分(量级非常小)数据,解决办法是:

待rs恢复正常后,将移除的WAL移回原目录,master进行切换,新master会重新加载WAL目录,并解析WAL(该操作待验证)。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档