dolphinscheduler
dolphinscheduler
官网地址:
https://dolphinscheduler.apache.org/zh-cn/docs/3.2.1/about/hardware
1. 概念:dolphinscheduler是一个功能强大的开源调度系统,专为管理和调度大规模数据处理任务设计。
2. 特点:
- 分布式架构、支持大规模
- 多任务类型支持:支持多种任务类型,如hadoop、spark、flink、hive、py、shell等,满足不同数据处理需求。
- 丰富的调度策略与监控:提供多种调度策略和强大的监控功能,帮助用户有效管理和优化任务执行。
- 可视化操作,允许用户通过拖拽方式构建工作流,简化复杂任务的配置过程。
- 易扩展性:可水平扩展
- 高可用性和容错能力:通过去中心化架构和动态选举主节点机制,确保系统稳定运行。
- 组件组成:
- masterserver: 负责任务的切分、提交和监控,同时监听其他masterserver和workerserver的状态。
- wokerserver: 执行具体任务并提供日志服务。
- zookeeper: 用于实现集群管理和容错。
- alert服务: 提供告警通知。
- api接口层:处理来自前端UI的请求。
- web UI:提供用户界面,支持工作流的可视化编辑和管理。
3. dophinscheduler,其中tenant,是租客
4. dophinscheduler,在ETL系统中,可以很好的编排这些ETL(Extract, Transform, Load),对于大数据计算框架如Spark和Flink的任务调度,DolphinScheduler能够有效地管理任务的执行顺序和资源分配。例如,在一个基于Spark的机器学习项目中,它可以安排数据准备任务、模型评估任务的执行顺序,并且合理的分配集群资源给这些任务。可以用于执行一些定时的数据备份、报表生成等任务。比如,企业需要每天定时生成销售报表,就可以使用.
5. 在定时任务方面,dolphinscheduler和crontab的区别
crontab | dolphinscheduler |
简单的定时任务 | 复杂的定时任务,有依赖关系的,比如电商企业中,备份订单数据-->生成销售报表-->发给相关部门。dolphinscheduler将三个任务构建成一个工作流,设置好依赖关系,确保执行顺序。 |
可视化操作 | 文本文件 |
主要shell脚本 | 多类型,shell脚本任务、SQL任务、py脚本任务、spark任务、flink任务,轻松集成大数据处理框架和数据库系统。例如,在大数据分析场景中,可以使用ds调度spark任务进行数据处理,同时调度sql任务将处理后的数据存储到数据库中 |
本地系统上运行 | 分布式架构,在多节点的集群环境中运行,可通过worker节点扩容 |
6. dolphinscheduler的主要应用的背景,是大数据的各个强依赖
7. dolphinscheduler的特性:
8. 什么是有向无环图,无法从某个顶点出发,经过若干条边,回到该点。
安装步骤:
1. 购买云主机,主机名dolphinscheduler,4核8g,安装docker-ce,默认仓库的docker的版本25.0.2
2. 在dolphinscheduler官网下载源码包,将源码包传到linux机器,
https://dolphinscheduler.apache.org/zh-cn/download/3.1.8
3. 按照官方提供的docker-compose的方法启动dolphinscheduler项目,会提示拉不到镜像,所以需要到可用服务器拉镜像,打包发回到本地,load -i 加载到本地。
有个注意的点是,docker-compose之前是一个独立的软件,docker 20.10.0版本之后,变成docker的一个子命令了,所以直接docker compose起项目就可以了。
https://dolphinscheduler.apache.org/zh-cn/docs/3.1.8/guide/start/docker
$ DOLPHINSCHEDULER_VERSION=3.2.1
$ tar -zxf apache-dolphinscheduler-"${DOLPHINSCHEDULER_VERSION}"-src.tar.gz
# Mac Linux 用户
$ cd apache-dolphinscheduler-"${DOLPHINSCHEDULER_VERSION}"-src/deploy/docker
# Windows 用户, `cd apache-dolphinscheduler-"${DOLPHINSCHEDULER_VERSION}"-src\deploy\docker`
# 如果需要初始化或者升级数据库结构,需要指定profile为schema
$ docker-compose --profile schema up -d
# 启动dolphinscheduler所有服务,指定profile为all
$ docker-compose --profile all up -d
4. 购买可用云主机,配可用公网ip,安装docker,默认docker版本18.09.0。从docker官方拉镜像,docker save -o 保存到本地,然后tar -zxf打包
[root@ecs-dolphinscheduler docker]# pwd
/root/apache-dolphinscheduler-3.1.8-src/deploy/docker
[root@ecs-dolphinscheduler docker]# ls -A
docker-compose.yml .docker-compose.yml.swp docker-stack.yml .env
[root@ecs-dolphinscheduler docker]# cat .env | grep "HUB"
HUB=apache
[root@ecs-dolphinscheduler docker]# cat .env | grep "TAG"
TAG=3.1.8
[root@ecs-dolphinscheduler docker]# pwd
/root/apache-dolphinscheduler-3.1.8-src/deploy/docker
[root@ecs-dolphinscheduler docker]# vim docker-compose.yml
可以看到compose都需要哪些镜像。然后将变量HUB替换成apache,将TAG替换成3.1.8,在txt写出下方命令,批量复制粘贴到可用云主机,pull镜像
[root@ecs-hk ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
apache/dolphinscheduler-tools 3.1.8 6ace46fb52e5 15 months ago 262MB
apache/dolphinscheduler-master 3.1.8 3d9a81c2a310 15 months ago 413MB
apache/dolphinscheduler-worker 3.1.8 dfea0380e28b 15 months ago 417MB
apache/dolphinscheduler-api 3.1.8 6c89b3044b7e 15 months ago 441MB
apache/dolphinscheduler-alert-server 3.1.8 b230163c3799 15 months ago 313MB
bitnami/postgresql 11.11.0 783da6164a58 3 years ago 258MB
bitnami/zookeeper 3.6.2 aaec1c668136 3 years ago 467MB
docker pull bitnami/postgresql:11.11.0
docker pull bitnami/zookeeper:3.6.2
docker pull apache/dolphinscheduler-tools:3.1.8
docker pull apache/dolphinscheduler-api:3.1.8
docker pull apache/dolphinscheduler-alert-server:3.1.8
docker pull apache/dolphinscheduler-master:3.1.8
docker pull apache/dolphinscheduler-worker:3.1.8
5. 本地启动dolphinscheduler服务
6. 进入登录界面:
7. 数据账号密码登录 admin/dolphinscheduler
安装遇到的问题:
1. 从可用把镜像导入到本地主机之后,没有执行schema纲要,这一步,直接执行了all up这一步,alert和master的容器起不来,api的容器会unhealthy,所以登录界面打不开。
2. 在处理第一个问题之前,我以为是基础镜像没有导入过来的原因,所以先把基础镜像导入到本地机器的本地镜像仓库了。没有执行schema这一步,执行第三步all up,服务还是起不来。
3. 在处理前两个问题之前,我以为是4核8g的规格配置不够,所以升级成8核16g了。但是服务还是起不来。(后面变更为4核8g之后,服务还是能访问,ds的web页面可以打开,说明不是规格的问题)
4. 总之,核心原因是第一个,没有执行schema up,直接执行 all up。ds本身的镜像不知道需要不需要,理论上应该需要,但是这两个yaml文件里面都没提,所以暂时不能确定是需要还是不需要。从实际角度来讲,多一个基础镜像,即使不需要,应该也是没问题的。
api 为用户提供UI接口调用的服务
master 负责整个工作流调度
worker 具体执行工作流任务的workerflow
alert 工作流的异常和失败进行告警
租户tenant 对应的是linux用户,是worker提交作业,所使用的用户,如果linux没有这个用户,worker会在执行脚本的时候,创建这个用户
项目里面创建工作流,工作流里面创建任务