独立集群中 Spark 应用程序的 Spark 驱动程序节点和工作程序节点

Ram*_*esh 3 scala apache-spark

我想了解在提交 Spark 应用程序时哪个节点将充当驱动程序节点,哪个节点将充当工作节点?

例如,如果我有 3 个节点的独立集群。

当spark第一个应用程序(app1)提交时,spark框架会随机选择一个节点作为驱动节点,其他节点作为工作节点。这仅适用于 app1。在执行过程中,如果提交了另一个spark应用程序(app2),spark可以随机选择一个节点作为驱动节点,其他节点作为工作节点。这仅适用于 app2。因此,当两个 spark 应用程序都在执行时,可能会出现两个不同的节点可以成为主节点的情况。如有误解请指正。

Yuv*_*kov 5

你在正确的轨道上。Spark 有一个用于计算的 Worker 节点的概念。每个这样的 worker 可以运行 N 个 Executor 进程。如果 Spark 分配驱动程序在任意 Worker 上运行,这并不意味着 Worker 不能运行其他运行计算的 Executor 进程。

至于您的示例,Spark 不选择主节点。主节点固定在环境中。它选择的是在哪里运行驱动程序,这是SparkContext应用程序生命周期中将存在的位置。基本上,如果您互换 Master 和 Driver,您的答案是正确的。