我有一个Spark作业,它读取源表,执行一些map/flatten/reduce操作,然后将结果存储到我们用于报告的单独表中.目前,此作业是使用spark-submit脚本手动运行的.我想安排它每晚运行,以便在一天开始时预先填充结果.我是:
spark-submit脚本?我们在独立模式下运行Spark.
任何建议赞赏!
ben*_*man 13
您可以使用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
Run Code Online (Sandbox Code Playgroud)
然后创建一个crontab
仅当您不关心高可用性时,Crontab才足够好,因为Crontab可以在可能发生故障的单台计算机上运行。
您以独立模式运行的事实表明您没有安装hadoop和mesos,它们具有一些使此任务更可靠的工具。
Airbnb的气流是crontab的替代产品(尽管目前也遭受高可用性问题的困扰)。正是针对此类用例(尤其是其中的一种)构建的,请参见此处: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/。
如果这是一项关键任务,那么如果您使用领事/ zookeper或其他提供领导者选举的工具,您甚至可以自己进行编程-只是让您的流程在多台计算机上运行,让他们在领导者上竞争并确保领导者将工作提交给火花。
您可以使用spark作业服务器使作业提交更加优雅:https : //github.com/spark-jobserver/spark-jobserver
| 归档时间: |
|
| 查看次数: |
21559 次 |
| 最近记录: |