登 录
注 册
< 大 数 据
Flink
Hadoop
Spark
Hive
HBase
Kafka
其他框架
Azkaban 3.x版本部署(一)
Azkaban 3.x版本部署(二)
Azkaban 3.x版本部署(三)
Azkaban报警邮件配置
Azkaban Flow1.0与2.0
热门推荐>>>
中台架构
中台建设与架构
Hadoop
源码分析-NN启动(三)
HBase
HBased对接Hive
Linux
Nginx高可用
Python
数据导出工具
Flink
3分钟搭建Flink SQL测试环境
Kafka
Kafka对接Flume
深度学习
卷积神经网络
数据结构与算法
选择合适的算法
MySQL
数据备份恢复
计算机系统
信号量同步线程
Hive
Hive调优参数大全
ClickHouse
表引擎-其他类型
技术成长
最好的职业建议
精选书单
技术成长书单—机器学习
技术资讯
数据在线:计算将成为公共服务
开发工具
IntelliJ IDEA 20年发展回顾(二)
系统工具
Mac命令行工具
虚拟化
内存虚拟化概述
云原生
云原生构建现代化应用
云服务
一文搞懂公有云、私有云...
Java
Spring Boot依赖注入与Runners
Go
Go函数与方法
SQL
SQL模板
安全常识
一文读懂SSO
当前位置:
首页
>>
其他框架
>>
Azkaban Flow1.0与2.0
Azkaban Flow1.0与2.0
2020-10-08 17:12:46 星期四 阅读:2239
官方建议使用Flow 2.0来创建Azkaban工作流,且Flow 1.0将被弃用。 Flow 2.0的主要设计思想是提供1.0所没有的流级定义。用户可以将属于给定流的所有job / properties文件合并到单个流定义文件中,其内容采用YAML语法进行定义,同时还支持在流中再定义流,称为为嵌入流或子流。 我们先来看看Flow1.0是怎么配置工作流的。 ####Flow1.0工作流定义 创建项目目录 ``` mkdir project_dept01_gmv cd project_dept01_gmv vim import_tablename.job ``` 编辑job文件(用sqoop从MySQL导入数据到Hive) ``` type=command pt=${bizdate} command=/data/azkaban/shell/dept01/sqoop/import_tablename.sh ${pt} ``` 编辑ods层任务,并配置依赖为上面的import任务,多个依赖用逗号分隔 ``` vim ods_tablename.job 新增如下内容 type=command pt=${bizdate} dependencies=import_tablename,import_tablename2 command=/data/azkaban/shell/dept01/etl/ods_tablename.sh ${pt} ``` 编辑导出任务 ``` vim export_tablename.job 新增如下内容 type=command pt=${bizdate} dependencies=ods_tablename command=/data/azkaban/shell/dept01/sqoop/export_tablename.sh ${pt} ``` 把整个项目目录压缩上传到Azkaban服务器,执行的时候指定上述参数的值。 ####Flow2.0工作流定义 Flow1.0的缺点是,必须为每个任务生成一个脚本文件,如果一个项目中有上百个任务(这是常见的事),用这种方式来定义工作流,脑袋直接会爆炸,特别是在配置依赖的时候,常常容易搞错。 对此,Flow2.0可以将所有的任务放在一个脚本里,就像写Python脚本(实际是yaml脚本)一样来定义自己的工作流与依赖关系,非常简单实用。 具体的创建步骤为: ``` mkdir myjobs cd myjobs # 创建flow20.project文件(必须以.project文件结尾),声明使用的Flow是2.0 vim flow20.project # 插入官方指定的一行内容 azkaban-flow-version: 2.0 ``` 创建flow文件(必须以.flow结尾) ``` vim my_flow.flow 开始编写自己的工作流 # **************************** # XXX业务每日工作流 # **************************** # 定义公共参数 config: # 分区字段,在执行具体的job任务时需要传入 pt: ${bizdate} # 工作流脚本文件存储的根目录(下面直接引用) flow_path: /data/azkaban_scripts/shell # 开始定义工作流 nodes: # 从MySQL数据库导入数据到Hive - name: import_table1 type: command config: retries: 3 retry.backoff: 300000 command: ${flow_path}/import/import_table1.sh ${pt} - name: import_table2 type: command config: retries: 3 retry.backoff: 300000 command: ${flow_path}/import/import_table2.sh ${pt} # ads层数据加工 - name: etl_table3 type: command dependsOn: - import_table1 - import_table2 config: retries: 3 retry.backoff: 300000 command: ${flow_path}/etl/ads/etl_table3.sh ${pt} # ads层数据导出到BI库 - name: export_table4 type: command dependsOn: - etl_table3 config: retries: 3 retry.backoff: 300000 command: ${flow_path}/export/export_table4.sh ${pt} ``` 将整个myjobs目录压缩为zip包并上传到web服务器,在执行的时候传入bizdate参数即可