Spark Driver和Master使用的多个IP地址和主机名

jav*_*dba 6 apache-spark

Spark Master会侦听多个端口.不幸的是,所使用的IP地址/主机名方案各不相同 - 而且经常发生连接失败.

然后我们不禁要问:如何解决连接问题:Spark自己决定如何翻译:

  • 主机名
  • hostname.local(在mac os/x上)
  • 为hostname.domain
  • 本地主机
  • 的localhost.localdomain
  • 127.0.0.1
  • 外部IP地址
  • 内部IP地址(在AWS上)

重要的考虑因素:某些网络客户端/连接需要精确的字符串匹配 才能成功联系主服务器.所以在那种情况下127.0.0.1是不一样的hostname.我已经看到了在案件hostname的工作和hostname.local不:一个是Mac为中心的问题.但是..然后前者停止工作 - 我缺乏解决原因的工具.

--master当你有一个内部和外部的IP地址在Linux的困惑提供了机会.

以下是我的Mac上的示例.我在AWS上看到了其他模式,而在独立集群上看到了其他模式.这一切都令人困惑和耗时,因为它没有明确记录:

  • 映射发生的地方
  • 如何实现一致的主地址字符串:
    • 掌握web ui
    • 主人的akka​​地址

下面我们看到当--master选项提供给spark-submit 时的输出.

--master spark://mellyrn:7077 
Run Code Online (Sandbox Code Playgroud)

注意各种IP地址

http://25.x.x.x:4040
akka.tcp://sparkMaster@mellyrn:7077
mellyrn/127.0.0.1:707
Run Code Online (Sandbox Code Playgroud)

这是MAC上的输出:

15/07/31 12:21:34 INFO SparkEnv: Registering OutputCommitCoordinator
15/07/31 12:21:34 INFO Utils: Successfully started service 'SparkUI' on port 4040.
15/07/31 12:21:34 INFO SparkUI: Started SparkUI at http://25.101.19.24:4040
15/07/31 12:21:34 INFO AppClient$ClientActor: Connecting to master akka.tcp://sparkMaster@mellyrn:7077/user/Master...
15/07/31 12:21:35 WARN AppClient$ClientActor: Could not connect to akka.tcp://sparkMaster@mellyrn:7077: akka.remote.InvalidAssociation: Invalid address: akka.tcp://sparkMaster@mellyrn:7077
15/07/31 12:21:35 WARN Remoting: Tried to associate with unreachable remote address [akka.tcp://sparkMaster@mellyrn:7077]. Address is now gated for 5000 ms, all messages to this address will be delivered to dead letters. Reason: Connection refused: mellyrn/127.0.0.1:7077
15/07/31 12:21:54 INFO AppClient$ClientActor: Connecting to master akka.tcp://sparkMaster@mellyrn:7077/user/Master...
15/07/31 12:21:54 WARN AppClient$ClientActor: Could not connect to akka.tcp://sparkMaster@mellyrn:7077: akka.remote.InvalidAssociation: Invalid address: akka.tcp://sparkMaster@mellyrn:7077
15/07/31 12:21:54 WARN Remoting: Tried to associate with unreachable remote address [akka.tcp://sparkMaster@mellyrn:7077]. Address is now gated for 5000 
Run Code Online (Sandbox Code Playgroud)

在Linux上,与--master选项的spark连接确实有效(尽管.setMaster()不可靠).即使在linux上,也会生成各种主/驱动程序字符串:

jav*_*dba 3

发现问题:Spark 绑定到不同的本地接口。我在 25.XXX 地址上有一个 VPN 客户端 - 但主机名 ping 到 10.XX 这可能是 Spark 中的错误。我会调查是否已经提交了 JIRA。