1.Oozie调度框架
* 工作流:将不同的业务进行编排
如:import->hive->export
* 调度:对作业或任务和定时执行,或事件的触发执行
如:时间触发、数据集的触发。
2.已有调度框架
(1)hadoop常用的调度框架:
* linux crontab 调度
* Azkaban :有界面,比较简单,功能有限
* Oozie:apache顶级项目。有界面,不好管理,适合做数据仓库,etl的公司使用
主要问题是jar包的冲突方面,不好用
* Zeus:阿里开源,增加了监控界面,主要用其调度中心
(2)linux crontab 调度简介
* 规则:* * * * * cmd
前面5个* 表示分,时,天,月,星期
最后一个是执行的命令。
例:每分钟触发,将日期追加到bf-date.log日志中
*/1 * * * * /bin/date>>/opt/datas/bf-date.log
* 命令
crontab -e 添加调度
crontab -l 查看有多少个调度
crontab -r 删除一个高度
* 缺点:不好管理,不能回滚
(3)针对hadoop任务的作业调度
对于mr:/opt/cdh5.3.6/hadoop.xx/bin/yarn jar /XXX/*.jar input output
对于hive:/opt/cdh5.3.6/hive.xx/bin/hive -f hive-select-bflog.sql
对于sqoop:/opt/cdh5.3.6/sqoop.xx/bin/sqoop --options-file sqoop-imp.txt
对于shell script:/bin/sh xxx.sh
3.Oozie功能架构
(1)简介
* 是一个工作流调度系统
* 工作流的调度是DAG(有向无环图)-Directed Acyclical Graphs
* Coordinator job可以通过时间和数据集的可用性触发
* 集成了Hadoop生态系统的其它任务,如mr,pig,hive,sqoop,distcp
* 可扩展:一个Oozie就是一个mr程序,但是仅仅是map,没有reduce
可靠性:任务失败后的重试
(2)具体内容
* 基于工作流的引擎,需要部署到java servlet容器中运行
* 工作流定义:通过xml文件实现流程的定义。有分支、并发、汇合等不两只功能的节点
* 定义了控制流节点(定义了流程的开始和结束,执行路径,如decision,fork,join)
和动作节点(mr,pib,hadoop文件系统,ssh,http,email,子流程等)
例:workflow 模板结构
mr的相关配置
mr的相关配置
错误信息
(3)三大服务器模块
* Oozie V3 :a server based Bundle engine:对多个coordinator进行封装
可以启动,停止,挂起,关闭,重启一组coordinator的任务
* Oozie V2 :a server based Coordinator engine:可以运行多个workflow
结构:start->workfows->end
* Oozie V1 :a server based workflow engine
结构:start->mr->pig->fork->mr/hive->join->end
(3)主要组件
tomcat(servlet进行调用并页面显示任务),数据库(存储任务),Bundle,coordinator,workflow