Ubuntu系统启动Apache Drill报8047端口绑定失败如何解决
问题根因
你当前的报错是Apache Drill默认的Web服务端口8047已经被进程ID为12801的Java进程占用,你之前修改的zk.connect参数是ZooKeeper集群的连接端口,和Drill自身的服务端口无关,所以修改后报错不会消失。
排查解决步骤
- 第一步:确认占用8047端口的进程身份
执行命令:
输出结果如果对应Drill进程,说明是之前未正常关闭的Drill残留进程,直接执行ps aux | grep 12801kill -9 12801杀掉进程后,重新启动Drill即可恢复正常。 - 第二步:如果需要自定义Drill的服务端口,避免和其他程序冲突
在drill-override.conf的drill.exec配置块中新增对应参数即可,示例如下:
修改保存配置后重新启动Drill即可。drill.exec: { cluster-id: "drillbits1", zk.connect: "localhost:8048", http.port: "8049", # 自定义Web UI端口,替换原来的8047 user.server.port: "31011" # 可选,自定义Drill RPC服务端口 } - 第三步:IPv6适配处理
从端口占用结果可以看到8047是绑定在IPv6协议栈上,如果需要强制Drill使用IPv4绑定,启动前先执行:
再执行Drill启动命令即可。export _JAVA_OPTIONS="-Djava.net.preferIPv4Stack=true" - 第四步:启动验证
启动完成后执行netstat -tlnp | grep 你使用的Drill端口,确认端口正常被新的Drill进程占用后,即可正常访问Web UI进行操作。
内容的提问来源于stack exchange,提问作者Amin Khodamoradi
相关产品推荐
相关产品推荐

