使用Bitnami docker-compose部署Spark后无法从宿主机创建会话如何解决
问题原因
- 宿主机运行PySpark代码的本地环境依赖Java,未安装配置Java环境会直接触发
JAVA_HOME is not set报错,容器内部自带Java运行环境所以容器内运行作业正常。 - Bitnami Spark镜像默认将Master服务绑定到容器内部hostname,宿主机访问时会出现地址解析失败,就算Java配置正确也会出现网关进程提前退出的报错。
解决方案
步骤1:配置宿主机Java环境
- 安装Spark 3.x推荐的OpenJDK 11:
sudo apt update && sudo apt install openjdk-11-jdk -y
- 编辑
~/.bashrc文件,在末尾添加环境变量配置:
export JAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64 export PATH=$JAVA_HOME/bin:$PATH
- 生效配置并验证:
source ~/.bashrc # 正常会输出Java安装路径 echo $JAVA_HOME # 正常会输出Java版本信息 java -version
步骤2:修改docker-compose.yml配置
给spark服务新增2个环境变量,解决Master地址绑定问题,worker配置保持不变即可:
version: '2' services: spark: image: docker.io/bitnami/spark:3 environment: - SPARK_MODE=master - SPARK_MASTER_HOST=0.0.0.0 - SPARK_MASTER_ADDRESS=localhost - SPARK_RPC_AUTHENTICATION_ENABLED=no - SPARK_RPC_ENCRYPTION_ENABLED=no - SPARK_LOCAL_STORAGE_ENCRYPTION_ENABLED=no - SPARK_SSL_ENABLED=no ports: - '8080:8080' - '7077:7077' spark-worker-1: image: docker.io/bitnami/spark:3 environment: - SPARK_MODE=worker - SPARK_MASTER_URL=spark://spark:7077 - SPARK_WORKER_MEMORY=1G - SPARK_WORKER_CORES=1 - SPARK_RPC_AUTHENTICATION_ENABLED=no - SPARK_RPC_ENCRYPTION_ENABLED=no - SPARK_LOCAL_STORAGE_ENCRYPTION_ENABLED=no - SPARK_SSL_ENABLED=no spark-worker-2: image: docker.io/bitnami/spark:3 environment: - SPARK_MODE=worker - SPARK_MASTER_URL=spark://spark:7077 - SPARK_WORKER_MEMORY=1G - SPARK_WORKER_CORES=1 - SPARK_RPC_AUTHENTICATION_ENABLED=no - SPARK_RPC_ENCRYPTION_ENABLED=no - SPARK_LOCAL_STORAGE_ENCRYPTION_ENABLED=no - SPARK_SSL_ENABLED=no
步骤3:重启集群并修改客户端代码
- 重启Spark集群使配置生效:
docker-compose down && docker-compose up -d
- 访问
http://localhost:8080确认Spark Master正常运行,页面显示的Master地址为spark://localhost:7077 - 修改PySpark连接代码,指定Driver地址(Docker默认宿主机网关为172.17.0.1,可通过
ip addr show docker0命令确认实际地址):
from pyspark.sql import SparkSession spark = SparkSession.builder \ .master("spark://localhost:7077") \ .appName("test") \ .config("spark.driver.host", "172.17.0.1") \ .getOrCreate() # 测试运行 df = spark.range(100) df.show()
内容的提问来源于stack exchange,提问作者lc14
相关产品推荐
相关产品推荐

