【发布时间】:2014-08-01 19:56:33
【问题描述】:
我有一个 Apache Spark MLlib Java 应用程序,它应该在具有不同输入值的集群上运行很多次。是否可以将应用程序jar缓存在集群上并复用,以减少启动时间、网络负载和组件耦合?
使用的集群管理器有什么不同吗?
如果应用程序 jar 被缓存,是否可以在我的应用程序的不同实例中使用相同的 RDD 缓存?
【问题讨论】:
标签: java caching apache-spark mesos
我有一个 Apache Spark MLlib Java 应用程序,它应该在具有不同输入值的集群上运行很多次。是否可以将应用程序jar缓存在集群上并复用,以减少启动时间、网络负载和组件耦合?
使用的集群管理器有什么不同吗?
如果应用程序 jar 被缓存,是否可以在我的应用程序的不同实例中使用相同的 RDD 缓存?
【问题讨论】:
标签: java caching apache-spark mesos
Vainilla Spark 无法做到这一点(在撰写本文时 - Spark 正在快速发展)。
有一个由 Ooyala 提供的 Spark-JobServer 可以完全满足您的需求。它在 jars 中保存一个寄存器以用于顺序提交作业,并提供额外的设施来按名称缓存 RDD。请注意,在 Spark 集群上,Spark-JobServer 充当 Spark 驱动程序。在执行给定任务时,工作人员仍需要从驱动程序加载 jar。
【讨论】:
class BaseNamedRDDSparkJob extends SparkJob with NamedRDDSupport 中创建一个基类并从 Java 扩展它可能对您有用。但我当然会告诉你使用 Scala :-)