这些将有什么区别和用途?
如何在Spark独立集群中将计算机修复为驱动程序?
ApplicationMaster 通过 spark.driver.host 连接到 spark Driver
spark 驱动程序绑定到客户端机器上的 bindAddress
.config('spark.driver.port','50243')
然后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
.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桥
.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.hostspark.driver.portspark.driver.bindAddress有否像变量spark.driver.hostname或spark.local.ip。但有IS称为环境变量SPARK_LOCAL_IP
在解释变量之前,首先我们要了解申请提交过程
电脑的主要作用:
每个应用程序都有一个ApplicationMaster,负责处理来自集群的资源请求和作业(阶段)的状态监控
ApplicationMaster 总是在集群中。
火花驱动器的位置
假设我们正在谈论客户端模式
spark应用可以从开发机提交,开发机既是应用的客户端,也可以是集群的客户端。
spark 应用程序也可以从集群内的节点(主节点或工作节点或只是没有资源管理器角色的特定机器)提交
客户端机器可能与集群不在同一个子网中,这是这些变量试图处理的一种情况。想想您的互联网连接,通常不可能像 google.com 一样从全球任何地方访问您的笔记本电脑。
在申请提交过程开始时,客户端的spark-submit会将必要的文件上传到spark master或yarn,并协商资源请求。这一步客户端连接到集群,集群地址就是客户端尝试连接的目的地址。
然后 ApplicationMaster 在分配的资源上启动。
ApplicationMaster 分配的资源默认是随机的,不能由这些变量控制。如果您对此感到好奇,它由集群的调度程序控制。
然后 ApplicationMaster 尝试将BACK连接到 spark Driver。这是这些 conf 变量生效的地方。