在 Ubuntu 上安装 Docker 并运行 Apache DolphinScheduler | 附视频

DolphinScheduler 用可视化 DAG 把依赖理清楚,支持自动重试、补数和告警,而且部署轻量。


点亮⭐️  

https://github.com/apache/DolphinScheduler



点击蓝字 关注我们



一、背景与选型


1.1 定义

Apache DolphinScheduler 是一个可视化、分布式的大数据工作流任务调度系统。

通俗点说,就是用来编排和自动执行你那些复杂ETL任务的“指挥中心”。可以把之前写的各个SQL脚本、Shell 脚本,都拖拽成一个有依赖关系的流程图(DAG),然后设定好时间(比如每天凌晨2点),它就会按时自动执行,并监控每个任务的运行状态

为什么用 DolphinScheduler?

在数据开发中,任务编排是绕不开的痛点。早期用 Crontab 凑合,任务一多依赖关系就乱成麻,失败重试全靠手动,半夜被告警叫醒翻日志是常态。DolphinScheduler 解决的就是这个问题——用可视化 DAG 把依赖理清楚,支持自动重试、补数和告警,而且部署轻量,不依赖外部数据库,而且 DolphinScheduler 是国产开源项目,文档和社区交流都是中文,新手更容易上手。相比 airflow 和 Azkaban,它更轻、更易上手,用 Docker 一键部署就能快速搭建一套可靠的任务调度系统。所以我选择它作为调度底座。

1.2 主流调度工具对比

  • 追求国际标准、生态丰富、团队Python技术强 → 选Airflow。它是数据工程领域最通用的“瑞士军刀”。
  • 追求易用性、可视化、团队技术栈偏Java/Scala或想低门槛 → 选DolphinScheduler。它在国内企业的数据中台建设中已成为事实标准。
  • 维护老Hadoop系统,任务量很小 → 可以继续用Azkaban。但任何新项目都不建议再选它。

    二、部署方式对比


为什么选择Docker部署DS?

综上对比,我开始了我的 DolphinScheduler 探索之旅。下面来讲 DolphinScheduler 的部署。

三、Docker部署


Docker 方式,一键搞定,不用折腾环境

安装docker

打开Ubuntu终端,运行

# 更新软件包索引sudo apt update# 安装依赖sudo apt install -y apt-transport-https ca-certificates curl software-properties-common# 添加 Docker 官方 GPG 密钥curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg# 知道 自己的 Ubuntu 版本lsb_release -a# 添加 Docker 稳定版仓库(根据你的 Ubuntu 版本,如 20.04 或 22.04)echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null# 添加 Docker 官方仓库 版本是 Ubuntu 22.04 Jammyecho "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu jammy stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null# 安装 Dockersudo apt updatesudo apt install -y docker-ce docker-ce-cli containerd.io# 将当前用户加入 docker 组(避免每次都用 sudo)sudo usermod -aG docker $USER  #执行完后,退出当前终端会话重新登录,或者执行 newgrp docker,让权限生效。# 启动 Docker 并设置开机自启sudo systemctl enable dockersudo systemctl start docker

验证一下docker是否正常

docker --version  #正常显示版本号说明安装成功

验证普通用户能否执行 docker 命令

docker --version  # 不报权限错误,就说明配置好了

启动 DolphinScheduler单机体验,遇到拉取docker镜像失败:

遇到报错 connection refused 说明 Docker 无法连接到 Docker Hub 官方镜像仓库。这是网络问题,通常是国内访问 Docker Hub 被限制或速度太慢导致的。

解决方案:尝试配置 Docker 国内镜像加速器,配了中科大、网易、百度等镜像加速源,还可以选择阿里云专属加速器。

还可以采取用其他方式部署:直接下载 DolphinScheduler 的二进制包运行,不依赖 Docker

  • 注意:Docker镜像拉取失败时,建议改用二进制包方式部署


四、二进制包部署


4.1 下载安装包

在遇到其他镜像源拉取不顺利的情况下,用官方归档站(archive.apache.org),它是最稳定、不会变动的下载源。

wget https://archive.apache.org/dist/dolphinscheduler/3.2.2/apache-dolphinscheduler-3.2.2-bin.tar.gz#  用 Apache 的永久归档链接,比 dlcdn 镜像更可靠,不会出现 404 的情况

然后就是漫长的等待过程,经历了3次断点续传!耗时4h31ms。

4.2 解压与启动

终于,漫漫waiting过去了,下载好 了

# 解压安装包tar -xvzf apache-dolphinscheduler-3.2.2-bin.tar.gz# 进入解压后的目录cd apache-dolphinscheduler-3.2.2-bin# 启动 Standalone Server 服务bash ./bin/dolphinscheduler-daemon.sh start standalone-server

想关闭服务如下

执行启动命令,服务就会重新跑起来,然后打开浏览器访问 就能使用了。

cd apache-dolphinscheduler-3.2.2-binbash ./bin/dolphinscheduler-daemon.sh start standalone-server

五、Web界面访问



默认账号:admin,密码:dolphinscheduler123。

URL:http://<你的Ubuntu IP地址>:12345/dolphinscheduler/ui

如果是在虚拟机里运行 Ubuntu,需要确认网络模式是桥接模式(Bridged)或 NAT 端口转发,确保宿主机能访问到虚拟机的 IP。


六、后台实操



下面来跑一个调度任务,并跑通一个 Shell 任务。

目标:创建一个简单的 Shell 工作流并定时运行它

① 创建租户 (Tenant)

租户就是 DolphinScheduler 用来执行实际任务的 Linux 系统用户。这能保证任务有正确的文件系统权限。并在用户管理中把刚才创建的租户分配给用户(下拉框中找到刚刚创建的租户,点击提交),让admin用户有权限提交任务。

填信息,队列默认 default 就行

② 创建项目 

工作流都必须归属在项目下。

③ 创建工作流 (Workflow)

也就是画 DAG 图,进入一个可视化拖拽画布,这个画布是 DolphinScheduler 最核心的地方——拖拽式设计 DAG(有向无环图)。 从左侧工具栏里,把你需要的任务类型(比如 Shell 节点)拖到画布上。把 脚本内容填进去,或者引用你上传的资源文件。 一个节点与另一个节点之间形成它们的ETL前后依赖关系(比如:ODS装载完成,才执行DWD清洗)。

DAG (有向无环图):这是核心思想,所有任务依赖关系都在这个图里清晰展示。DAG 说白了就是:谁先跑,谁后跑,用箭头连起来(任务先后执行流程图)。

任务类型:它原生支持 Shell、Hive、Spark、SQL 等几十种任务,非常贴合大数据场景,Hive SQL可以直接用。

④ 上线

填写节点名称,并输入脚本,都配置好了点击保存工作流,点击「上线」

⑤ 定时

接着会弹出问你要不要设置定时调度 ,有需要的话就点击,没有需要就关闭弹窗。定时任务让凌晨时刻执行,这样数仓ETL就会每天自动跑起来了!

⑥ 看效果

点左侧 “工作流实例” → 点击这个实例看到 绿色=成功,右键点任意节点 → “查看日志”,能看到你写的 echo 内容

DAG(有向无环图) 的核心:

  • 有向:箭头指明了方向(A→B 就是 A 先跑)
  • 无环:没有回路(不会 A→B→A 死循环)

思考—从 C 再拖一条线回到 A?

系统会提示“不允许形成环”,这就是“无环”的体现。

还可以把任务类型换成 “SQL” 或 “Hive” 节点,感受一下不同任务类型。

总结流程

建租户 -> 建项目 -> 拖任务建 DAG -> 上线 -> 定时是 DolphinScheduler 的标准使用模式

遇到的问题

没有可安装候选项

在知道自己的系统版本之后,按照下面一步步排查解决,最后验证版本号正常就可以了

# 1 删除可能存在的旧配置sudo rm -f /etc/apt/sources.list.d/docker.listsudo rm -f /etc/apt/sources.list.d/docker-ce.list# 更新软件包列表sudo apt updatesudo apt install -y ca-certificates curl gnupg lsb-release  # 2 安装必要依赖# 3 添加 Docker 官方 GPG 密钥# 创建密钥存放目录sudo mkdir -p /etc/apt/keyrings# 下载并添加 Docker GPG 密钥curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg# 设置密钥文件权限sudo chmod a+r /etc/apt/keyrings/docker.gpg# 4 添加 Docker 官方源echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu jammy stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null## 更新软件包列表sudo apt update# 5 安装 Dockersudo apt install -y docker-ce docker-ce-cli containerd.io

七、常见问题



  • 怎么知道服务器IP?

① Windows:打开命令行,输入 ipconfig,找到 IPv4地址。

② Mac/Linux:打开终端,输入 ifconfig 或 ip addr,找到 inet 后面的数字。

③ 云服务器:直接看服务商控制台给的公网IP。

④ 如果Docker跑在本机:访问 http://localhost:12345/dolphinscheduler/ui 就行。

八、总结


学习顺序

熟 DolphinScheduler 拖拽编排→对接Hive/MySQL调度SQL任务→学习Airflow基础DAG编写

高频考点

DolphinScheduler 架构、HA高可用原理、任务失败重试、补数机制

演示视频

完结!

原文链接:https://blog.csdn.net/2401_86725609/article/details/163184603




END






用户案例


DolphinScheduler Agent开源上线Cisco Webex天翼云Zoom网易邮箱 每日互动 惠生工程作业帮 博世智驾蔚来汽车 长城汽车集度长安汽车思科网讯食行生鲜联通医疗联想新网银行兴业证券唯品富邦消费金融 自如有赞伊利当贝大数据珍岛集团传智教育BigoYY直播  拈花云科太美医疗深圳某智能制造企业



迁移实战


Azkaban   Ooize(当贝迁移案例)Airflow (有赞迁移案例)Air2phin(迁移工具)Airflow



最新发版消息



Apache DolphinScheduler 3.4.2 正式发布!新增 Amazon EMR Serverless 插件,增强监控与补数据能力



加入社区


关注社区的方式有很多:

  • GitHub: https://github.com/apache/dolphinscheduler
  • 官网:https://dolphinscheduler.apache.org/en-us
  • 订阅开发者邮件:dev@dolphinscheduler@apache.org(向邮箱发送任意内容,收到邮件后回复同意订阅即可)
  • X.com:@DolphinSchedule
  • YouTube:https://www.youtube.com/@apachedolphinscheduler
  • Slack:https://join.slack.com/t/asf-dolphinscheduler/shared_invite/zt-1cmrxsio1-nJHxRJa44jfkrNL_Nsy9Qg

同样地,参与Apache DolphinScheduler 有非常多的参与贡献的方式,主要分为代码方式和非代码方式两种。

非代码方式包括:

完善文档、翻译文档;翻译技术性、实践性文章;投稿实践性、原理性文章;成为布道师;社区管理、答疑;会议分享;测试反馈;用户反馈等。

‍代码方式包括:

查找Bug;编写修复代码;开发新功能;提交代码贡献;参与代码审查等。

贡献第一个PR(文档、代码) 我们也希望是简单的,第一个PR用于熟悉提交的流程和社区协作以及感受社区的友好度。

社区汇总了以下适合新手的问题列表https://github.com/apache/dolphinscheduler/pulls?q=is%3Apr+is%3Aopen+label%3A%22first+time+contributor%22

优先级问题列表https://github.com/apache/dolphinscheduler/pulls?q=is%3Apr+is%3Aopen+label%3Apriority%3Ahigh

如何参与贡献链接https://dolphinscheduler.apache.org/zh-cn/docs/3.2.2/%E8%B4%A1%E7%8C%AE%E6%8C%87%E5%8D%97_menu/%E5%A6%82%E4%BD%95%E5%8F%82%E4%B8%8E_menu

如果你❤️小海豚,就来为我点亮Star吧!

https://github.com/apache/dolphinscheduler



你的好友小海豚拍了拍你

并请你帮她点一下“分享”