上周升级CDH5的jdk 从1.8_131到1.8_151,照常升完之后重启集群,结果集群挂了。
无奈手动命令行关闭集群所有服务然后重启。
service cloudera-scm-server-db stop
service cloudera-scm-server stop
service cloudera-scm-agent stop
然后就启动不了。
系统报错显示,缺了几个必要的日志文件。
推测可能是强行重启导致的文件丢失。
进一步,自己手动添加缺失的log文件。
起初,我是用root添加的,并未授予777权限,导致日志无法被写入,总是空的。
后来,索性登入cloudera-scm
账户,创建日志文件,至此才从日志文件中发现了出问题的地方。
日志文件的目录
/var/log/cloudera-scm-server
/var/log/cloudera-scm-server-db
/var/log/cloudera-scm-agent
OK,到达这一步,server和agent服务已经可以正常启动了。但是postgresql还是有问题。迷瞪了好久,就是下面这个错误。
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
后来发现集群使用的是内嵌的postgre数据库,而网上大部分人使用的都是外部的数据库(postgre,mysql等等等等)。
之前我排查数据库不能启动的原因时,尝试使用如下方式连接postgresql数据库。
/usr/share/cmf/schema/scm_prepare_database.sh postgresql scm scm scm_password
但是查阅cloudera官方文档发现,这条命令是针对外部数据库的!!!,会更改数据库的配置文件:
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=scm_password
com.cloudera.cmf.db.setupType=EXTERNAL
上边是被改过的,可以看到postgre默认的7432端口变成了localhost,数据库类型也变成了EXTERNAL,这就是报External错误的原因。改一改,改成下面这个样子,
#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=scm_password
com.cloudera.cmf.db.setupType=EMBEDDED
如果发现不知道scm的密码,还可以改改密码,挺方便的。
至此,重启所有服务就OK啦。
Tips:
-
service --status-all
可以查看所有服务的运行状态。例如postgre is running 这种。 - 登入到
cloudera-scm
账户时,发现他是不可登陆的,通过cat/etc/passwd
查看发现cloudera-scm:x:998:996:Cloudera Manager:/var/lib/cloudera-scm-server:/sbin/nologin
,把/sbin/nologin
改成/bin/bash
就好了。 - cloudera 官方的问答社区挺好用的,有了bug 会有官方的工作人员给你解答,这个十分nice!
- 每次对系统操作的时候一定要慎重!不要像我一样,网上大部分人用的外部数据库,我不假思索就用了外部数据库的操作,导致浪费了那么多时间!尤其集群不是自己搭建的这种,更要注意。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。