用 DolphinScheduler 把一条数仓同步链路调度起来
【免费下载链接】dolphinschedulerApache DolphinScheduler is the modern data orchestration platform. Agile to create high performance workflow with low-code项目地址: https://gitcode.com/GitHub_Trending/dol/dolphinscheduler
每天凌晨 2 点要把业务库的订单表同步进 Hive,这个活我上周用 DolphinScheduler 跑了一遍:拉个容器起服务,建一个数据源,画一条两节点的工作流,手动触发跑通。整个过程不到半小时,失败重试和定时调度都是现成的。这篇按我实际操作的顺序写,你照着点就能复现。
跑通第一条最小链路
部署走 Docker,最快的一条路:
git clone https://gitcode.com/GitHub_Trending/dol/dolphinscheduler cd dolphinscheduler/deploy/docker docker-compose up -d起来之后浏览器打开http://localhost:12345,默认账号admin/dolphinscheduler123。先别急着画流程:进项目,在「资源中心 - 数据源管理」里建一个 MySQL 数据源,填好地址、库名、账号密码,点测试连接,通了再保存。
然后到「工作流 - 工作流定义」新建工作流,把左侧面板里的 Shell 和 SQL 两个节点拖进画布,连线保存。第一个 Shell 节点就写一句date > /tmp/etl_ok.txt,SQL 节点选你刚建的数据源,跑一句SELECT 1;。点运行,状态列里两个节点变绿,链路就通了。
到这一步你要知道的就是三件事:数据源建在哪、节点怎么拖、运行按钮在哪。原理后面再拆。
DAG 依赖与失败重试怎么配
把链路跑通后,值得花十分钟搞懂一件事:上游挂了,下游到底怎么办。
在 DAG 里,只有上游节点终态为成功,下游才会被调度。如果某个节点执行失败,调度器会先按该节点自己配的「失败重试次数」重新提交任务,每次重提交之间隔「失败重试间隔」的时间。注意是重试这个节点本身,不是把整条工作流从头再跑。一旦重试次数耗尽还是失败,这个节点就定在失败态,它的下游节点不会再启动,直接标记为失败,整条工作流停止。
这两个配置项就在每个节点的「当前节点设置」面板里,跟着 Driver 核数、内存那些资源参数排在一起,可以下拉选也可以手填。比如一个 DataX 抽取节点配「重试 3 次、间隔 2 分钟」,它的实际语义是:首次失败后 2 分钟再来一次,最多多来 3 次,总共最多执行 4 次。配的时候建议想清楚间隔给多大——如果失败原因是数据源抖动,间隔太短等于白重试;如果是脚本 bug,重试 10 次也只是把告警延迟 10 次。
容易踩的坑
坑一:连接串里写CST,调度时间莫名偏移
现象:任务定时触发的时刻和预期差了几小时,或者跑出来的数据分区日期不对。原因:CST这种缩写时区标识符在不同环境会解析成不同时区,MySQL 驱动尤其敏感。处理:连接串里显式写serverTimezone=Asia/Shanghai这类完整标识。
jdbc:mysql://host:3306/db?serverTimezone=Asia/Shanghai坑二:worker 容器连不上业务库,任务卡到超时
现象:任务长时间 RUNNING 后报超时或连接失败,手动在容器里ping库也通不了。原因:worker 跑在 Docker 网络里,走的是容器网段的 IP 和 DNS,宿主机能通不代表容器能通。处理:在容器内测试连通性,业务库侧放行 worker 容器所在网段的 IP。
坑三:服务时区是 UTC,界面看的时间是本地时间
现象:同一个任务,监控里显示的执行时间和你心里的"几点跑的对不上"。原因:服务默认时区为 UTC,界面时区可以单独切,两边不一致时看日志会晕。处理:启动前用环境变量统一,比如export SPRING_JACKSON_TIME_ZONE=Asia/Shanghai,界面右上角的时区按钮也切到同一值。
从 Demo 到生产
三条最小改动,都不涉及架构变更:
- 资源隔离:给同步链路的任务指定独立队列和租户,避免大查询把实时小任务挤死。
- 告警通道:在「告警」页配一个渠道,绑定到工作流上,节点终态为失败就推送,别等第二天早上翻日志。
- 监控面板:把 Grafana 里的 Worker 面板挂出来,提交队列、运行中任务数、成功率三块就够日常看。
延伸看两处就够:内置时间参数语法在 docs/docs/zh/guide/parameter/built-in.md,任务字段逐项说明在 docs/docs/zh/guide/task/appendix.md。数据源时区的细节参考 docs/docs/zh/guide/installation/datasource-setting.md。下一步建议:拿你手上真实的一条同步需求,把 Demo 里那两个占位节点换成真任务。
【免费下载链接】dolphinschedulerApache DolphinScheduler is the modern data orchestration platform. Agile to create high performance workflow with low-code项目地址: https://gitcode.com/GitHub_Trending/dol/dolphinscheduler
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考