ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

10分钟跑通第一个定时数据任务:Apache DolphinScheduler 实践指南

10分钟跑通第一个定时数据任务:Apache DolphinScheduler 实践指南 10分钟跑通第一个定时数据任务Apache 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每天早上8点要跑的数据同步还在靠人肉登录服务器敲 crontab脚本挂了没人知道日志散在三台机器上任务一多依赖关系根本理不清。Apache DolphinScheduler 是分布式任务调度系统把数据流水线做成可视化 DAG拖任务、连依赖、定 CRON 计划失败自动告警全程不用碰命令行。它能干什么 依赖关系乱成一团先在画布上画出来一条数据链路里任务超过十个谁的产出喂给谁用文字描述就乱。DolphinScheduler 用 DAG有向无环图即任务之间的有方向、不循环的依赖图来组织任务没有上游的节点先跑下游等上游成功才启动。不用写编排代码把任务拖进画布、拉线连依赖执行顺序由系统自动推导。机器挂了任务不陪葬集群里 Master 节点负责派发任务的调度员和 Worker 节点真正执行任务的工人都可以横向扩容。某个 Worker 宕机后系统通过 ZooKeeper集群里的协调裁判负责节点注册与状态感知把它未跑完的任务重新分派给其他 Worker已经成功的节点不受影响。失败告警直接发到 IM任务失败、流程超时这类事件可以推到邮件、钉钉、企业微信等渠道。告警插件源码在 dolphinscheduler-alert-plugins/12 种渠道各一个子模块在界面上填好 webhook 或收件人即可。装好它先把单机跑起来最省事的路径standalone 单节点只想先看功能的话standalone单机版把 API、Master、Worker、告警服务塞进一个进程就够git clone https://gitcode.com/GitHub_Trending/dol/dolphinscheduler cd dolphinscheduler ./mvnw clean package -DskipTests cd dolphinscheduler-dist/target/dolphinscheduler-*-bin bash ./bin/dolphinscheduler-daemon.sh start standalone-server启动后浏览器打开http://localhost:12345/dolphinscheduler/ui用默认账号admin / dolphinscheduler123登录丑话说在前standalone 默认用内存版 H2 数据库数据存内存里重启即清空官方建议只跑 20 个以下工作流。想持久化就直接用 deploy/docker/ 下的一条docker-compose up -d起齐 PostgreSQL、ZooKeeper 和全部服务大规模生产再看 deploy/kubernetes/dolphinscheduler/ 里的 Helm chart。场景实战把每天 8 点的数据同步任务跑起来需求很具体每天早上 8 点先跑一个 Shell 脚本从业务库导出数据导出成功后再由 SQL 任务写入数仓。先建执行者租户与用户任务不是以你登录网页的身份跑的而是以一个系统用户身份跑这个角色叫租户对应服务器上的一个 Linux 用户。先进安全中心 - 租户管理建租户比如ds_user再进安全中心 - 用户管理把这个租户分配给你的账号。注意Worker 所在机器上必须真实存在同名 Linux 用户否则任务跑不起来。建项目再进工作流画布到项目管理建一个项目——项目是资源隔离的容器所有工作流必须挂在某个项目下。进入项目后在工作流定义点创建工作流就进了拖拽画布从左侧面板拖一个 Shell 任务和一个 SQL 任务到画布分别填任务名、脚本内容、SQL 任务要用的数据源。连依赖、写调度然后把工作流上线把 Shell 任务的输出端拖到 SQL 任务的输入端一条依赖就画好了。然后在流程属性里用 CRON 表达式写调度时间这里写0 0 8 * * ?Quartz 格式比系统 crontab 多一位秒点上线。记住不上线的工作流只能手动触发不会被调度。任务多了之后可以切树状视图确认执行顺序手动触发一次核对日志点运行手动触发一次到工作流实例页看每个节点的状态和完整日志确认输出文件、写入行数都正常。想确认 Master/Worker 和数据库是否健康直接看监控页不用登录服务器确认无误后就可以等着 8 点自动触发了。哪次跑失败告警会按你之前配置的渠道发出去。踩坑记录四个高频问题与解法重启服务后数据消失现象停掉再启动 standalone工作流、项目全没了。原因standalone 默认用内存版 H2 存元数据进程一停数据就清空。解法需要持久化就按 docs/docs/zh/guide/installation/ 里的数据源配置章节切换外部 MySQL 或 PostgreSQL或直接改用 Docker、集群部署。任务一直排队不执行现象提交的工作流实例里任务长时间停在等待运行。原因集群里没有可用 Worker没启动或没注册到 ZooKeeper。解法到监控页看服务状态确认至少一个 Worker 进程存活排查思路可对照架构文档 docs/docs/zh/architecture/ 的容错章节。8 点的任务没在 8 点触发现象调度时间写了但到点没有生成实例。原因CRON 写成了 5 位的系统 crontab 格式而 DolphinScheduler 用 Quartz 的 6 位格式首位是秒或者工作流忘了上线。解法表达式改写成 6 位如0 0 8 * * ?确认流程状态是已上线。任务起报用户不存在或 sudo 报错现象任务秒失败日志里是 user not exist、sudo 相关错误。原因Worker 机器上没有租户对应的 Linux 用户或部署用户没有配置 sudo 免密——DolphinScheduler 靠sudo -u 租户切换系统用户来执行任务。解法在所有 Worker 机器上创建与租户同名的系统用户并给部署用户配置免密 sudo参考命令见 standalone.md。深入资源部署文档standalone、伪集群、集群、kubernetes 四种路线都在 docs/docs/zh/guide/installation/任务插件源码shell、sql、spark、flink、http 等 30 余种内置任务类型各自独立子模块见 dolphinscheduler-task-plugin/告警插件源码dingtalk、wechat、email、http 等 12 个渠道见 dolphinscheduler-alert-plugins/REST API想从自己的系统管理工作流接口在 dolphinscheduler-api/架构文档分布式锁、容错转移、调度流程的细节见 docs/docs/zh/architecture/【免费下载链接】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),仅供参考
返回列表