【问题标题】:Spark context is created every time a batch job is executed in yarn每次在纱线中执行批处理作业时都会创建 Spark 上下文
【发布时间】:2021-10-04 03:57:01
【问题描述】:

我想知道,有什么方法可以让我在 YARN 集群中创建一次 spark-context,然后传入的作业将重新使用该上下文。在我的集群中,上下文创建需要 20 秒甚至更多时间。我正在使用 pyspark 编写脚本并使用 livy 提交作业。

【问题讨论】:

    标签: apache-spark hadoop bigdata hadoop-yarn


    【解决方案1】:

    一个选项是使用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

    【讨论】:

      【解决方案2】:

      不,你不能只在 Yarn 中运行一个常设的 SparkContext。也许另一个想法是在客户端模式下运行,客户端拥有自己的 SparkContext(这是 Apache Zeppelin 和 spark-shell 等工具使用的方法)。

      【讨论】:

      • 嗯。如果有某种机制可以在服务器上添加远程创建的驱动程序,同时提交作业。 ?
      • 是的,应该可以创建一个接受查询并解释它们的应用程序。 Spark thrift-server 就是这样工作的。问题是你正在构建一个完整的应用程序来处理你想要做的事情。客户端模式更简单。
      猜你喜欢
      • 2011-01-20
      • 1970-01-01
      • 1970-01-01
      • 2010-09-08
      • 2023-04-06
      • 1970-01-01
      • 2021-08-15
      • 1970-01-01
      • 2010-11-07
      相关资源
      最近更新 更多