1、功能
- 任务流调度框架:用于实现工作流的调度
- 类似于Azkaban
- 是所有的调度工具中功能最全面的一个,也是一个缺点,非常笨重不好使
- 功能非常强大,架构比较复杂,使用和开发都比较复杂
- 能实现整个Hadoop生态中几乎所有框架的调度
- 调度类型
- 定时调度:依赖某个时间触发
- 依赖调度:依赖于程序运行的顺序
- Cloudera公司研发的产品
- 最早的设计是为了基于Hadoop生态圈构建分布式工作流调度
- 很多个工作流,多台机器来处理所有的调度
- 最早的设计是为了基于Hadoop生态圈构建分布式工作流调度
- 如何实现分布式的呢?
- Azkaban:自己实现了分布式架构
- Oozie:依赖于MapReduce来实现
- 必须依赖于MapReduce
- 类似于Sqoop、Hive一样的设计原理
- 自己本身不是分布式的,但是我可以让我的程序用MapReduce变成分布式程序
- 这种基于Hadoop生态的高度依赖,会导致这个工具会被淘汰
- Hive
- 分布式计算:Impala、Presto、SparkSQL
- Sqoop
- 采集数据库的数据
- Logstash
- Canal
- Oozie
- 任务流调度
- Azkaban、Airflow
2、基本原理
- 为什么依赖于MapReduce
- 需要依靠MapReduce来作为分布式的程序运行
- oozie将所提交运行的工作流封装成MapReduce程序,只有1个MapTask,提交给YARN
- YARN是分布式的,会将这个MapReduce程序放在某台机器上运行
- 这个工作流就被运行了
- 举例
- workflow => node01 node02 node-03
- |
- mapreduce(workflow) => yarn => node01 node02 node-03
- 基本原理
- 通过Oozie客户端提交一个程序给服务端
- 服务端解析用户的工作流,生成DAG【有向无环图】
- 通过XML来开发,定义DAG
- 任意一个job在oozie是一个action
- 多个action之间的依赖关系构成DAG工作流
- 将工作流封装成MapReduce程序提交给YARN,由YARN分配到具体的一台机器上运行这个工作流
- 为什么安装包这么大?
- 因为Oozie的功能非常强大,可以调度各种类型的程序
- 里面封装了各种程序需要用到的jar包