如何配置在 Docker 容器中运行的 Spark 客户端以便与远程 Spark 集群进行双向通信?

如何配置在 Docker 容器中运行的 Spark 客户端以便与远程 Spark 集群进行双向通信?

spark-submit为了运行作业,似乎需要与远程 Spark 集群进行双向通信。

在机器之间配置起来很容易(从 10.xxx 到 10.xxx 再返回),但是当 Docker 添加额外的网络层时(从 172.xxx 到 10.xxx 再到 10.xxx,然后以某种方式回到 172.xxx 再到 10.xxx),就会变得混乱。

Spark为客户端增加了额外的复杂性SPARK_LOCAL_IP及其配置参数。SPARK_LOCAL_HOSTNAME

应如何配置 Docker 网络以实现这一点?

答案1

您可以使用网络模式运行 docker 容器host。在您的 compose 文件中添加以下配置:

services:
  worker0:
    container_name: container0
    cpuset: 0-4
    entrypoint: /entrypoint.sh
    environment:
        - SPARK_MASTER=10.34.221.247
        - RAM=16g
        - NUM_WORKERS=5
        - SHUFFLE_PORT=7338
    expose:
        - 7000-64000
    image: 10.47.7.214/spark-worker
    mem_limit: 16g
    network_mode: bridge
    tty: true

不过,我仍然面临此配置的问题。作业正常启动,但最终 docker 驱动程序无法连接到执行程序。您至少可以尝试一下。

相关内容