0%

Ambari 滚动升级方法

本文主要演示通过 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_1873.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.xmlHDP-3.0.1.0-187-MAINT.xmlHDP-3.0.2.0-187.xmlHDP-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

1
ambari-server restart

注册版本

注册版本

使用 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 状态,一切正常,升级完毕。