在客户端模式下使用spark (例如yarn-client)时,运行驱动程序的本地计算机是否直接与运行远程执行程序的集群工作程序节点通信?
如果是,是否意味着机器(运行驱动程序)需要具有对工作节点的网络访问权限?因此主节点从集群请求资源,并将工作节点的IP地址/端口返回给驱动程序,因此驱动程序可以启动与工作节点的通信?
如果没有,客户端模式如何实际工作?
如果是,是否意味着如果群集的配置方式使得工作节点在群集外部不可见,并且必须使用群集模式,则客户端模式是否会起作用?
谢谢!
答案 0 :(得分:7)
驱动程序连接到Spark Master,请求上下文,然后Spark Master向Spark Workers传递驱动程序的详细信息以进行通信并获取有关如何操作的说明。
这意味着驱动程序节点必须在网络上对工作人员可用,并且它的IP必须是对他们可见的IP(即,如果驱动程序在NAT后面,而工作人员在不同的网络中,则它赢了'工作,你会看到他们无法连接到驱动程序的工人的错误)
答案 1 :(得分:4)
当您在客户端模式中运行Spark时,驱动程序进程将本地运行。 在群集模式中,它在ApplicationMaster上运行远程。
换句话说,您将需要所有节点彼此看到。 Spark驱动程序肯定需要与所有工作节点进行通信。如果这是一个问题,请尝试使用yarn-cluster
模式,然后驱动程序将在其中一个节点上的集群内运行。