DolphinScheduler工作流与告警机制
请介绍Apache DolphinScheduler的核心特性,包括工作流定义、依赖管理、容错机制以及告警通知的配置方式。
回答
小字辈
DolphinScheduler(DS):分布式易扩展的大数据工作流调度系统,国产开源。
一、核心架构:
- MasterServer:负责任务调度、DAG切分、容错
- WorkerServer:负责任务执行
- ApiServer:提供REST API
- AlertServer:告警服务
- ZooKeeper:分布式协调和选主
二、工作流定义:
支持的Task类型:
- Shell、SQL、Spark、Flink、MR、Python、SubProcess、HTTP、DataX、Sqoop等
- 条件分支:根据前置Task结果选择执行路径
- 依赖节点:跨工作流依赖
工作流示例:
start → [SparkETL] → [DataQualityCheck]
→ (成功) → [MySQLExport] → [告警(成功)]
→ (失败) → [告警(失败)]
三、依赖管理:
- 流程内依赖:DAG节点连线(
pre_tasks) - 流程间依赖:通过
依赖节点(DependentTask)监听其他工作流实例状态 - 项目间依赖:不同项目的跨工作流依赖
- 定时依赖:等待到指定时间戳
四、容错机制:
- Master容错:ZooKeeper HA,Master宕机后其他Master接管
- Worker容错:Task执行超时(
timeout)自动重试或告警 - Task重试:每Task可配置
retryTimes和retryInterval - 幂等执行:使用Task Instance ID保证唯一性
五、告警配置:
# alert.properties
alert.type=EMAIL,ENTERPRISE_WECHAT,DINGTALK,HTTP
mail.server.host=smtp.company.com
mail.server.user=alert@company.com
mail.server.password=xxx
- 支持:Email、企业微信、钉钉、飞书、Slack、自定义HTTP
- 告警级别:WARN/ERROR/CRITICAL
- 告警事件:Task失败、流程结束、超时
六、DS vs Airflow:
- DS:自带WebUI,配置更友好(拖拽构建DAG)
- DS:自带告警和监控
- Airflow:Python编码更灵活
- DS:对大数据组件支持更原生