Apache火花中的Spark驱动程序

我已经有了一个运行Hadoop 1.0.0的3台机器(VM virtualbox的ubuntu1,ubuntu2,ubuntu3)的集群。 我在这些机器上安装了火花。 ub1是我的主节点,其他节点是从属的。 我的问题是什么火花驱动程序是什么? 我们是否应该通过spark.driver.host设置一个IP和端口来驱动驱动程序,以及它的执行和位置? (主人或奴隶)

spark驱动程序是声明RDD上的数据转换和操作的程序,并将这些请求提交给主机。

实际上,驱动程序是创buildSparkContext的程序,连接到给定的Spark Master。 在本地集群的情况下,就像你的情况一样, master_url=spark://<host>:<port>

它的位置是独立的主/奴隶。 您可以与主设备位于同一位置,也可以从另一个节点运行。 唯一的要求是它必须位于Spark Workers的可寻址networking中。

这是您的驱动程序的configuration如何:

 val conf = new SparkConf() .setMaster("master_url") // this is where the master is specified .setAppName("SparkExamplesMinimal") .set("spark.local.ip","xx.xx.xx.xx") // helps when multiple network interfaces are present. The driver must be in the same network as the master and slaves .set("spark.driver.host","xx.xx.xx.xx") // same as above. This duality might disappear in a future version val sc = new spark.SparkContext(conf) // etc... 

多解释一下不同的angular色:

  • 驱动程序准备上下文并使用RDD转换和操作声明数据的操作。
  • 驱动程序将序列化的RDD图提交给主设备。 主人从中创build任务并将其提交给工作人员执行。 它协调不同的工作阶段。
  • 工作人员是实际执行任务的地方。 他们应该具有执行RDD上所请求的操作所需的资源和networking连接。

Spark驱动程序是创build并拥有SparkContext实例的过程。 Spark应用程序启动了创buildSparkContext实例的主要方法。 这是作业和任务执行的驾驶舱(使用DAGScheduler和任务计划程序)。 它托pipe环境的Web UI

它将Spark应用程序分解成任务并安排它们在执行程序上运行。 驱动程序是任务调度程序在哪里生活和产生跨作业人员的任务。 司机协调工作人员和整体执行任务。

你的问题是关于在纱线上的火花部署,见1 : http ://spark.apache.org/docs/latest/running-on-yarn.html“在YARN上运行Spark”

假设你从一个spark-submit --master yarn cmd开始:

  1. CMD将请求纱线资源pipe理器(RM)在其中一个群集机器(安装有纱线节点pipe理器的群集机器)上启动ApplicationMaster(AM)进程。
  2. 一旦AM开始,它会调用你的驱动程序的主要方法。 所以驱动程序实际上就是你定义你的火花上下文,你的rdd和你的工作的地方。 驱动程序包含启动火花计算的入口主方法。
  3. Spark上下文将为执行程序准备RPC端点进行对话,还有许多其他的事情(内存存储,磁盘块pipe理器,docker服务器…)
  4. AM将要求RM容器运行你的火花执行器,并在执行器的启动命令cmd中指定驱动程序RPC url(类似spark:// CoarseGrainedScheduler @ ip:37444)。

黄色框“火花上下文”是驱动程序。 纱线集群模式

简单来说,Spark驱动程序是一个包含主要方法的程序(主要方法是程序的起点)。 所以,在Java中,驱动程序将是包含public static void main(String args [])的类。

在集群中,您可以通过以下任一方式运行该程序:1)在任何远程主机中。 在这里,您必须提供远程主机的详细信息,同时将驱动程序提交给远程主机。 驱动程序运行在远程计算机上创build的JVM进程中,只返回最终结果。

2)从您的客户端机器(您的笔记本电脑)本地。 这里的驱动程序在本地机器上创build的JVM进程中运行。 从这里它将任务发送到远程主机,并等待每个任务的结果。

如果你设置config“spark.deploy.mode = cluster”,那么你的驱动程序将在你的工作主机(ubuntu2或ubuntu3)上启动。
如果spark.deploy.mode = driver,这是默认值,那么驱动程序将在您的机器上运行您的应用程序。
最后,您可以在Web UI上看到您的应用程序: http:// driverhost:driver_ui_port ,其中driver_ui_port是默认的4040,您可以通过设置config“spark.ui.port”来更改端口