温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

CDH集群升级事故的解决方法是什么

发布时间:2021-12-07 15:34:50 来源:亿速云 阅读:208 作者:柒染 栏目:大数据

本篇文章为大家展示了CDH集群升级事故的解决方法是什么,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。

 01问题现象

某日明哥接到求助,集群运维人员在通过 cloudera manager 的 upgrade cluster 选项 (见下图一),升级 cdh  集群时遇到了问题,卡在了 "Execute command Upgrade Hive Metastore Database Schema on service  Hive" 这一步。由于我们的应用系统是基于 Hive 的离线计算作业,hive升级不成功,应用应用无法启动,该问题亟待解决。

CDH集群升级事故的解决方法是什么

"Execute command Upgrade Hive Metastore Database Schema on service Hive"  这一步前的步骤是执行成功的,包括HDFS的升级:

CDH集群升级事故的解决方法是什么

02问题分析

查看cm页面上执行 "Execute command Upgrade Hive Metastore Database Schema on service  Hive" 这一步时的 stdout 和 stderr 日志,其内容如下(页面日志没来得及截图,以下截图是当时复制出来的页面日志的内容):

stdout.log:

CDH集群升级事故的解决方法是什么

stderr.log:

CDH集群升级事故的解决方法是什么

查看hive metastore database 升级脚本的内容:

CDH集群升级事故的解决方法是什么

可见该升级脚本只是更改了 hive 的 mysql metastore db,更新了 hive 库中 DBS 表的结构 (增加了一列  create_time);并更新了 cdh_version表的一条记录。

如此简单的 ddl 语句和 dml  语句会执行失败,很可能的原因是使用的数据库用户名和密码不对或没有更新权限。我们需要验证下使用的用户名和密码是否正确,以及是否有相应的权限。这些连接信息和用户名密码信息是在  cm 中 hive 配置页面指定的:

CDH集群升级事故的解决方法是什么

不幸的是,如上图可见,出于保护敏感信息的需要,cm 页面屏蔽了用户配置的 hive metastore db 的用户密码。

(事实上 stdout.log 日志中也告诉了我们连接信息和用户名信息,跟上述配置是一致的:Metastore connection URL 是  jdbc:mysql://node1:3306/hive?useUnicode=true&characterEncoding=UTF-8;Metastore  connection User 是 root。)

所以接下来,我们的思路是,拿到 hive metastore db 需要使用的正确的用户名和密码,并在上述页面配置下,再次重试集群升级步骤。

03如何获取 hive metastore db 的用户名和密码呢?

如何获取 hive metastore db 的用户名和密码呢?

方法一:找集群管理员索取。

该方法是可行的,但由于hive metastore db  的用户名和密码,是在初次搭建集群是设置的,集群搭建完毕后正常使用过程中很少会使用到该用户名和密码,日常越久可能集群管理员也会忘记最初的用户名和密码。(集群多了也可能会搞混淆)

方法二:查看配置文件hive-site.xml 获取。

该方法在 hive 的早期版本是可行的,但在1.x 后(不记得具体的版本了。。。),同样出于保护敏感信息的原因,hive-site.xml  中也屏蔽了该信息,如下所示:

CDH集群升级事故的解决方法是什么

方法三:通过 curl 访问 cm 提供的特定 restful 接口获取集群配置信息,包括 hive metastore 用户名和密码。

该接口的地址和访问方式是:curl -u cm-user:cm-pwd  "http://cm-host:7180/api/v19/cm/deployment",示例如下:

CDH集群升级事故的解决方法是什么

04问题解决

在通过上述方法三,拿到了 hive metastore db 的正确用户名和密码后,在 hive  配置页面配置完毕正确的用户名和密码后,再次尝试升级集群(通过在 cm 的 Running Commands 页面,resume 恢复 upgrade  cluster 命令即可),集群升级正确执行,直至结束,如下所示:

CDH集群升级事故的解决方法是什么


CDH集群升级事故的解决方法是什么

05HDFS 集群升级后的收尾

做过 hdfs 集群升级的小伙伴,会留意到,通过以上步骤升级完毕集群后,hdfs 集群可以正常对外提供读写服务,但在 hdfs 的 web  页面会有个提示信息 "upgrade in progress. not yet finalized",如下所示:

CDH集群升级事故的解决方法是什么

事实上,这是 hdfs 有意为之的升级机制:hdfs 允许用户在集群升级完毕后,再次对集群进行充分的业务测试和验证,确保一切无误后,才来 finalize  , 即 commit 整个 update;如果业务验证失败,可以回滚到升级前的版本。"Finalizing upgrade is separate  process that should be invoked manually after you confirm that data migration  went well。"

我们执行命令 hdfs dfsadmin -finalizeUpgrade 进行升级后的 finalize:

CDH集群升级事故的解决方法是什么

再次查看hdfs web ui,提示信息不见了:

CDH集群升级事故的解决方法是什么

06key take-aways

汇总下知识点:

1. hive metastore db 的用户名和密码,可以通过以下命令获得:

curl -u cm-user:cm-pwd "http://cm-host:7180/api/v19/cm/deployment"

2. hdfs 集群升级完毕后,可以执行 hdfs dfsadmin -finalizeUpgrade 最终确认升级,也可以回滚到之前版本。

上述内容就是CDH集群升级事故的解决方法是什么,你们学到知识或技能了吗?如果还想学到更多技能或者丰富自己的知识储备,欢迎关注亿速云行业资讯频道。

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

cdh
AI