Spark离线作业编排一:Linux的crontab定时任务

概述

Spark的离线作业进行编排主要有两种:

第一种是使用Linux的crontab定时任务;

第二种是使用组件(例如Oozie)进行编排。

各自优缺点:

crontab的优点是简单易行,缺点是如果多个作业之间存在先后关系,较难实现(比如前一个任务执行结束后,创建一个文件夹,后一个任务检测到文件夹后开始执行);

Oozie的优点是较好地解决了多个Spark任务统筹编排,缺点是使用比较复杂。

crontab方案

使用crontab进行Spark任务编排比较简单,可以参考如下网址:

https://www.jianshu.com/p/1c4b44737182

http://www.linuxdown.net/command/2017/1104/15360.html

具体步骤如下:

1、将需要执行的spark-submit命令编写为shell,如下shell中获取前一天的utc起始时间作为spark程序的参数,将sparkShell.sh上传到/root/spark目录下;

#!/bin/sh
#引入环境变量
source /etc/profile

#获取昨天日期
day=`date -d yesterday +%Y-%m-%d`
#拼装昨天0时0分0秒和23时59分59秒
starttime="${day} 00:00:00"
endtime="${day} 23:59:59"
#将年月日时分秒转为UTC
startutc=`date -d "${starttime}" +%s`
endutc=`date -d "${endtime}" +%s`

#执行数据清洗任务
spark-submit --master yarn-client --class com.example.officerscar.spark.offline.DataCleaningJob --num-executors 4 --executor-memory 2G --total-executor-cores 16 /root/datacleaning.jar ${startutc} ${endutc} > /root/spark/${day}.txt

2、编辑crontab,首先执行crontab –e,进入vim界面,然后执行1 0 * * * . /root/spark/sparkShell.sh。表示每天凌晨00:01开始执行sparkShell.sh。可通过crontab -l命令查看是否编辑成功。其中后半部分的执行很容易理解,前半部分的理解见下图:

举例如下:
1)每五分钟运行命令
*/5 * * * * . /home/XXXX.sh
2)每个工作日23:59都进行备份作业。
59 11 * * 1,2,3,4,5 . /home/XXXX.sh
3 )每分钟运行一次命令
*/1 * * * * . /home/XXXX.sh
4)每个月的1号 14:10 运行
10 14 1 * * . /home/XXXX.sh

3、重启crond服务

service crond restart

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值