重启CDH的方法以及问题解决

本文详细介绍了CDH重启过程中遇到的cloudera-scm-server死锁和pid文件存在的问题,以及由于端口7432被占用导致的数据库服务启动失败。解决方法包括删除残留的pid文件,关闭占用端口的进程,最终成功重启CDH并恢复服务。

重启CDH的方法如下:

service cloudera-scm-server-db restart
service cloudera-scm-server restart
service cloudera-scm-agent restart(这个还需要在每个slave上执行)



启动服务cloudera-scm-server时会遇到过一段时间自己挂掉,并返回cloudera-scm-server dead but pid file exists的问题。

以下为根源在cloudera-scm-server-db没有正常启动的情况。


【过程】

cloudera-scm-server启动后过一段时间自己挂掉

[html]  view plain  copy
  1. [root@gyvm-4 data]# service cloudera-scm-server start  
  2. Starting cloudera-scm-server:                              [  OK  ]  
  3. [root@gyvm-4 data]#   
  4. [root@gyvm-4 data]# service cloudera-scm-server status  
  5. cloudera-scm-server (pid  60761) is running...  
  6. [root@gyvm-4 data]# service cloudera-scm-server status  
  7. cloudera-scm-server (pid  60761) is running...  
  8. [root@gyvm-4 data]# service cloudera-scm-server status  
  9. cloudera-scm-server (pid  60761) is running...  
  10. [root@gyvm-4 data]# service cloudera-scm-server status  
  11. cloudera-scm-server dead but pid file exists  

这时候想要完整重启cloudera-scm server-db/server

发现cloudera-scm-server-db无法重启

[html]  view plain  copy
  1. [root@gyvm-4 data]# service cloudera-scm-server-db stop  
  2. waiting for server to shut down............................................................... failed  
  3. pg_ctl: server does not shut down  

无法停止server-db的原因是残留了一个pid文件,status显示不正确,删除该文件,通过status查看,server-db其实已经停止了。

[html]  view plain  copy
  1. [root@gyvm-4 data]# cd /var/lib/cloudera-scm-server-db/data  
  2. [root@gyvm-4 data]# service cloudera-scm-server-db status  
  3. pg_ctl: server is running (PID: 17378)  
  4. /usr/bin/postgres "-D" "/var/lib/cloudera-scm-server-db/data"  
  5. [root@gyvm-4 data]# rm postmaster.pid  
  6. rm: remove regular file `postmaster.pid'? y  
  7. [root@gyvm-4 data]# service cloudera-scm-server-db status  
  8. pg_ctl: no server running  

此时启动server-db,失败

[html]  view plain  copy
  1. [root@gyvm-4 data]# service cloudera-scm-server-db start  
  2. DB initialization done.  
  3. waiting for server to start...............................................................could not start server  

查看log,tcp/ip端口7432 被占用

[html]  view plain  copy
  1. [root@gyvm-4 cloudera-scm-server]# tail db.log   
  2. LOG:  could not bind IPv4 socket: Address already in use  
  3. HINT:  Is another postmaster already running on port 7432? If not, wait a few seconds and retry.  
  4. LOG:  could not bind IPv6 socket: Address already in use  
  5. HINT:  Is another postmaster already running on port 7432? If not, wait a few seconds and retry.  
  6. WARNING:  could not create listen socket for "*"  
  7. FATAL:  could not create any TCP/IP sockets  

杀掉占用该端口的进程

[html]  view plain  copy
  1. [root@gyvm-4 cloudera-scm-server]# netstat -ntp | grep 7432  
  2. tcp        0      0 192.168.1.17:7432           192.168.1.17:49784          ESTABLISHED 37118/postgres        
  3. tcp        0      0 192.168.1.17:7432           192.168.1.8:35818           ESTABLISHED 36807/postgres        
  4. tcp        0      0 192.168.1.17:7432           192.168.1.17:49779          ESTABLISHED 37060/postgres        
  5. tcp        0      0 192.168.1.17:49783          192.168.1.17:7432           ESTABLISHED 36306/java            
  6. tcp        0      0 192.168.1.17:7432           192.168.1.8:35813           ESTABLISHED 36778/postgres        
  7. tcp        0      0 192.168.1.17:49779          192.168.1.17:7432           ESTABLISHED 36306/java            
  8. tcp        0      0 192.168.1.17:49784          192.168.1.17:7432           ESTABLISHED 36306/java            
  9. tcp        0      0 192.168.1.17:49778          192.168.1.17:7432           ESTABLISHED 36306/java            
  10. tcp        0      0 192.168.1.17:7432           192.168.1.17:49778          ESTABLISHED 37059/postgres        
  11. tcp        0      0 192.168.1.17:7432           192.168.1.8:35814           ESTABLISHED 36779/postgres        
  12. tcp        0      0 192.168.1.17:7432           192.168.1.8:35817           ESTABLISHED 36804/postgres        
  13. tcp        0      0 192.168.1.17:7432           192.168.1.17:49783          ESTABLISHED 37117/postgres        
  14. [root@gyvm-4 cloudera-scm-server]# kill -9 37118  

再次开启server-db,成功,启动server,成功。

[html]  view plain  copy
  1. [root@gyvm-4 data]# service cloudera-scm-server-db start  
  2. DB initialization done.  
  3. waiting for server to start.... done  
  4. server started  
  5.   
  6. [root@gyvm-4 data]# service cloudera-scm-server start  
  7. Starting cloudera-scm-server:                              [  OK  ]  

此时,cloudera管理界面可以正常访问。

 

【结论】

究其原因,是cloudera-server-db没有正常启动,但是残留了pid文件postmaster.pid。

所以查看cloudera-server-db状态时,显示有误,返回cloudera-server-db是启动的状态。

在此基础上,每次启动cloudera-server就会失败。

而cloudera-server-db启动失败的原因是该服务需要的端口号被占用。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值