Azkaban
azkaban是一个任务调度软件,任务调度工具。
Azkaban的工作流的调度
因为最近在做一个利用sqoop进行mysql的数据导入到hdfs的工作。本来就是一个简简单单的导入工作。不知道为什么,就突然,聊着聊着突然就要做自动调度了
嗯,自动调度就自动调度吧。。。
一般linux都自带有crontab,这个东西可以做定时任务的,可以在里面直接运行shell脚本。这么一想,美滋滋啊!
所以首先就考虑到了使用crontab来进行对任务的自动调度。
嗯,做下前期工作,脚本大概长这样
脚本a
sqoop --import --xxxxxxxx
脚本b
hive -f xxx.sql
脚本c (脚本c就是将脚本a和脚本b拼接在一起)
脚本a(sqoop --import -xxxxxx)
脚本b(hive -f xxx.sql)
注:脚本b要使用脚本a的数据,要对脚本b的数据二次处理。
准备用crontab来调度我的脚本的时候
0 2 * * * sh 脚本c.sh
发现当到了指定的时间点,任务并不是想象当中先执行完了脚本a,然后再执行脚本b,脚本a和脚本b几乎是同时在执行,因为脚本a是一个mapreduce任务,脚本b也是一个mapreduce任务,所以当脚本执行的时候脚本a将任务提交到yarn之后。脚本b不会等待脚本a的mapreduce任务结束完毕,才执行。会在脚本a提交完任务的时候就执行了。
重点脚本b要依赖脚本a的处理完的mapreduce的数据啊!!!
所以crontab这个方案是行不通的。(主要是里面的shell脚本要能够实现工作流的调度,这个shell脚本精通的大佬应该可以实现。)
azkaban就可以实现这个工作流的调度了,别问我为什么,我就是知道,嗯,因为我以前用过。。。