cloudera-scm-service报错server已死,但pid文件仍存问题解决

cloudera-scm-service报错server已死,但pid文件仍存问题解决

在CDH集群运维过程中,会遇到CM数据库被锁住了、断电了,数据库没启起来,导致CDH没起起来,首先我们来梳理下遇到这些问题之后的CDH集群恢复步骤,用以以后的运维工作。

下面记录恢复步骤:
一:数据库重启(选做):
1、首先查看数据库oracle的监听状态:lsnrctl status
当使用该命令后看到最后:命令执行成功,即监听启着;
例程 “PLSExtProc”, 状态 UNKNOWN, 包含此服务的 1 个处理程序…
服务 “orcl” 包含 1 个例程。
例程 “orcl”, 状态 READY, 包含此服务的 1 个处理程序…
服务 “orclXDB” 包含 1 个例程。
例程 “orcl”, 状态 READY, 包含此服务的 1 个处理程序…
服务 “orcl_XPT” 包含 1 个例程。
例程 “orcl”, 状态 READY, 包含此服务的 1 个处理程序…
命令执行成功;
否则用lsnrctl stop停监听;
2、sqlplus / as sysdba进入sql> 命令框
shutdown immediate;关闭数据库
3、sql>quit 退出后执行lsnrctl start启监听;
4、sqlplus / as sysdba进入sql> 命令框 :startup启数据库;

二、启cloudera-scm-service
service cloudera-scm-service status 查看状态
service cloudera-scm-service start 启动service
可能遇到的问题
1、cloudera-scm-server dead but pid file exists
遇到该问题,首先删除cloudera-scm-server.pid
rm /var/run/cloudera-scm-server.pid,再重启
service cloudera-scm-service服务;
2、有可能重启后还是会失败,
则查看cloudera-scm-service.log日志,一般日志目录为:/var/log/cloudera-scm-service下,查看ERROR日志,再看cloudera-scm-service.out日志文件,如果出现:地址已被使用,则结合.log日志查看7182端口是否已经被占用;

查看端口进程命令lsof -i:7182,kill -9 pid,即可;
如果遇到org.hibernate.exception.GenericJDBCException:Cloud not open connection非一定是JDBC驱动问题,有可能是端口被占用情况,仔细排查错误,查看日志报错原因;

三、启cloudera-scm-agent
service cloudera-scm-agent status 查看状态
service cloudera-scm-agent start 启动agent

也可能遇到的问题
cloudera-scm-agent dead but pid file exists,同样删除cloudera-scm-agent.pid
rm /var/run/cloudera-scm-agent.pid,再重启,如果遇到IOError:port 9000 not free on 'dsj1’则说明9000端口被占用,kill该端口即可;

四:启完agent、service后,打开cdh网页,cloudera-scm-service报错server已死,但pid文件仍存问题解决
进入界面,对各个组件进行处理;

CDH有可能会遇到其他的坑,还是需要仔细排查日志错误,方是上策;