HBase2.0.2升级HBase2.2.7遇到的问题及处理方法

举报
Lettle whale 发表于 2022/04/19 11:40:17 2022/04/19
【摘要】 hbase2.0.2升级到hbase2.2.7

HBase低版本2.0+升级到HBase2.2+的方法可以参考官方文档,如下,

https://hbase.apache.org/book.html

2.2版本移除了Unassign和Assign的Procedure,导致低版本升级上来后,读取到Procedure日志内容时会解析不出来

13.3. Upgrade from 2.0 or 2.1 to 2.2+

HBase 2.2+ uses a new Procedure form assigning/unassigning/moving Regions. It does not process HBase 2.1 and 2.0’s Unassign/Assign Procedure types. Upgrade requires that we first drain the Master Procedure Store of old style Procedures before starting the new 2.2 Master. So you need to make sure that before you kill the old version (2.0 or 2.1) Master, there is no region in transition. And once the new version (2.2+) Master is up, you can rolling upgrade RegionServers one by one.

And there is a more safer way if you are running 2.1.1+ or 2.0.3+ cluster. It need four steps to upgrade Master.

  1. Shutdown both active and standby Masters (Your cluster will continue to server reads and writes without interruption).

  2. Set the property hbase.procedure.upgrade-to-2-2 to true in hbase-site.xml for the Master, and start only one Master, still using the 2.1.1+ (or 2.0.3+) version.

  3. Wait until the Master quits. Confirm that there is a 'READY TO ROLLING UPGRADE' message in the Master log as the cause of the shutdown. The Procedure Store is now empty.

  4. Start new Masters with the new 2.2+ version.

Then you can rolling upgrade RegionServers one by one. See HBASE-21075 for more details.

如果HBase版本是2.0.2版本要升级却无法适用。如果在集群有数据的升级到了2.2.7版本时候,会遇到“Unsupported procedure type class org.apache.hadoop.hbaes.master.assignment.AssignProcedure found” 这样的错误。此时也没有别的方法,只能回退或者人工操作。

这里简单说一下2.0.2离线升级到2.2.7的步骤

1、2.0.2hbase升级前,将所有的业务表disable

2、停止hbase2.0.2集群

3、删除zk上hbase的meta server节点 (为了升级后meta region能正常上线)

4、删除hdfs上hbase的master procedure文件,

5、升级替换hbase2.0.0-->hbase2.2.7的包

6、启动HBase,此时meta表能上线,namespace无法上线,需要人工处理,hbck2工具或者操作,见下方

7、namespace表上线后,hbase表就完全启动了

8,enable所有的业务表

这里第1,8步骤的disable和enable表,是因为直接删除master procedure文件,会导致所有的表处于一种僵死状态,不能下线也不能上线,人工操作比较难维护,需要hbck2工具单独处理,所以不如一开始就disable掉

执行下面的hbck2命令可以恢复namespace表

hbase hbck -j /opt/client/HBase/hbase/tools/hbase-hbck2-2.1.1.jar unassigns -o 7e7719d84ad7f8628a97f63077d6a1a2 
hbase hbck -j /opt/client/HBase/hbase/tools/hbase-hbck2-2.1.1.jar assigns -o 7e7719d84ad7f8628a97f63077d6a1a2 

如果上面hbck2命令不能执行,可以通过手工修改meta表的方式来做,将他修改为closed

1)echo "scan 'hbase:meta'" | hbase shell | grep namespace (meta表上线的情况下)
2)在hbase shell里修改namespace region状态为CLOSED
put 'hbase:meta','hbase:namespace,,1596186888290.f4cdd3699b35ca2b74de6ef48f8f0696.','info:state','CLOSED' (以实际的rowkey为准)
3)等待一分多钟(可tail -f hbase-ommxxxx.log | grep namespace 观察)
【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。