Spark 组件之间的网络连接问题

    • SparkContext <-> Spark Standalone Master:

      如果 SparkContext 不能连接到 Spark standalone master,会显示下面的错误

      如果 driver 能够连接到 master 但是 master 不能回连到 driver上,这时 Master 的日志会记录多次尝试连接 driver 失败并且会报告不能连接:

      1. INFO Master: Registered app SparkPi with ID app-XXX-0000
      2. INFO: Master: Removing app app-app-XXX-0000
      3. INFO Master: Registering app SparkPi
      4. INFO Master: Registered app SparkPi with ID app-YYY-0000
      5. INFO: Master: Removing app app-YYY-0000
      6. [...]

    如果你遇到上述的任何错误:

    • 检查 workers 和 drivers 配置的 Spark master 的地址就是在 Spark master web UI/日志中列出的那个地址。
    • 设置 driver,master,worker 的 SPARK_LOCAL_IP 为集群的可寻地址主机名。

    配置 hostname/port

    这节将描述我们如何绑定 Spark 组件的网络接口和端口。

    在每节里,配置会按照优先级降序的方式排列。如果前面所有配置没有提供则使用最后一条作为默认配置。

    • spark.driver.host 属性
    • 如果 SPARK_LOCAL_IP 环境变量的设置是主机名(hostname),就会使用设置时的主机名。如果 设置的是一个 IP 地址,这个 IP 地址会被解析为主机名。

    Port:

    • spark.driver.port 属性。
    • 从操作系统(OS)选择一个临时端口。

    Spark Standalone Master / Worker actor systems:

    Hostname:

    • MasterWorker 进程启动时使用 --host-h 选项(或是过期的选项 --ip-i)。
    • SPARK_MASTER_HOST 环境变量(仅应用在 Master 上)。
    • 如果 环境变量的设置是主机名(hostname),就会使用设置时的主机名。如果 SPARK_LOCAL_IP 设置的是一个 IP 地址,这个 IP 地址会被解析为主机名。
    • 使用默认的 IP 地址,这个 IP 地址是Java 接口 InetAddress.getLocalHost 方法的返回值。

    Port:

    • MasterWorker 进程启动时使用 --port-p 选项。
    • SPARK_MASTER_PORTSPARK_WORKER_PORT 环境变量(分别应用到 MasterWorker 上)。