【问题标题】:Best Practice For Deploying and Running Periodic Spark Job部署和运行定期 Spark 作业的最佳实践
【发布时间】:2016-11-22 17:56:01
【问题描述】:

我有许多 spark 批处理作业,每个作业都需要每 x 小时运行一次。我确信这一定是一个常见问题,但互联网上似乎很少有关于设置此问题的最佳实践。我目前的设置如下:

  1. 构建系统 (sbt) 构建一个 tar.gz,其中包含一个 fat jar + 一个将调用 spark-submit 的脚本。

  2. 测试通过后,CI 系统 (Jenkins) 会将 tar.gz 复制到 hdfs。

  3. 我设置了一个chronos 作业将tar.gz 解压到本地文件系统并运行提交给spark 的脚本。

此设置运行良好,但步骤 3) 的某些方面我不喜欢。具体来说:

  • 我需要一个单独的脚本(由 chronos 执行)从 hdfs 复制、解包并运行 spark-submit 任务。据我所知,chrons 无法从 hdfs 运行脚本,所以我必须在每个 mesos worker 上都有这个脚本的副本,这使得部署更加复杂,如果一切都只存在于 hdfs 上。

    李>
  • 我感觉有太多活动部件。例如,我想知道是否可以创建一个可以提交自身的可执行 jar(args 将是 spark master 和 main 类),在这种情况下,我会取消至少一个包装脚本。不幸的是,我还没有找到这样做的好方法

因为这是每个人都面临的问题,所以我想知道是否有人可以提供更好的解决方案。

【问题讨论】:

    标签: apache-spark batch-processing


    【解决方案1】:

    要下载和提取存档,您可以通过设置 uris 字段在 Chronos 作业配置中指定 Mesos fetcher。 要在执行器端执行相同的过程,您可以在默认 Spark conf 中设置 spark.executor.uri 参数

    【讨论】:

      猜你喜欢
      • 2015-08-05
      • 1970-01-01
      • 1970-01-01
      • 2010-11-25
      • 2017-07-06
      • 1970-01-01
      • 1970-01-01
      • 2018-10-04
      • 1970-01-01
      相关资源
      最近更新 更多