前言

为了满足业务需求,有时候我们需要单独调整部分组件的版本。目前无法通过ambari界面来进行操作,我们只能通过后台进行相应的升级操作。
本次升级目标:hbase1.1 ——》hbase2.0.3

一、升级hbase操作

注:生产使用前请进行测试。

下载apache hbase安装包
image.jpeg

下载地址:http://archive.apache.org/dist/

1. 通过ambari停止hbase服务


image.jpeg

2. 备份并启用新hbase安装包

所有节点操作
cd /usr/hdp/2.6.0.3-8
mv hbase hbase_bk
找一个节点操作
上传hbase-2.0.2-bin.tar.gz到服务器
mv hbase-2.0.2-bin.tar.gz /usr/hdp/2.6.0.3-8
tar zxvf hbase-2.0.2-bin.tar.gz
mv hbase-2.0.2 hbase

替换配置文件
cd /usr/hdp/2.6.0.3-8/hbase
rm -rf conf/
ln -s /etc/hbase/2.6.0.3-8/0 conf

替换bin目录
cd /usr/hdp/2.6.0.3-8/hbase
rm -rf bin/
上传已配好的bin目录(已准备好)
cd bin/

image.jpeg
rm -rf hbase
将之前的hbase拷到此目录
cp -r hbase ../../hbase/bin/
image.jpeg

lib目录创建软连接
cd /usr/hdp/2.6.0.3-8/hbase/lib/
ln -s hbase-annotations-2.0.2.jar hbase-annotations.jar
ln -s hbase-client-2.0.2.jar hbase-client.jar
ln -s hbase-common-2.0.2.jar hbase-common.jar
ln -s hbase-endpoint-2.0.2.jar hbase-endpoint.jar
ln -s hbase-examples-2.0.2.jar hbase-examples.jar
ln -s hbase-external-blockcache-2.0.2.jar hbase-external-blockcache.jar
ln -s hbase-hadoop2-compat-2.0.2.jar hbase-hadoop2-compat.jar
ln -s hbase-hadoop-compat-2.0.2.jar hbase-hadoop-compat.jar
ln -s hbase-http-2.0.2.jar hbase-http.jar
ln -s hbase-it-2.0.2.jar hbase-it.jar
ln -s hbase-mapreduce-2.0.2.jar hbase-mapreduce.jar
ln -s hbase-metrics-api-2.0.2.jar hbase-metrics-api.jar
ln -s hbase-metrics-2.0.2.jar hbase-metrics.jar
ln -s hbase-procedure-2.0.2.jar hbase-procedure.jar
ln -s hbase-protocol-2.0.2.jar hbase-protocol.jar
ln -s hbase-protocol-shaded-2.0.2.jar hbase-protocol-shaded.jar
ln -s hbase-replication-2.0.2.jar hbase-replication.jar
ln -s hbase-resource-bundle-2.0.2.jar hbase-resource-bundle.jar
ln -s hbase-rest-2.0.2.jar hbase-rest.jar
ln -s hbase-rsgroup-2.0.2.jar hbase-rsgroup.jar
ln -s hbase-server-2.0.2.jar hbase-server.jar
ln -s hbase-shell-2.0.2.jar hbase-shell.jar
ln -s hbase-testing-util-2.0.2.jar hbase-testing-util.jar
ln -s hbase-thrift-2.0.2.jar hbase-thrift.jar
ln -s hbase-zookeeper-2.0.2.jar hbase-zookeeper.jar
ln -s /usr/hdp/2.6.0.3-8/zookeeper/zookeeper.jar zookeeper.jar
image.jpeg

image.jpeg

image.jpeg

上传兼容此版本的ranger包到lib目录下(已准备好)
image.jpeg

将新安装包同步到其它hbase节点。
scp -P 22022 -r hbase root@10.1.234.112:/usr/hdp/2.6.0.3-8/

3. 通过ambari启动hbase服务

image.jpeg4. 进入hbase shell检查。

如果显示如下,证明版本升级成功
image.jpeg

5. hbase hbck检查。

image.jpeg

6. hbase hbck检查。

注:hbase集群所有节点需要执行下面还原操作
通过ambari停止hbase服务
cd /usr/hdp/2.6.0.3-8
mv hbase hbase_bk2
mv hbase_bk/ hbase

hadoop fs -rm /apps/hbase/data/MasterProcWALs/*

通过ambari启动hbase服务即可。

hbase升级过程遇到的问题

一、按照正常升级
1.替换相应的hdp5.0对应的hbsae2.0.2包
2.hbase相关的jar包做软连接
image.png
3.配置文件做软连接
image.png
4.更改启动文件
image.png
5.启动hbase

问题一:rs无法启动,报以下错误(hdfsstatus预期是个接口,但是找的却是类)

image.png
解决此问题的过程及方法
1.通过日志后大概确定是版本不匹配,根据日志报错去查看源码,发现hdfsstatus确实是个接口,没错啊
image.png
2.之后发现hdp的hbase2.0.2版本默认都是用的hdfs3.1的版本,通过查看hdp4.2的hbase源码,发现hdfsstatus的确是个类。
image.png

3.找到这个原因后通过更改pom文件,更改位hdp4.2对应的hadoop版本,重新编译打包。
image.png

问题二:编译打包后启动报错如下(加载metrics时出错)

image.png
解决此问题的过程如下:
1.因metrics版本太低,所以将ocdp5.0的metrics包拷贝过来,做如下软连接
image.png
2.启动成功,问题解决

问题三:因hdfs也在用低版本的metrics,所有hdfs启动失败

解决此问题的方式和上面一样:
1.做一个低版本的metrics软连接给hdfs用
image.png
2.修改hdfs配置文件
ocdp4.2单独升级高版本hbase - 图23
3.hdfs启动成功,问题解决

问题四:为了数据验证,升级之前建了一张普通表,一张snappy压缩表,升级后不支持snappy压缩算法

1.普通表
image.png
2.snappy压缩表
image.png
3.扫描压缩表时报错如下
image.png
4.通过查看日志发现snappy表测试失败
image.png
5.试着去创建了一下snappy表,报错如下snappy库不支持
image.png
解决此问题的过程如下:

1.通过编译二进制的包来获取,命令如下(前提是,依然需要按照之前的方式,修改pom文件):
mvn clean package -DskipTests assembly:single
编译完成后,会在根目录的子目录lib下,找到如下的三个jar:
hbase-shaded-miscellaneous-2.1.0.jar、hbase-shaded-netty-2.1.0.jar、hbase-shaded-protobuf-2.1.0.jar
将这种方式编译出来的这三个jar,和之前upgrade的包,放在一起。

2.拿一份ocdp5.0的HBase的环境,删除lib目录下的所有HBase开头的jar(可以提前做个备份),然后替换为upgrade下的jar。

3.重启启动服务。先启动HMaser,再启动HRegionServer。

4.通过hbck2工具,修复meta表,namespace表,以及not online的region。如下:
hbase hbck -j ./hbase-hbck2-1.0.0-SNAPSHOT-nokerberos.jar -s assigns c8872b54905ac414e7b8b4c7071ee2c5(region名字)
之后就可正常使用服务。
测试:
image.png
以上两张表为升级前,创建的表。一张普通表,一张snappy压缩表。
image.png
image.png
测试以上两张表,正常可用。HMaster及HReionServer正常,且两者日志无异常。

问题五:还有一个因ranger导致hmaster无法启动的问题,通过给ranger包所在目录赋权限解决