Docker部署Spark Master:远程Telnet 7077端口连接被拒
问题分析与解决步骤
核心定位
从你提供的信息来看,宿主机7077端口已被docker-pr监听,说明端口映射本身配置生效,但远程无法连通的核心原因是Spark Master的7077服务仅绑定了容器内的localhost(127.0.0.1),未绑定到容器的0.0.0.0地址,导致外部请求无法穿透到容器内的服务。
具体解决步骤
1. 检查容器内服务绑定地址
先进入Spark Master容器:
sudo docker exec -it spark-master /bin/bash
在容器内执行命令查看7077端口的绑定情况:
netstat -tulpn | grep 7077
如果输出显示绑定地址为127.0.0.1:7077,而非0.0.0.0:7077,则确认是此问题。
2. 修改Spark配置绑定0.0.0.0
进入Spark配置目录(通常为$SPARK_HOME/conf),复制模板配置文件:
cd $SPARK_HOME/conf cp spark-env.sh.template spark-env.sh
编辑spark-env.sh,添加以下配置:
export SPARK_MASTER_HOST=0.0.0.0 export SPARK_MASTER_PORT=7077
3. 重启容器生效配置
退出容器后,执行重启命令:
sudo docker restart spark-master
4. 验证远程连通性
在远程机器上重新执行telnet命令:
telnet 172.26.21.130 7077
若能成功连通,则问题解决。
备选方案:启动容器时直接指定参数
如果不想进入容器修改配置,可以先删除原容器,再用以下命令重新创建,通过环境变量直接指定绑定地址:
sudo docker rm -f spark-master sudo docker run -itd \ --net=hadoop-net \ -p 8080:8080 \ -p 7077:7077 \ -p 4040:4040 \ -p 4041:4041 \ -p 4042:4042 \ --name spark-master \ --hostname spark-master \ -e SPARK_MASTER_HOST=0.0.0.0 \ spark-master
内容的提问来源于stack exchange,提问作者js developer
相关产品推荐
相关产品推荐

