【发布时间】:2021-10-04 03:57:01
【问题描述】:
我想知道,有什么方法可以让我在 YARN 集群中创建一次 spark-context,然后传入的作业将重新使用该上下文。在我的集群中,上下文创建需要 20 秒甚至更多时间。我正在使用 pyspark 编写脚本并使用 livy 提交作业。
【问题讨论】:
标签: apache-spark hadoop bigdata hadoop-yarn
我想知道,有什么方法可以让我在 YARN 集群中创建一次 spark-context,然后传入的作业将重新使用该上下文。在我的集群中,上下文创建需要 20 秒甚至更多时间。我正在使用 pyspark 编写脚本并使用 livy 提交作业。
【问题讨论】:
标签: apache-spark hadoop bigdata hadoop-yarn
一个选项是使用Apache Livy。 Livy 是 Yarn 集群中的附加服务器,它为想要在集群上运行 Spark 作业的客户端提供接口。 Livy 的特点之一是您可以
拥有可被多个客户端用于多个 Spark 作业的长时间运行的 Spark 上下文
如果客户端是用 Scala 或 Java 编写的,则可以使用 programmatic API:
LivyClient client = new LivyClientBuilder()....build();
Object result = client.submit(new SparkJob(sparkParameters)).get();
所有其他客户端都可以使用REST API。
【讨论】:
不,你不能只在 Yarn 中运行一个常设的 SparkContext。也许另一个想法是在客户端模式下运行,客户端拥有自己的 SparkContext(这是 Apache Zeppelin 和 spark-shell 等工具使用的方法)。
【讨论】: