无法启动 cloudera-scm-server-db 因为 "The CM is using external DB"

Can not start cloudera-scm-server-db because of "The CM is using external DB"

我已经将 CDH5 的 jdk 从 1.8_131 更新为 1.8_151。所以我需要重启集群才能生效。一开始我使用cloudrea manager网页重启,但是当zookeeper启动时失败了,这是第一步。然后我做出了一个错误的选择,即在终端中关闭 cloudrea 管理器,包括 kill -9 postgresql 进程。在那之后,我无法打开cloudrea manager 网页。

我使用以下说明启动集群。

service cloudera-scm-server-db start
service cloudera-scm-server start
service cloudera-scm-agent start

全部失败,因为/var/log/cloudera-scm-server/var/log/cloudera-scm-agent消失了。

所以我手动创建了这两个文件还包括 dg.logcloudera-scm-agent.log

此时serveragent可以启动。但是server-db还是不行。接下来是一些细节。

Starting cloudera-scm-server-db (via systemctl): Job for cloudera-scm-server-db.service failed because the control process exited with error code. See "systemctl status cloudera-scm-server-db.service" and "journalctl -xe" for details

journalctl -xe

The CM is using external DB. Failed to start embedded DB service, giving up

service --status-all

我做了什么:

那么,我现在该怎么办?谢谢 非常感谢!!!

以上问题已经解决

如果打开这个/etc/cloudera-scm-server/db.properties文件,如下图。

# cat /etc/cloudera-scm-server/db.properties

Auto-generated by scm_prepare_database.sh
#
Sat Oct 1 12:19:15 PDT 201
#
com.cloudera.cmf.db.type=postgresql
com.cloudera.cmf.db.host=localhost
com.cloudera.cmf.db.name=scm
com.cloudera.cmf.db.user=scm
com.cloudera.cmf.db.password=TXqEESuhj5
com.cloudera.cmf.db.setupType=EXTERNAL

EXTERNAL is the crux.

在我的 CDH 服务中,我使用嵌入式 postgresql 作为我的服务器数据库。但是cloudera官方不推荐使用。我是 Cloudera 的新手,所以我犯了一个错误。 我错误地使用了只为 Cloudera Manager Server 外部数据库准备的命令。

/usr/share/cmf/schema/scm_prepare_database.sh postgresql scm scm scm_password

以上命令可以配置db.properties

只要你运行上面的命令,com.cloudera.cmf.db.setupType就会被设置为EXTERNAL(关于这个的更多细节,你可以在Cloudera docs中找到)

最直接有效的方法就是reset password of scm

然后

  • 更新密码
  • 将类型设置为嵌入式
  • 监听7432端口(可以用netstat -nltp查看)

在 db.properties.

#vim cat /etc/cloudera-scm-server/db.properties
Auto-generated by scm_prepare_database.sh
Sat Oct 1 12:19:15 PDT 201
com.cloudera.cmf.db.type=postgresql
com.cloudera.cmf.db.host=localhost:7432
com.cloudera.cmf.db.name=scm
com.cloudera.cmf.db.user=scm
com.cloudera.cmf.db.password=new_password
com.cloudera.cmf.db.setupType=EMBEDDED

现在关闭所有 cloudera-scm 服务并按顺序重新启动 server-db,server,agent.

如果/var/log被错误清除。

您可以手动创建 /var/log/cloudera-scm-server/var/log/cloudera-scm-agent 等文件。

值得注意的是,你应该由用户cloudera-scm创建这些文件,否则无法写入日志,你也不会从日志文件中找到发生了什么错误。