HDP2.3.2升级到HDP2.3.4
先介绍下,本集群 BigData 现在的环境是ambari2.1.2,hdp2.3.2,目标是不升级ambari,而升级HDP。本集群有三台机器:master、slave1、slave2,都是运行在centos6.7下的。本文是根据官方文档 HDP2.3.2版本下的Ambari Upgrade Guide 而写的.
之所以写本文,一方面是想把自己的经验分享给大家,另一方面也是有问题请教大家。因为升级到最后,集群中的一台机器slave1总是处在 upgrading状态,而集群中的master 和slave2 却升级成功,显示 upgraded状态。提示:通过ambari集群管理的HDP的升级一定要参考Ambari Upgrade Guide ,而不是Non-Ambari Cluster Upgrade Guide.
1版本对应
1.1 HDP-Ambari-Spark版本对应
1.2 HDP2.3.4 的组件版本
Apache– | versions for– | HDP 2.3.4 |
---|---|---|
Apache Accumulo 1.7.0 | Apache Atlas 0.5.0 | Apache Calcite 1.2.0 |
Apache DataFu 1.3.0 | Apache Falcon 0.6.1 | Apache Flume 1.5.2 |
Apache Hadoop 2.7.1 | Apache HBase 1.1.2 | Apache Hive 1.2.1 |
Apache Kafka 0.9.0 | Apache Knox 0.6.0 | Apache Mahout 0.9.0+ |
Apache Oozie 4.2.0 | Apache Phoenix 4.4.0 | Apache Pig 0.15.0 |
Apache Ranger 0.5.0 | Apache Slider 0.80.0 | Apache Solr 5.2.1 |
Apache Spark 1.5.2 | Apache Sqoop 1.4.6 | Apache Storm 0.10.0 |
Apache Tez 0.7.0 | Apache ZooKeeper 3.4.6 | Additional component |
Cascading 3.0.1 | Hue 2.6.1 |
1.3 spark1.5.2在hdp运行条件
因为主要是想用spark1.5,所以才升级hdp的。
运行Spark 1.5.2的前提条件: HDP版本在2.3.4及以上。
注意:HDP升级到2.3.4以后,spark自动升级到了1.5.2 。
先升级ambari到2.2,再升级HDP到2.3.4,也可以直接用amabri2.1,升级hdp到2.3.4。这几种方法我都试过,但是升级ambari过程中,在进行这步——Ambari Server database schema 时,执行了语句ambari-server upgrade
就会出错,关于升级ambari的文档,以后有空了再写。
2准备
注意:
1. 确保集群操作是健壮的,即各项服务是可以正常启动、停止的。
2. 如果是升级到minor version(如hdp2.2->2.3,而非2.3.2->2.3.4),升级hdp集群前,先把ambari升级到对应的版本。强烈建议升级HDP前,先升级ambari。见图1-1。本文档没有升级amabri。
3. 确保所有服务处在running状态;
4. 服务检查,对service action菜单里的选项试试,确保他们能够正常执行;
5. 清除所有警告;
6. 时间服务启动、停止;
7. 下载必要的包,见表2-1,使用本地库的话,见说明;
8. 如果你是在升级 到Ambari 2.2, 在performing any Stack upgrade之前,必须确保Ranger db root password是非空的。给Ranger db root设置一个密码,然后在Ambari Web 上设置Ranger db root password设为这个值. 然后,在Ambari Web重启Ranger Admin。
9. 备份数据库,ambari,Hive metastore, ranger 和oozie。
10. 确保/usr/hdp/下有>2.5G空间;
11. 提前下载好软件包. 设好本地库。
12. 确保时间点数据库备份,包括Ambari, Hive Metastore, Ranger and Oozie等。
2.1 检查service action 的start 、stop、run service check
2.2启动所有服务并清除警告
2.3 保证没有maintenance状态的服务
2.4 时间服务ntpd启动、停止
在三台机器上,都执行:
service ntpd status
service ntpd stop
service ntpd start
2.5备份数据库
[root@master ~]#mysqldump -uroot -p --all-databases > /root/backupforhdp/all20160117.sql
2.6本地库配置
2.6.1 下载需要的包
提前下好HDP-2.3.4.0-centos6-rpm.tar.gz 和HDP-UTILS-1.1.0.20-centos6.tar.gz。
所有库的最新有效地址 ,是在网页上的。下载后的pdf里的地址不能下载。
版本 | HDP2.3.4.0 | url |
---|---|---|
库名 | Format | URL |
HDP | Repo File | http://public-repo-1.hortonworks.com/HDP/centos6/2.x/updates/2.3.4.0/hdp.repo |
Tarball | http://public-repo-1.hortonworks.com/HDP/centos6/2.x/updates/2.3.4.0/HDP-2.3.4.0-centos6-rpm.tar.gz | |
HDP-UTILS | Tarball | http://public-repo-1.hortonworks.com/HDP-UTILS-1.1.0.20/repos/centos6/HDP-UTILS-1.1.0.20-centos6.tar.gz |
2.6.2 拷贝hdp的升级包到指定位置
将HDP-2.3.4.0-centos6-rpm.tar.gz
拷到 /var/www/html/hdp/HDP/centos6/2.x/updates
下,解压,将解压后的 HDP/centos6/2.x/updates/2.3.4.0/
整个包拷到/var/www/html/hdp/HDP/centos6/2.x/updates/ 下,如图。
2.6.3 拷贝 hdp-utils包
将之前的hdp-utils包剪切到 /root/backupforhdp/下,解压新的 hdp-utils包。
注意:2.3.4 的 utils包 和2.3.2 以前用的那个的不同之处在于,
①/var/www/html/hdp/HDP-UTILS-1.1.0.20/repos/centos6/lucid 下一个是 lucidworks-hdpsearch-2.3-2.noarch.rpm 一个是lucidworks-hdpsearch-2.3-4.noarch.rpm
②/var/www/html/hdp/HDP-UTILS-1.1.0.20/repos/centos6/mysql-connector-java 下,前者只有一个包,后者多了一个包。
③ /var/www/html/hdp/HDP-UTILS-1.1.0.20/repos/centos6/repodata 下内容不同。
2.6.4 base URL
库 | base url |
---|---|
amabri | http://master/ambari-2.2.0.0/centos6/2.2.0.0-1310 |
hdp | http://master/hdp/HDP/centos6/2.x/updates/2.3.4.0 |
hdp-utiles | http://master/hdp/HDP-UTILS-1.1.0.20/repos/centos6 |
2.6.5 对配置多个库的集群要执行
(这是参考的”设置本地库”)因为本集群,机器上 配置了多个库,要在所有节点上部署下列,对Linux6系统,
yum install yum-plugin-priorities
然后,
vi /etc/yum/pluginconf.d/priorities.conf
将其内容做如下修改:
[main]
enabled=1
gpgcheck=0
3准备升级
强烈建议做如下数据库的备份:
• Ambari database
• Hive Metastore database
• Oozie Server database
• Ranger Admin database
• Ranger Audit database
我们在 2.5 已经备份了。
4升级——Manual Maintenance Upgrade
4.1 注册新版本
在这之前,先把所有机器上的HDP.repo 和HDP-UTILS.repo 删了。
在三台机器上,先备份到 /root/backupforhdp,再删除原来的repo:
cp /etc/yum.repos.d/HDP.repo /root/backupforhdp/
cp /etc/yum.repos.d/HDP-UTILS.repo /root/backupforhdp/
rm /etc/yum.repos.d/HDP.repo
rm /etc/yum.repos.d/HDP-UTILS.repo
登录amabri,在ambari web 页面,导航栏里 Admin->Stack and Versions,按tab选项卡,选versions,出现如图,单击右上角 +Register Version
根据你的系统,选择对应的系统、填入base url.
该图片的URL就是我们前边的 base url 。
4.2 安装新版本
4.2.1 在集群上安装包
Install packages 这步等待时间较长,10-20分钟。完成后,如图,注意:不要点 perform。
4.2.2 在三台机器上安装完后,出现:
记住—— 2.3.4.0-3485
4.2.3 选定HDP版本
在ambari web页面,Stop all services 。
然后,在三台机器上执行,hdp-select set all {repository-version},其中{repository-version}就是刚刚记住的 2.3.4.0-3485。
hdp-select set all 2.3.4.0-3485
4.2.4 首先启动 Zookeeper
Services > Zookeeper, 在Service Actions 菜单 ,选择 Restart All。
然后,一个一个地,重启其他已安装服务。
对于 client-only services, 比如像Tez, Pig, or Sqoop, 从service action选择 Refresh Configs。
重启的过程中,三台机器就已经在 upgrading 状态了。
4.2.5 让集群在目标版本上运行
- 如果你的集群中包括Ranger,而且是在HDP2.3下运行,必须做额外的手动操作, 详情见 ,完成了ranger的手动操作后,再回到这部分完成进程。
- 确认所有服务正常启动后,去运行 Ambari Server的机器上,执行以下命令来 完成升级,ambari-server set-current –cluster-name=
CLUSTERNAME−−version−display−name= VERSION_NAME,其中CLUSTERNAME是集群名字, VERSION_NAME 是HDP版本号,如HDP-2.3.4.0。
ambari-server set-current --cluster-name=BigData --version-display-name=HDP-2.3.4.0
结果如图,输入ambari 的登录用户及密码,
但是出错了,
原因是slave1还没有完成升级,是 Upgrading 状态。
但是其他两台机器已经升级完成,如图,
如果 ambari-server set-current 命令不好用,就重启ambari server ,等待ambari agent重新注册,再尝试。
问题
可以看到如图,Upgrade In Process,现在只能等待 slave1完成升级,由Upgrading 变成Upgraded。但是等了一个晚上都没完成。
查看ambari web页面,没有任何正在进行中的状态。
表示很无奈,也不知道怎么回事。
哪位大侠能帮忙看看呢?
升级HDP,由HDP2.2.x 到HDP2.3.m,如 HDP2.2.9 到 HDP2.3.4, 这是minor upgrade,由HDP2.3.x 升级到HDP2.3.y ,如本文的HDP2.3.2 到HDP2.3.4,是maintenance upgrade。
5总结
我总结了有6方法。对这六种方法我都试过,文档已写出来,暂时没有时间整理上来。
- 先升级ambari到2.2,通过rolling方法升级HDP2.3.4
- 先升级ambari到2.2,通过express方法升级到HDP2.3.4
- 不升级ambari,保持在ambari2.1.2,通过rolling方法升级到HDP2.3.4
- 不升级ambari,保持在ambari2.1.2,通过express方法方法升级到HDP2.3.4
- 不升级ambari,保持在ambari2.1.2,通过rolling maintenance 方法升级到HDP2.3.4
- 不升级ambari,保持在ambari2.1.2,通过manual maintenance 方法升级到HDP2.3.4
前四种方法参考的是 HDP2.3.4的文档——Ambari Upgrade Guide
后两种方法参考的是 HDP2.3.2的文档——Ambari Upgrade Guide
本人可能经验不足,希望前辈多多指教!基于实际操作过程中,最后遇到的问题,slave1 总是处于upgrading状态。希望大家能够多出出主意。
另,如有转载,请标明出处,谢谢。