我正在尝试使用此docker-compose仅由一个工作人员创建一个分布式Spark集群
master:
image: gettyimages/spark:2.0.0-hadoop-2.7
command: bin/spark-class org.apache.spark.deploy.master.Master -h master
hostname: master
container_name: spark-master
environment:
SPARK_CONF_DIR: /conf
SPARK_PUBLIC_DNS: <MASTER IP>
expose:
- 7001
- 7002
- 7003
- 7004
- 7005
- 7077
- 6066
ports:
- 4040:4040
- 6066:6066
- 7077:7077
- 8080:8080
volumes:
- ./conf/master:/conf
- ./data:/tmp/data
- ~/spark/data/:/spark/data/
worker:
image: gettyimages/spark:2.0.0-hadoop-2.7
command: bin/spark-class org.apache.spark.deploy.worker.Worker spark://master:7077
hostname: worker
container_name: spark-worker
environment:
SPARK_CONF_DIR: /conf
SPARK_WORKER_CORES: 2
SPARK_WORKER_MEMORY: 1g
SPARK_WORKER_PORT: 8881
SPARK_WORKER_WEBUI_PORT: 8081
SPARK_PUBLIC_DNS: <WORKER IP>
links:
- master
expose:
- 7012
- 7013
- 7014
- 7015
- 8881
ports:
- 8081:8081
volumes:
- ./conf/worker:/conf
- ./data:/tmp/data
- ~/apps/sparkapp/worker/data:/spark/data/
但是问题是docker守护进程是在同一台机器上创建容器的,这消除了整个分布式网络的意义。我如何使用docker创建分布式spark集群
答案 0 :(得分:0)
如果问题出现在 Spark worker 的同一个端口,实际上你有两个选择:
docker-compose up --scale worker=2
开头的工作程序将使用不同的端口。