这些都会有什么区别和用途呢?
如何在星火独立集群中将机器作为驱动程序进行修复?
发布于 2019-12-06 07:40:39
短版
ApplicationMaster与火花驱动程序的spark.driver.host连接
星火驱动程序绑定到客户端机器上的bindAddress
通过实例
端口绑定1例
.config('spark.driver.port','50243')
然后windows上的netstat -ano
TCP 172.18.1.194:50243 0.0.0.0:0 LISTENING 15332
TCP 172.18.1.194:50243 172.18.7.122:54451 ESTABLISHED 15332
TCP 172.18.1.194:50243 172.18.7.124:37412 ESTABLISHED 15332
TCP 172.18.1.194:50243 172.18.7.142:41887 ESTABLISHED 15332
TCP [::]:4040 [::]:0 LISTENING 15332
集群172.18.7.1xx
中的节点位于与我的开发机器172.181.1.194
相同的网络中,而网络掩码是255.255.248.0
。
从ApplicationMaster到驱动程序指定ip的2个示例
.config('spark.driver.host','192.168.132.1')
然后是netstat -ano
TCP 192.168.132.1:58555 0.0.0.0:0 LISTENING 9480
TCP 192.168.132.1:58641 0.0.0.0:0 LISTENING 9480
TCP [::]:4040 [::]:0 LISTENING 9480
但是,ApplicationMaster无法连接并报告错误。
Caused by: java.net.NoRouteToHostException: No route to host
因为这个ip是我的开发机器上的VM桥。
ip绑定3例
.config('spark.driver.host','172.18.1.194')
.config('spark.driver.bindAddress','192.168.132.1')
然后是netstat -ano
TCP 172.18.1.194:63937 172.18.7.101:8032 ESTABLISHED 17412
TCP 172.18.1.194:63940 172.18.7.102:9000 ESTABLISHED 17412
TCP 172.18.1.194:63952 172.18.7.121:50010 ESTABLISHED 17412
TCP 192.168.132.1:63923 0.0.0.0:0 LISTENING 17412
TCP [::]:4040 [::]:0 LISTENING 17412
详细版本
在详细解释之前,只有以下三个相关的conf变量:
spark.driver.host
spark.driver.port
spark.driver.bindAddress
没有像或spark.local.ip
这样的变量。但是是,一个名为SPARK_LOCAL_IP
的环境变量。
在解释变量之前,首先要了解应用程序的划分过程。
计算机的主要作用:
每个应用程序都有一个ApplicationMaster,它处理来自集群的资源请求和作业(阶段)的状态监视器。
ApplicationMaster总是在集群中。
火花驱动器的位置
假设我们讨论的是客户端模式
spark应用程序可以从开发机器提交,开发机器充当应用程序的客户端机器以及集群的客户端机器。
spark应用程序也可以从集群内的节点(主节点或工作节点,或者仅仅是没有资源管理器角色的特定机器)提交。
客户端机器可能不会与集群放在同一个子网中,这是这些变量试图处理的一种情况。想想你的互联网连接,你的笔记本电脑通常不可能像google.com一样从全球任何地方被访问。
在申请提交过程开始时,客户端的火花提交将上传必要的文件到火花主机或纱线,并就资源请求进行协商。在此步骤中,客户端连接到群集,群集地址是客户端试图连接的目标地址。
然后,在分配的资源上启动ApplicationMaster。
默认情况下,分配给ApplicationMaster的资源是随机的,不能由这些变量控制。它由集群的调度程序控制,如果您对此感到好奇的话。
然后,ApplicationMaster尝试将与火花驱动程序连接回。这就是这些conf变量发挥作用的地方。
https://stackoverflow.com/questions/43692453
复制相似问题