【问题标题】:Is it possible to cache the application jar when running Apache Spark applications on a cluster?在集群上运行 Apache Spark 应用程序时是否可以缓存应用程序 jar?
【发布时间】:2014-08-01 19:56:33
【问题描述】:

我有一个 Apache Spark MLlib Java 应用程序,它应该在具有不同输入值的集群上运行很多次。是否可以将应用程序jar缓存在集群上并复用,以减少启动时间、网络负载和组件耦合?

使用的集群管理器有什么不同吗?

如果应用程序 jar 被缓存,是否可以在我的应用程序的不同实例中使用相同的 RDD 缓存?

【问题讨论】:

    标签: java caching apache-spark mesos


    【解决方案1】:

    Vainilla Spark 无法做到这一点(在撰写本文时 - Spark 正在快速发展)。

    有一个由 Ooyala 提供的 Spark-JobServer 可以完全满足您的需求。它在 jars 中保存一个寄存器以用于顺序提交作业,并提供额外的设施来按名称缓存 RDD。请注意,在 Spark 集群上,Spark-JobServer 充当 Spark 驱动程序。在执行给定任务时,工作人员仍需要从驱动程序加载 jar。

    在此处查看文档:https://github.com/ooyala/spark-jobserver

    【讨论】:

    • spark-jobserver 看起来不错,但是否支持 Java?文档说:“提交到作业服务器的作业必须实现 SparkJob”,这是 Scala 特征。要使用 NamedRDD,您必须使用 NamedRddSupport 特征。这可以从Java中使用吗?我必须使用 Scala 吗?
    • SparkJob 是一个简单的特征,您可以将其用作 Java 的接口。那应该没问题。 NamedRDDSupport 是一个带有自类型的 mixin。我不确定它是如何从 Java 中播放的。可能在 scala class BaseNamedRDDSparkJob extends SparkJob with NamedRDDSupport 中创建一个基类并从 Java 扩展它可能对您有用。但我当然会告诉你使用 Scala :-)
    • 这可能行得通,但我重写了我的原型。不过有一些令人兴奋的事情:github.com/ooyala/spark-jobserver/issues/5
    • @Wienczny 你的意思是罐子的大小?这不是表演的终结者。更改喷雾罐配置可以解决此问题。我们上传大约 100Mb 的 jar。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-11
    • 2014-05-23
    • 1970-01-01
    • 2016-03-28
    • 2016-02-28
    • 2017-05-28
    相关资源
    最近更新 更多