在 Google Dataproc 上最小化 Apache Spark 作业初始化时间的最佳方法是什么?
What is the best way to minimize the initialization time for Apache Spark jobs on Google Dataproc?
我正在尝试使用 REST 服务通过 Dataproc API 客户端触发 Spark 作业。但是,dataproc 集群中的每个作业需要 10-15 秒来初始化 Spark Driver 并提交应用程序。我想知道是否有一种有效的方法可以消除从 gs 存储桶中的 JAR 文件触发的 Spark Java 作业的初始化时间?我想到的一些解决方案是:
- 合并可用于每个 Spark 作业的 JavaSparkContext 的单个实例
- 启动单个作业并运行在单个作业中进行基于 Spark 的处理
有没有更有效的方法?我将如何在 Google Dataproc 中实施上述方式?
与其自己编写此逻辑,不如研究一下 Spark 作业服务器:https://github.com/spark-jobserver/spark-jobserver 因为这应该允许您重用 spark 上下文。
您可以为 Dataproc 编写一个驱动程序,它从您的 REST 服务器接受 RPC 并自己重新使用 SparkContext,然后通过作业提交该驱动程序 API , 但我个人会先查看作业服务器。
我正在尝试使用 REST 服务通过 Dataproc API 客户端触发 Spark 作业。但是,dataproc 集群中的每个作业需要 10-15 秒来初始化 Spark Driver 并提交应用程序。我想知道是否有一种有效的方法可以消除从 gs 存储桶中的 JAR 文件触发的 Spark Java 作业的初始化时间?我想到的一些解决方案是:
- 合并可用于每个 Spark 作业的 JavaSparkContext 的单个实例
- 启动单个作业并运行在单个作业中进行基于 Spark 的处理
有没有更有效的方法?我将如何在 Google Dataproc 中实施上述方式?
与其自己编写此逻辑,不如研究一下 Spark 作业服务器:https://github.com/spark-jobserver/spark-jobserver 因为这应该允许您重用 spark 上下文。
您可以为 Dataproc 编写一个驱动程序,它从您的 REST 服务器接受 RPC 并自己重新使用 SparkContext,然后通过作业提交该驱动程序 API , 但我个人会先查看作业服务器。