本文主要演示通过 Ambari 滚动升级的方法,将 HDP 3.0.1.0
版本升级到自定义的 HDP 3.0.2.0
版本,将 ZooKeeper 3.4.6 版本升级到 3.4.14 版本。
准备环境
测试环境
- Centos 7.4
- Ambari 2.7.1
- HDP 3.0.1.0
- 已正常安装 Ambari 及集群,并且只安装 ZooKeeper 一个服务。
准备升级的yum源
1 2
| mkdir -p /var/www/html/Insight_upgrade/insight cd /var/www/html/Insight_upgrade/insight
|
- 注意 rpm 包的命名方式,
zookeeper_3_0_2_0_187
与 3.4.14.3.0.2.0-187
以 “-” 相连,且 rpm 打包时的 “name” 为 zookeeper_3_0_2_0_187
,”version” 为 3.4.14.3.0.2.0-187
。升级包可以在原有的 rpm 包基础上通过更新文件的方式重新打包而成,详细资料可以参考 :
rpm2rpm 打包步骤
可以在页面查看 http://10.180.xxx.xxx/Insight_upgrade/insight/
进行查看
准备版本xml文件
1
| cd /var/lib/ambari-server/resources/stacks/HDP/3.0/repos
|
在 hdp_urlinfo.json
中添加 3.0.2.0
版本,添加好的文件内容如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
| { "HDP-3.0":{ "latest":{ "centos7":"http://public-repo-1.inspur.com/HDP/centos7/3.x/updates/3.0.1.0" }, "latest-vdf":{ "centos7":"./hdxml/HDP-3.0.1.0-187.xml" }, "maintenance":{ "3.0.2.0":{ "centos7":"./hdxml/HDP-3.0.2.0-187-MAINT.xml" }, "3.0.1.0":{ "centos7":"./hdxml/HDP-3.0.1.0-187-MAINT.xml" } }, "manifests":{ "3.0.2.0":{ "centos7":"./hdxml/HDP-3.0.2.0-187.xml" }, "3.0.1.0":{ "centos7":"./hdxml/HDP-3.0.1.0-187.xml" } } } }
|
分别复制 HDP-3.0.1.0-187.xml
和 HDP-3.0.1.0-187-MAINT.xml
为 HDP-3.0.2.0-187.xml
和 HDP-3.0.2.0-187-MAINT.xml
。
在 HDP-3.0.2.0-187.xml
中主要添加
1 2 3
| <manifest> <service id="ZOOKEEPER-346" name="ZOOKEEPER" version="3.4.14"/> </manifest>
|
完整的文件内容如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42
| <?xml version="1.0"?> <repository-version xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="version_definition.xsd"> <release> <type>STANDARD</type> <stack-id>HDP-3.0</stack-id> <version>3.0.2.0</version> <build>187</build> <compatible-with>3\.\d+\.\d+\.\d+</compatible-with> <release-notes>http://example.com</release-notes> <display>HDP-3.0.2.0</display> </release> <manifest> <service id="ZOOKEEPER-346" name="ZOOKEEPER" version="3.4.14"/> </manifest> <available-services/> <repository-info> <os family="redhat7"> <package-version>3_0_1_0_*</package-version> <repo> <baseurl>http://public-repo-1.hortonworks.com/HDP/centos7/3.x/updates/3.0.1.0</baseurl> <repoid>HDP-3.0</repoid> <reponame>HDP</reponame> <unique>true</unique> </repo> <repo> <baseurl>http://public-repo-1.hortonworks.com/HDP-GPL/centos7/3.x/updates/3.0.1.0</baseurl> <repoid>HDP-3.0-GPL</repoid> <reponame>HDP-GPL</reponame> <unique>true</unique> <tags> <tag>GPL</tag> </tags> </repo> <repo> <baseurl>http://public-repo-1.hortonworks.com/HDP-UTILS-1.1.0.22/repos/centos7</baseurl> <repoid>HDP-UTILS-1.1.0.22</repoid> <reponame>HDP-UTILS</reponame> <unique>false</unique> </repo> </os> </repository-info> </repository-version>
|
在 HDP-3.0.2.0-187-MAINT.xml
中主要添加
1 2 3
| <manifest> <service id="ZOOKEEPER-346" name="ZOOKEEPER" release-version="3.0.2.0" version="3.4.14"/> </manifest>
|
完整的文件内容如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42
| <?xml version="1.0"?> <repository-version xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="version_definition.xsd"> <release> <type>MAINT</type> <stack-id>HDP-3.0</stack-id> <version>3.0.2.0</version> <build>187</build> <compatible-with>3\.0\.[0-0]\.\d+</compatible-with> <release-notes>http://example.com</release-notes> <display>HDP-3.0.2.0</display> </release> <manifest> <service id="ZOOKEEPER-346" name="ZOOKEEPER" release-version="3.0.2.0" version="3.4.14"/> </manifest> <available-services/> <repository-info> <os family="redhat7"> <package-version>3_0_1_0_*</package-version> <repo> <baseurl>http://public-repo-1.hortonworks.com/HDP/centos7/3.x/updates/3.0.1.0</baseurl> <repoid>HDP-3.0</repoid> <reponame>HDP</reponame> <unique>true</unique> </repo> <repo> <baseurl>http://public-repo-1.hortonworks.com/HDP-GPL/centos7/3.x/updates/3.0.1.0</baseurl> <repoid>HDP-3.0-GPL</repoid> <reponame>HDP-GPL</reponame> <unique>true</unique> <tags> <tag>GPL</tag> </tags> </repo> <repo> <baseurl>http://public-repo-1.hortonworks.com/HDP-UTILS-1.1.0.22/repos/centos7</baseurl> <repoid>HDP-UTILS-1.1.0.22</repoid> <reponame>HDP-UTILS</reponame> <unique>false</unique> </repo> </os> </repository-info> </repository-version>
|
重启ambari server
注册版本
注册版本
使用 admin
用户登录,依次点击右上角 admin
旁的倒立小三角 —— 管理 Ambari —— 版本,点击右上角的”注册版本”,
然后可以看到 HDP-3.0.2.0
版本,且 ZooKeeper 版本已经为 3.4.14。
将软件源设置为本地软件源
HDP-3.0
的源即为刚设置的升级源,HDP-UTILS-1.1.0.22
设置成与原来正常安装 Ambari 中的一样。
- 要勾选“跳过资源库基本URL验证”选项。
保存后就会出现下面一行版本信息。
添加 gpl repo 源
升级过程中需要有 gpl 源,在文件夹 /etc/yum.repos.d/
中添加 hdp_gpl.repo
, hdp_gpl.repo
内容如下:
1 2 3 4 5 6 7
| [HDP-3.0-GPL-repo-51] name=HDP-3.0-GPL-repo-51 baseurl=http://10.180.xxx.xxx/InsightHD/hdp_gpl/
path=/ enabled=1 gpgcheck=0
|
这里的 baseurl=http://10.180.xxx.xxx/InsightHD/hdp_gpl/
是之前正常安装 Ambari 时的 hdp_gpl
源地址,需要将 “name” 换成 name=HDP-3.0-GPL-repo-51
,这里的名称是根据当前版本的 ID 来的,第二个源的 ID 是 51,可根据实际情况修改,如果这里设置不对,之前安装服务过程中会报错,根据提示做相应修改即可。
将 hdp_gpl.repo
文件拷贝至所有节点的 /etc/yum.repos.d/
目录中,然后所有节点执行如下命令更新 yum 源:
1 2
| yum clean all yum makecache
|
升级
安装软件包
如下图所示,将 HDP-3.0.2.0
版本安装在当前集群,
然后点击 “安装软件包”,
弹出确认提示,确定即可。
等待安装完成即可。
这时可以通过后台查看安装内容
可以看到 3.0.2.0-187
版本已经安装了,但是 current
版本还是之前的版本。
关闭服务自动启动
升级前需要关闭服务自动启动,否则升级校验不过
升级
现在开始升级过程
点击 “升级” 按钮,这是会进行升级前的检查工作。
显示 “Rolling” 和 “Express” 检查都通过,这里选择 “Rolling” 滚动升级。
此时已经升级完成,需要测试下是否正常。
可以点击查看下 ZooKeeper 的操作过程,
这里可以看到,ZooKeeper 是分批滚动重启的。
进入后台查看下 ZooKeeper 的版本
这里可以看到,”current” 中的 zookeeper 版本已经指向 3.0.2.0-187
版本了。
进入 bin
文件夹,执行 ./zkCli.sh
,
可以看到,当前版本已经是 3.4.14
版本了,可以查看下之前的数据还在。
点击”我执行了上面的手动操作步骤”,如下图所示
然后进度条会到 100%
点击 “取消” 按钮,完成,这里应该是“完成”,应该是开源 bug。
查看版本
回来在查看版本
当前使用的 ZooKeeper 已经是 3.4.14 了。
可以查看下“更新历史”
这里的“类型”有翻译错误,实际上是 “Rolling”。
查看 ZooKeeper 状态,一切正常,升级完毕。