【问题标题】:In Spark's client mode, the driver needs network access to remote executors?在 Spark 的客户端模式下,驱动程序需要网络访问远程执行程序?
【发布时间】:2015-09-30 19:51:51
【问题描述】:
在客户端模式(例如 yarn-client)使用 spark 时,运行驱动程序的本地机器是否直接与运行远程执行程序的集群工作节点通信?
如果是,这是否意味着机器(运行驱动程序)需要对工作节点进行网络访问?那么master节点向集群请求资源,并将worker节点的IP地址/端口返回给驱动,驱动就可以发起与worker节点的通信了吗?
如果不是,客户端模式实际上是如何工作的?
如果是,是否意味着如果集群配置为工作节点在集群外不可见,客户端模式将无法工作,并且必须使用集群模式?
谢谢!
【问题讨论】:
标签:
apache-spark
hadoop-yarn
【解决方案1】:
Driver 连接到 Spark Master,请求上下文,然后 Spark Master 将 Driver 的详细信息传递给 Spark Worker,以进行通信并获取有关操作的指示。
这意味着驱动节点必须在网络上可供工作人员使用,并且它的 IP 必须是对他们可见的(即,如果驱动程序位于 NAT 之后,而工作人员位于不同的网络中,则它不会' t 工作,您会在工作人员上看到他们无法连接到驱动程序的错误)
【解决方案2】:
当您以客户端模式运行 Spark 时,驱动程序进程在本地运行。
在集群模式中,它远程在 ApplicationMaster 上运行。
换句话说,您将需要所有节点才能看到彼此。 Spark 驱动程序肯定需要与所有工作节点进行通信。如果这是一个问题,请尝试使用yarn-cluster 模式,然后驱动程序将在您的集群中的一个节点上运行。