繁体   English   中英

如何使用 Docker 创建分布式 Spark 集群

[英]How to create a Distributed spark cluster using Docker

我正在尝试使用这个 docker-compose 创建一个只有一个工人的分布式火花集群

    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 工作人员的相同端口出现问题,实际上您有两种选择:

  1. 根本不要公开工作人员的端口——工作人员不需要它们来连接到主人和工作。 但可能这不方便,因为您无法访问工作人员的 WebUI
  2. 使用像“8081-8999:8081”这样的特殊语法,这样每个下一个以docker-compose up --scale worker=2开始的docker-compose up --scale worker=2将使用不同的端口。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM