安装CDH6.3版本的时候遇到 ‘ERROR main:com.cloudera.server.cmf.Main: Server failed’的解决方案

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
简介: 安装CDH6.3版本的时候遇到 ‘ERROR main:com.cloudera.server.cmf.Main: Server failed’的解决方案

安装CDH6.3版本的时候遇到 ‘ERROR main:com.cloudera.server.cmf.Main: Server failed’的解决方案


在安装CDH大数据平台的cm-server启动的时候遇到 一个错误,该错误日志文件位置为:/var/log/cloudera-scm-server/cloudera-scm-server.log 错误日志部分截取如下:

2021-07-02 02:14:40,154 ERROR main:com.cloudera.server.cmf.Main: Server failed.
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'com.cloudera.server.cmf.TrialState': Cannot resolve reference to bean 'entityManagerFactoryBean' while setting constructor argument; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'entityManagerFactoryBean': FactoryBean threw exception on object creation; nested exception is javax.persistence.PersistenceException: org.hibernate.exception.GenericJDBCException: could not prepare statement

当然了,运维工作就是这样,总是在各种意想不到的地方给你惊喜,我们所需要做到的就是冷静对待。因此,我将分析一下这个错误日志。

以这一段错误日志为例,我们可以发现三个关键的地方,第一是hibernate,第二是while,第三是 could not 。

hibernate以及后面的关联字段是:org.hibernate.exception.GenericJDBCException,表明cm-server使用的是hibernate这个数据库框架,这应该是没问题的,对吧。

while以及后面的关联字段是:while setting constructor argument,表明cm-server在设置构造函数的参数时发生了问题。

could not 以及后面的关联字段是:could not prepare statement,表明无法准备开始语句,具体说,我是在初始化数据库的时候报这么个错的。

根据以上线索,我们可以知道,错误原因在jdbc连接这,要么数据库版本不对,要么数据库驱动不对,而错误日志里有这个:entityManagerFactoryBean,工厂。那么,可以确定是MySQL的驱动不对了,仔细查看了一下 使用的MySQL版本和MySQL驱动版本,MySQL使用的是5.7.19,而驱动版本为mysql-connector-java-5.0.8-bin-g.jar,那么,很明显了,驱动版本过低,MySQL5.7.19并不支持。

处理方案:更换MySQL驱动版本,提高为mysql-connector-java-5.1.47,再次初始化数据库,可以看到数据库的表生成了,完美解决。

初始化数据库的命令是:/opt/cloudera/cm/schema/scm_prepare_database.sh -h 192.168.88.11 mysql scm scm 我的密码(我的密码不能让人看到~~~)

运行结果为:

JAVA_HOME=/usr/java/jdk1.8.0_181-cloudera/
Verifying that we can write to /etc/cloudera-scm-server
Creating SCM configuration file in /etc/cloudera-scm-server
Executing:  /usr/java/jdk1.8.0_181-cloudera//bin/java -cp /usr/share/java/mysql-connector-java.jar:/usr/share/java/oracle-connector-java.jar:/usr/share/java/postgresql-connector-java.jar:/opt/cloudera/cm/schema/../lib/* com.cloudera.enterprise.dbutil.DbCommandExecutor /etc/cloudera-scm-server/db.properties com.cloudera.cmf.db.
Fri Jul 02 14:24:06 CST 2021 WARN: Establishing SSL connection without server's identity verification is not recommended. According to MySQL 5.5.45+, 5.6.26+ and 5.7.6+ requirements SSL connection must be established by default if explicit option isn't set. For compliance with existing applications not using SSL the verifyServerCertificate property is set to 'false'. You need either to explicitly disable SSL by setting useSSL=false, or set useSSL=true and provide truststore for server certificate verification.
[                          main] DbCommandExecutor              INFO  Successfully connected to database.
All done, your SCM database is configured correctly!

如果是别的输出,那么准时报错了,可能密码错误?这时候,请检查密码。

可以看到生成了scm数据库的一堆表:

20210702142212132.png

总结:


遇到错误不要慌,仔细查看日志,其实日志里已经提醒的很明显了,hibernate,当然是MySQL或者MySQL驱动出问题啦。while告诉我们cm是在干什么的时候报错了,could not 告诉我们,它现在想干的是什么事,这些理清楚了,问题自然迎刃而解。


相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
Web server failed to start. Port XXX was already in use.【完美解决方案】
Web server failed to start. Port XXX was already in use.【完美解决方案】
Web server failed to start. Port XXX was already in use.【完美解决方案】
Web server failed to start. Port XXX was already in use.原因分析-解决方案
Web server failed to start. Port XXX was already in use.原因分析-解决方案
577 1
Web server failed to start. Port XXX was already in use.原因分析-解决方案
|
6月前
|
关系型数据库 MySQL 数据库
【已解决】[图文步骤] message from server: “Host ‘172.17.0.1‘ is not allowed to connect to this MySQL server“
【已解决】[图文步骤] message from server: “Host ‘172.17.0.1‘ is not allowed to connect to this MySQL server“
277 0
|
6月前
|
XML 应用服务中间件 Android开发
【已解决】eclipse导入项目出错 Server Tomcat v7.0 Server at localhost failed to start
【已解决】eclipse导入项目出错 Server Tomcat v7.0 Server at localhost failed to start
57 0
|
应用服务中间件 Android开发
“Server Tomcat v9.0 Server at localhost was unable to start within 45 seconds“的解决方案
“Server Tomcat v9.0 Server at localhost was unable to start within 45 seconds“的解决方案
828 0
“Server Tomcat v9.0 Server at localhost was unable to start within 45 seconds“的解决方案
|
Web App开发 前端开发 安全
基础:BS(Browser/Server)、CS(Client/Server)架构
基础:BS(Browser/Server)、CS(Client/Server)架构
564 0
|
安全 程序员 C++
《gen_server.erl源码》
erlang程序员研究OTP,如同C++程序员研究STL一样重要。
《gen_server.erl源码》
omnicore-cli error couldn't connect to server
omnicore-cli error couldn't connect to server
142 0