Apache spark 部署和运行定期Spark作业的最佳实践
我有很多spark批处理作业,每x小时需要运行一次。我相信这一定是一个常见的问题,但在互联网上似乎很少有关于设置这个的最佳实践。我当前的设置如下:Apache spark 部署和运行定期Spark作业的最佳实践,apache-spark,batch-processing,Apache Spark,Batch Processing,我有很多spark批处理作业,每x小时需要运行一次。我相信这一定是一个常见的问题,但在互联网上似乎很少有关于设置这个的最佳实践。我当前的设置如下: 构建系统(sbt)构建一个tar.gz,其中包含一个fat jar+一个将调用spark submit的脚本 一旦测试通过,CI系统(Jenkins)就会将tar.gz复制到hdfs 我设置了一个作业,将tar.gz解包到本地文件系统,并运行提交给spark的脚本 这个设置相当不错,但步骤3)中有一些方面我不喜欢。具体而言: 我需要一个单独的脚本(
- 我需要一个单独的脚本(由chronos执行),该脚本从hdfs复制、解压缩并运行spark提交任务。据我所知,chrons无法从hdfs运行脚本,因此我必须在每个mesos worker上都有一份该脚本的副本,这使得部署变得更加复杂,如果一切都是在hdfs上运行的话
- 我有一种感觉,我有太多的运动部件。例如,我想知道我是否可以创建一个可执行的jar来提交它自己(args将是spark主类和主类),在这种情况下,我将至少删除一个包装器脚本。不幸的是,我还没有找到一个好的方法
由于这是每个人都面临的问题,我想知道是否有人能提供更好的解决方案。要下载和提取归档文件,您可以通过设置URI字段在Chronos作业配置中指定它来使用Mesos。 要在executors端执行相同的过程,可以在默认的spark配置中设置spark.executor.uri参数