【发布时间】:2016-11-22 17:56:01
【问题描述】:
我有许多 spark 批处理作业,每个作业都需要每 x 小时运行一次。我确信这一定是一个常见问题,但互联网上似乎很少有关于设置此问题的最佳实践。我目前的设置如下:
构建系统 (sbt) 构建一个 tar.gz,其中包含一个 fat jar + 一个将调用 spark-submit 的脚本。
测试通过后,CI 系统 (Jenkins) 会将 tar.gz 复制到 hdfs。
我设置了一个chronos 作业将tar.gz 解压到本地文件系统并运行提交给spark 的脚本。
此设置运行良好,但步骤 3) 的某些方面我不喜欢。具体来说:
-
我需要一个单独的脚本(由 chronos 执行)从 hdfs 复制、解包并运行 spark-submit 任务。据我所知,chrons 无法从 hdfs 运行脚本,所以我必须在每个 mesos worker 上都有这个脚本的副本,这使得部署更加复杂,如果一切都只存在于 hdfs 上。
李> 我感觉有太多活动部件。例如,我想知道是否可以创建一个可以提交自身的可执行 jar(args 将是 spark master 和 main 类),在这种情况下,我会取消至少一个包装脚本。不幸的是,我还没有找到这样做的好方法
因为这是每个人都面临的问题,所以我想知道是否有人可以提供更好的解决方案。
【问题讨论】:
标签: apache-spark batch-processing