无法启动ZooKeeper服务:2181端口占用且无法杀死进程求助
解决ZooKeeper启动报错Address already in use(端口2181被占用)
看起来你踩了个常见的小坑——你用kill -9 2181是错的,2181是端口号,不是进程ID(PID),所以系统找不到对应的进程。别慌,按下面的步骤来解决:
1. 准确找到占用2181端口的进程PID
你之前的netstat -nlp|grep 2181输出没显示完整的进程信息,可能是参数不够或者权限问题。试试用这个命令(需要的话加sudo):
sudo netstat -tulpn | grep 2181
或者用更现代的ss命令(同样可能需要sudo):
sudo ss -tulpn | grep 2181
正常输出会类似这样:
tcp6 0 0 :::2181 :::* LISTEN 1234/java
这里的1234就是占用端口的进程PID,记下来。
2. 杀死占用端口的进程
用刚才找到的PID执行kill命令,比如:
kill -9 1234
注意把1234换成你实际查到的PID,不是2181!
3. 验证端口是否释放
再执行一次查找命令:
sudo netstat -tulpn | grep 2181
如果没有任何输出,说明端口已经被释放了。
4. 重新启动ZooKeeper
现在再运行你的启动命令应该就没问题了:
/opt/Kafka/kafka_2.10-0.10.0.1/bin/zookeeper-server-start.sh /opt/Kafka/kafka_2.10-0.10.0.1/config/zookeeper.properties
补充说明:为什么重启电脑后问题还存在?
大概率是占用2181端口的进程被设置了开机自启,可能是你之前安装的ZooKeeper服务,或者其他依赖ZooKeeper的应用(比如某些大数据组件)。找到进程后可以看看进程名称,判断是什么程序在占用,必要的话可以禁用它的开机自启,避免下次再出现这个问题。
内容的提问来源于stack exchange,提问作者user9467051
相关产品推荐
相关产品推荐

