CDH重启cloudera-scm-agent报错:No socket could be created — ((‘127.0.0.1’, 9001): [Errno 98] Address already in use)
CDH集群重启 cloudera-scm-agent ,发现重启失败,查看日志如下:
[21/Jul/2023 19:49:10 +0000] 11006 HTTPServer Thread-2 _cplogging ERROR [21/Jul/2023:19:49:10] ENGINE Error in HTTP server: shutting down Traceback (most recent call last): File “/opt/cloudera/cm-agent/lib/python2.7/site-packages/cherrypy/process/servers.py”, line 225, in _start_http_thread self.httpserver.start() File “/opt/cloudera/cm-agent/lib/python2.7/site-packages/cheroot/server.py”, line 1326, in start raise socket.error(msg) error: No socket could be created — ((‘127.0.0.1’, 9001): [Errno 98] Address already in use)
错误表明 cloudera-scm-agent
在启动时无法创建HTTP服务器的套接字,原因是地址 127.0.0.1:9001
已经被占用了。这通常意味着另一个进程已经在监听相同的IP地址和端口号,导致 cloudera-scm-agent
无法绑定到该地址。
解决方案:
要解决这个问题,可以采取以下步骤:
- 查找占用端口的进程: 使用以下命令查找占用9001端口的进程:bash复制代码
sudo netstat -tlnp | grep 9001
这将显示占用9001端口的进程的相关信息,包括进程ID (PID) 和进程名。 - 停止占用端口的进程: 如果上一步找到了占用9001端口的进程,可以尝试停止该进程,释放端口。使用以下命令杀死该进程(请注意替换
<PID>
为实际的进程ID):bash复制代码sudo kill <PID>
或者,如果是已知的服务进程,可以使用该服务的控制命令来停止服务。 - 修改端口号: 如果停止占用端口的进程不可行或不适合你的情况,可以考虑修改
cloudera-scm-agent
的配置,将其绑定到一个空闲的端口上。你可以编辑配置文件中的端口号,然后重新启动cloudera-scm-agent
。 - 确保正确配置: 确保
cloudera-scm-agent
的配置正确,并没有指定错误的端口号。 - 防火墙和安全组规则: 检查服务器的防火墙设置和网络安全组规则,确保端口号没有被阻止。
- 检查其他应用程序: 确保没有其他应用程序意外地使用了9001端口。
- 重新启动服务: 尝试重新启动
cloudera-scm-agent
服务。