运行预定的Spark作业

时间:2015-05-21 13:44:26

标签: apache-spark

我有一个Spark作业,它读取源表,执行一些map / flatten / reduce操作,然后将结果存储到我们用于报告的单独表中。目前,此作业是使用spark-submit脚本手动运行的。我想安排它每晚运行,以便在一天开始时预先填充结果。我:

  1. 设置一个cron作业来调用{{1}}脚本?
  2. 将计划添加到我的工作类中,以便提交一次但每晚都执行操作?
  3. Spark中是否有内置机制或单独的脚本可以帮助我这样做?
  4. 我们在独立模式下运行Spark。

    任何建议都赞赏!

6 个答案:

答案 0 :(得分:12)

你可以使用cron标签,但是当你开始依赖其他火花作业的火花作业时,我会推荐弹球用于协调。 https://github.com/pinterest/pinball

为了让一个简单的crontab工作,我会创建包装脚本,如

#!/bin/bash
cd /locm/spark_jobs

export SPARK_HOME=/usr/hdp/2.2.0.0-2041/spark
export HADOOP_CONF_DIR=/etc/hadoop/conf
export HADOOP_USER_NAME=hdfs
export HADOOP_GROUP=hdfs

#export SPARK_CLASSPATH=$SPARK_CLASSPATH:/locm/spark_jobs/configs/*

CLASS=$1
MASTER=$2
ARGS=$3
CLASS_ARGS=$4
echo "Running $CLASS With Master: $MASTER With Args: $ARGS And Class Args: $CLASS_ARGS"

$SPARK_HOME/bin/spark-submit --class $CLASS --master $MASTER --num-executors 4 --executor-cores 4 $ARGS spark-jobs-assembly*.jar $CLASS_ARGS >> /locm/spark_jobs/logs/$CLASS.log 2>&1

然后按

创建一个crontab
  1. crontab -e
  2. 插入30 1 * * * /PATH/TO/SCRIPT.sh $ CLASS" yarn-client"

答案 1 :(得分:7)

Spark中没有内置机制可以提供帮助。一个cron工作对你的案子来说似乎是合理的。如果您发现自己不断向计划作业添加依赖项,请尝试Azkaban

答案 2 :(得分:4)

Crontab只有在不关心高可用性的情况下才够好,因为它可以在一台可能出现故障的计算机上运行。

您以独立模式运行这一事实表明您没有安装hadoop和mesos,它们有一些工具可以使此任务更可靠。

crontab的另一种选择(尽管它目前也存在高可用性问题)是airbnb的气流。它是为这些用例准确构建的(除其他外)请参见此处:http://airflow.incubator.apache.org/scheduler.html

Mesos用户可以尝试使用chronos作为集群的cron作业:https://github.com/mesos/chronos

还有来自hadoop世界的oozie http://blog.cloudera.com/blog/2013/01/how-to-schedule-recurring-hadoop-jobs-with-apache-oozie/

如果这是关键任务,如果您使用consul / zookeper或其他提供领导者选举的工具,您甚至可以自己编程 - 只需让您的流程在多台机器上运行,让他们在领导力上竞争并确保领导者提交工作到了火花。

您可以使用spark job服务器使作业提交更加优雅:https://github.com/spark-jobserver/spark-jobserver

答案 3 :(得分:3)

Apache Hadoop的所有发行版附带的最标准的调度程序是Oozie。

https://oozie.apache.org/docs/4.2.0/DG_SparkActionExtension.html

根据我的经验,一旦掌握了XML,就很难使用XML,它就像一个魅力。

答案 4 :(得分:1)

您可以使用Rundeck来安排具有良好UI屏幕的作业,以管理作业失败和通知。

答案 5 :(得分:0)

推荐的计划程序:

  • Airbnb气流
  • Apache Oozie
  • Apache Nifi
  • 定时作业(不推荐)