前言
为了满足业务需求,有时候我们需要单独调整部分组件的版本。目前无法通过ambari界面来进行操作,我们只能通过后台进行相应的升级操作。
本次升级目标:hbase1.1 ——》hbase2.0.3
一、升级hbase操作
注:生产使用前请进行测试。
下载apache hbase安装包
下载地址:http://archive.apache.org/dist/
1. 通过ambari停止hbase服务
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/
rm -rf hbase
将之前的hbase拷到此目录
cp -r hbase ../../hbase/bin/
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
上传兼容此版本的ranger包到lib目录下(已准备好)
将新安装包同步到其它hbase节点。
scp -P 22022 -r hbase root@10.1.234.112:/usr/hdp/2.6.0.3-8/
3. 通过ambari启动hbase服务
4. 进入hbase shell检查。
5. hbase hbck检查。
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包做软连接
3.配置文件做软连接
4.更改启动文件
5.启动hbase
问题一:rs无法启动,报以下错误(hdfsstatus预期是个接口,但是找的却是类)
解决此问题的过程及方法
1.通过日志后大概确定是版本不匹配,根据日志报错去查看源码,发现hdfsstatus确实是个接口,没错啊
2.之后发现hdp的hbase2.0.2版本默认都是用的hdfs3.1的版本,通过查看hdp4.2的hbase源码,发现hdfsstatus的确是个类。
3.找到这个原因后通过更改pom文件,更改位hdp4.2对应的hadoop版本,重新编译打包。
问题二:编译打包后启动报错如下(加载metrics时出错)
解决此问题的过程如下:
1.因metrics版本太低,所以将ocdp5.0的metrics包拷贝过来,做如下软连接
2.启动成功,问题解决
问题三:因hdfs也在用低版本的metrics,所有hdfs启动失败
解决此问题的方式和上面一样:
1.做一个低版本的metrics软连接给hdfs用
2.修改hdfs配置文件
3.hdfs启动成功,问题解决
问题四:为了数据验证,升级之前建了一张普通表,一张snappy压缩表,升级后不支持snappy压缩算法
1.普通表
2.snappy压缩表
3.扫描压缩表时报错如下
4.通过查看日志发现snappy表测试失败
5.试着去创建了一下snappy表,报错如下snappy库不支持
解决此问题的过程如下:
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名字)
之后就可正常使用服务。
测试:
以上两张表为升级前,创建的表。一张普通表,一张snappy压缩表。
测试以上两张表,正常可用。HMaster及HReionServer正常,且两者日志无异常。