官网:https://dolphinscheduler.apache.org/
1.1 概述
Apache DolphinScheduler是一个分布式、易扩展的可视化DAG工作流任务调度平台。致力于解决数据处理流程中错综复杂的依赖关系,使调度系统在数据处理流程中开箱即用
1.2 核心架构
DolphinScheduler的主要角色如下:
MasterServer采用分布式无中心设计理念,MasterServer主要负责 DAG 任务切分、任务提交、任务监控,并同时监听其它MasterServer和WorkerServer的健康状态WorkerServer也采用分布式无中心设计理念,WorkerServer主要负责任务的执行和提供日志服务ZooKeeper服务,系统中的MasterServer和WorkerServer节点都通过ZooKeeper来进行集群管理和容错Alert服务,提供告警相关服务API接口层,主要负责处理前端UI层的请求UI,系统的前端页面,提供系统的各种可视化操作界面
https://dolphinscheduler.apache.org/zh-cn/docs/2.0.3/部署指南_menu
2.1 概述
DolphinScheduler支持多种部署模式,包括单机模式(Standalone)、伪集群模式(Pseudo-Cluster)、集群模式(Cluster)等
2.2 单机模式中文的telegram的下载的地方
单机模式(standalone)模式下,所有服务均集中于一个StandaloneServer进程中,并且其中内置了注册中心Zookeeper和数据库H2。只需配置JDK环境,就可一键启动DolphinScheduler,快速体验其功能
由于DolphinScheduler的单机模式使用的是内置的ZK和数据库,故在集群模式下所做的相关配置在单机模式下并不可见,所以需要重新配置,必要的配置为创建租户和创建用户
2.3 伪集群模式
伪集群模式(Pseudo-Cluster)是在单台机器部署 DolphinScheduler 各项服务,该模式下master、worker、api server、logger server等服务都只在同一台机器上。Zookeeper和数据库需单独安装并进行相应配置
2.4 集群模式
集群模式(Cluster)与伪集群模式的区别就是在多台机器部署 DolphinScheduler各项服务,并且可以配置多个Master及多个Worker
3.1 集群规划与准备
三台节点均需部署JDK(1.8+),并配置相关环境变量需部署数据库,支持MySQL(5.7+)或者PostgreSQL(8.2.15+)。如 MySQL 则需要 JDBC Driver 8.0.16需部署Zookeeper(3.4.6+)如果启用 HDFS telegram的中文下载网站怎么找 文件系统,则需要 Hadoop(2.6+)环境三台节点均需安装进程管理工具包psmisc
3.2 下载与配置部署脚本
修改解压目录下的conf/config目录下的install_config.conf文件,不需要修改的可以直接略过
3.3 初始化数据库
DolphinScheduler 元数据存储在关系型数据库中,故需创建相应的数据库和用户
3.4 一键部署DolphinScheduler
3.5 DolphinScheduler启停命令
安装完后得去修改或启停
入门文档可以参考:https://dolphinscheduler.apache.org/zh-cn/docs/2.0.3/guide/quick-start
https://dolphinscheduler.apache.org/zh-cn/docs/2.0.3/功能介绍_menu/参数_menu
DolphinScheduler支持对任务节点进行灵活的传参,任务节点可通过引用参数值
1.1 内置参数
基础内置参数
变量名参数说明system.biz.date${system.biz.date}定时时间前一天,格式为 telegram的中文版的下载的地方 yyyyMMddsystem.biz.curdate${system.biz.curdate}定时时间,格式为 yyyyMMddsystem.datetime${system.datetime}定时时间,格式为 yyyyMMddHHmmss
衍生内置参数
可通过衍生内置参数,设置任意格式、任意时间的日期。
自定义日期格式:可以对 $[yyyyMMddHHmmss] 任意分解组合,如 $[yyyyMMdd], $[HHmmss], $[yyyy-MM-dd]。使用 add_months() 函数:该函数用于加减月份, 第一个入口参数为[yyyyMMdd],表示返回时间的格式 第二个入口参数为月份偏移量,表示加减多少个月
参数说明$[add_months(yyyyMMdd,12*N)]后 N 年$[add_months(yyyyMMdd,-12*N)]前 N 年$[add_months(yyyyMMdd,N)]后 N 月$[add_months(yyyyMMdd,-N)]前 N 月$[yyyyMMdd+7*N]后 N 周$[yyyyMMdd-7*N]前 N 周$[yyyyMMdd+N]后 N 天$[yyyyMMdd-N]前 N 天$[HHmmss+N/24]后 N 小时$[HHmmss-N/24]前 N 小时$[HHmmss+N/24/60]后 N 分钟$[HHmmss-N/24/60]前 N 分钟
相关说明
dt:参数名IN:IN 表示局部参数仅能在当前节点使用,OUT 表示局部参数可以向下游传递(目前支持这个特性的任务类型有:Shell、SQL、Procedure;同时若节点之间没有依赖关系,则局部参数无法传递)DATE:数据类型,日期$[yyyy-MM-dd]:自定义格式的衍生内置参数
全局参数在工作流定义,本地参数在节点定义,本地参数 > 全局参数 > 上游任务传递的参数
1.2 参数传递
本地参数 > 全局参数 > 上游任务传递的参数;多个上游节点均传递同名参数时,下游节点会优先使用值为非空的参数;如果存在多个值为非空的参数,则按照上游任务的完成时间排序,选择完成时间最早的上游任务对应的参数。
有些任务需要引用一些额外的资源,例如MR、Spark等任务须引用jar包,Shell任务需要引用其他脚本等。DolphinScheduler提供了资源中心来对这些资源进行统一管理。
如果需要用到资源上传功能,针对单机可以选择本地文件目录作为上传文件夹(此操作不需要部署 Hadoop)。当然也可以选择上传到 Hadoop or MinIO 集群上,此时则需要有Hadoop (2.6+) 或者 MinIO 等相关环境。本文在部署 DS 集群时指定了文件系统为 HDFS
https://dolphinscheduler.apache.org/zh-cn/docs/2.0.3/guide/resource
https://dolphinscheduler.apache.org/zh-cn/docs/2.0.3/功能介绍_menu/数据源中心_menu
数据源中心支持MySQL、POSTGRESQL、HIVE/IMPALA、SPARK、CLICKHOUSE、ORACLE、SQLSERVER等数据源。此处仅对 HIVE 数据源进行介绍
数据源:选择HIVE数据源名称:输入数据源的名称描述:输入数据源的描述,可置空IP/主机名:输入连接HIVE的IP端口:输入连接HIVE的端口,默认 10000用户名:设置连接HIVE的用户名,如果没有配置 HIVE 权限管理,则用户名可以任意,但 HIVE 表数据存储在 HDFS,为了保证对所有表的数据均有操作权限,此处选择 HDFS 超级用户 atguigu(注:HDFS 超级用户名与执行 HDFS 启动命令的 Linux 节点用户名相同)密码:设置连接HIVE的密码,如果没有配置 HIVE 权限管理,则密码置空即可数据库名:输入连接HIVE的数据库名称Jdbc连接参数:用于HIVE连接的参数设置,以JSON形式填写,没有参数可置空
然后在工作流中可以选择SQL
节点名称:自定义节点名称环境名称:HIVE 执行所需环境数据源:类型选择 HIVE,数据源选择上文配置的 HIVE 数据源SQL 类型:根据SQL 语句选择,此处选用默认的“查询”即可SQL 语句:要执行的 SQL 语句,末尾不能有分号,否则报错:语法错误
4.1 邮箱告警实例配置
POP3,IMAP,SMTP描述
需要登陆管理员账户
告警实例名称:在告警组配置时可以选择的告警插件实例名称,用户自定义选择插件:选择 Email 则为邮箱告警实例收件人:接收方邮箱地址,收件人不需要开启 SMTP 服务抄送人:抄送是指用户给收件人发出邮件的同时把该邮件发送给另外的人,收件人之外的收件方都是抄送人,“收件人”可以获知该邮件的所有抄送人;抄送人可以为空。mail.smtp.host:邮箱的 telegram的官网最新的下载的网站是多少 SMTP 服务器域名,对于 QQ 邮箱,为 smtp.qq.com。各邮箱的 SMTP 服务器见此链接:https://blog.csdn.net/wustzjf/article/details/52481309mail.smtp.port:邮箱的 SMTP 服务端口号,主流邮箱均为 25 端口,使用默认值即可mail.sender:发件方邮箱地址,需要开启 SMTP 服务mail.user:与 mail.sender 保持一致即可mail.password:获取的邮箱授权码。未列出的选项保留默认值或默认选项即可
telegram 中文地方在哪里
4.2 其他告警
其他告警可以参考:https://dolphinscheduler.apache.org/zh-cn/docs/3.0.0
同时还可以电话告警,这里有个运维平台是一站式集成的,睿象云官网:https://www.aiops.com/
DolphinScheduler的环境变量是不和主机共享的,默认需要进入进行修改,也可以直接在admin用户下在可视化界面进行创建,创建节点的时候选择即可
官方网站:https://airflow.apache.org
1.1 概述
Airflow是一个以编程方式编写,安排和监视工作流的平台。使用Airflow将工作流编写任务的有向无环图(DAG)。Airflow计划程序在遵循指定的依赖项,同时在一组工作线程上执行任务。丰富的命令实用程序使在DAG上执行复杂的调度变的轻而易举。丰富的用户界面使查看生产中正在运行的管道,监视进度以及需要时对问题进行故障排除变的容易
1.2 名词解释
Dynamic:Airflow配置需要实用Python,允许动态生产管道。这允许编写可动态。这允许编写可动态实例化管道的代码Extensible:轻松定义自己的运算符,执行程序并扩展库,使其适合于您的环境Elegant:Airlfow是精简的,使用功能强大的Jinja模板引擎,将脚本参数化内置于Airflow的核心中Scalable:Airflow具有模板块架构,并使用消息队列来安排任意数量的工作任务
2.1 python环境安装
2.2 安装Airflow
3.1 修改数据库为mysql
3.2 修改执行器
官网不推荐在开发中使用顺序执行器,会造成任务调度阻塞
文档:https://airflow.apache.org/docs/apache-airflow/2.4.3/howto/index.html
4.1 环境部署启动
编写脚本
注意一些注意事项
必须导包
from airflow import DAG
from airflow.operators.bash_operator import BashOperator
default_args telegram 的官网的最新的下载的网址是什么 设置默认参数
depends_on_past 是否开启任务依赖
schedule_interval 调度频率
retries 重试次数
start_date 开始时间
BashOperator 具体执行任务,如果为true前置任务必须成功完成才会走下一个依赖任务,如果为false则忽略是否成功完成
task_id 任务唯一标识(必填)
bash_command 具体任务执行命令
set_upstream 设置依赖
4.3 配置邮件服务器
修改airflow配置文件,用stmps服务对应587端口,
azkaban官网:https://azkaban.github.io/downloads.html
1.1 上传jar包和配置sql
首先获取azkaban的三个包,可以自行编译,github地址
1.2 配置Executor Server
Azkaban Executor Server处理工作流和作业的实际执行
1.3 配置Web Server
Azkaban Web Server处理项目管理,身份验证,计划和执行触发
2.1 HelloWorld案例
2.2 作业依赖案例
需求:JobA和JobB执行完了,才能执行JobC
2.3 自动失败重试案例
需求:如果执行任务失败,需要重试3次,重试的时间间隔10000ms
也可以在Flow全局配置中添加任务失败重试配置,此时重试配置会应用到所有Job
2.4 手动失败重试案例
需求:JobA⇒JobB(依赖于A)⇒JobC⇒JobD⇒JobE⇒JobF。生产环境,任何Job都有可能挂掉,可以根据需求执行想要执行的Job。
在可视化界面,Enable和Disable下面都分别有如下参数:
Parents:该作业的上一个任务Ancestors:该作业前的所有任务Children:该作业后的一个任务Descendents:该作业后的所有任务Enable All:所有的任务
3.1 概述
JavaProcess类型可以运行一个自定义主类方法,type类型为javaprocess,可用的配置为:
Xms:最小堆Xmx:最大堆classpath:类路径java.class:要运行的Java对象,其中必须包含Main方法main.args:main方法的参数
3.2 案例
新建一个azkaban的maven工程,然后创建包名:com.atguigu,创建AzTest类
打包成jar包azkaban-1.0-SNAPSHOT.jar,新建testJava.flow,内容如下
**将Jar包、flow文件和project文件打包成javatest.zip **,然后上传执行官网的telegram 的的最新网站是多少
4.1 概述
条件工作流功能允许用户自定义执行条件来决定是否运行某些Job。条件可以由当前Job的父Job输出的运行时参数构成,也可以使用预定义宏。在这些条件下,用户可以在确定Job执行逻辑时获得更大的灵活性,例如,只要父Job之一成功,就可以运行当前Job
4.2 运行时参数案例
基本原理:父Job将参数写入环境变量所指向的文件;子Job使用 来获取父Job输出的参数并定义执行条件
支持的条件运算符:
(1)== 等于
(2)!= 不等于
(3)> 大于
(4)>= 大于等于
(5)< 小于
(6)<= 小于等于
(7)&& 与
(8)|| 或
(9)! 非
需求分析:
4.3 预定义宏案例
Azkaban中预置了几个特殊的判断条件,称为预定义宏。预定义宏会根据所有父Job的完成情况进行判断,再决定是否执行。可用的预定义宏如下:
(1)all_success: 表示父Job全部成功才执行(默认)
(2)all_done:表示父Job全部完成才执行
(3)all_failed:表示父Job全部失败才执行
(4)one_success:表示父Job至少一个成功才执行
(5)one_failed:表示父Job至少一个失败才执行
首先申请好邮箱,然后配置
Azkaban多Executor模式是指,在集群中多个节点部署Executor。在这种模式下, Azkaban web Server会根据策略,选取其中一个Executor去执行任务。为确保所选的Executor能够准确的执行任务,我们须在以下两种方案任选其一,推荐使用方案二。
方案一:指定特定的Executor(hadoop102)去执行任务
方案二:在Executor所在所有节点部署任务所需脚本和应用
官网文档:https://azkaban.readthedocs.io/en/latest/configuration.html