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

标签 scala apache-spark

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

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

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

最佳答案

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

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

关于scala - 独立集群中 Spark 应用程序的 Spark 驱动程序节点和工作程序节点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40964507/

相关文章:

scala - http => akka 流 => http

scala - 如何在 RX-Scala 中使用可连接的 Observable 来模拟BehaviorSubject

java - 将通用通配符从 Java 转换为 Scala

hadoop - 使用 Apache Oozie 编排 Apache Spark

python - PySpark Streaming 示例似乎没有终止

scala - 在现有项目中创建新的 lagom 微服务的 sbt 命令是什么?

java - 比较 Spark 中的两个数据帧(性能)

python - 如何计算pyspark中的日期差异?

python - Pyspark - 2 个数据帧之间的区别 - 识别插入、更新和删除

scala - Spark 内部类 Kryo 注册