Docker Compaling将Spark Worker的UI端口动态扩展到主机

时间:2017-06-10 18:08:12

标签: apache-spark docker dockerfile

我在通过Docker Compose创建的容器中运行Apache Spark。当我创建worker时,我指定主机(我的笔记本电脑)上的哪个端口映射到worker上的Web UI端口8081。使用1个容器,这可以正常工作,因为我可以绑定8081:8081,并且容器化的Spark Master Web UI正确链接到localhost:8081

问题在于,当我通过docker-compose scale worker=3扩展工作人员数量时,我无法在docker-compose.yml中的主机上指定端口,因为扩展会发生冲突。

我尝试过使用动态端口映射,但这会导致转发到工作端口8081的主机端口类似于32XXX,但Spark Master WebUI链接仍然假设工作者WebUI位于端口8081上,这意味着没有链接工作。

有没有办法在没有端口冲突的情况下扩展我的容器

docker-compose.yml的相关部分:

worker:
  image: gettyimages/spark
  command: bin/spark-class org.apache.spark.deploy.worker.Worker 
  spark://master:7077
  hostname: 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: localhost
  links:
    - master
    - cassandra
    - kafka
  expose:
    - 7012
    - 7013
    - 7014
    - 7015
    - 7016
    - 8881
  ports:
    - 8081 # dynamic port binding. ends up being 32XXX:8081
  # - 8081:8081 only works with 1 container

是否可以使用撰写文件中的SPARK_PUBLIC_DNS或动态变量替换来完成某些操作?

0 个答案:

没有答案