数仓工具使用Docker部署DolphinScheduler 3.2.0 (分布式任务调度系统)-单机模式

Apache DolphinScheduler——开源大数据调度器神器
Apache DolphinScheduler(海豚调度),国人之光,是许多国人雷锋开源在Apache的顶级项目,主要功能就是负责任务的调度处理,Apache DolphinScheduler是一个分布式去中心化,易扩展的可视化DAG工作流任务调度系统。致力于解决数据处理流程中错综复杂的依赖关系,使调度系统在数据处理流程中开箱即用,架构如图,大概看一下
在这里插入图片描述
架构分布图说明:
分布式 :就是可以这个组件不同的部分可以分布在不同的机器上,整体的协调工作完成任务调度;(为啥要分布式而不装在一台,因为一头牛拉一大堆物资可能会累死,除了培养更加强壮的牛以外,还可以让多头牛去拉);
去中心化:DolphinScheduler有多台master(负责发号施令,布置任务,接受成果),假设有m1,m2,m3……,也有多台worker(负责真正干活的小弟),假设有w1,w2,w3……,而这些机器都注册在zookeeper,每次任务A来的时候,都同时需要m和w,但是根据你配置的不同任务A将分到不同的m和w上,而不是单纯在一个单点上运行,提高容错性,当然如果你玩单机模式,则不存在这个概念;
易扩展:既然master,worker可以有多个,那可不可有更多,所以DolphinScheduler是支持扩容的,反之,实践中发现太败家了,需要回收一些机器,也是可以支持缩容的;
可视化DAG工作流任务调度:就是除了提供查看日志来查看任务和工作流的运行情况,还有个有序无环图可查看任务和工作流的运行情况;
处理流程中错综复杂的依赖关系:现在有要跑的项目A,B;项目A有工作流a1(内有任务一s1,任务二s2),a2(内有任务一s3,任务二s4),a3(内有任务一s5,任务二s6);项目B里面有工作流b1(内有任务一s7,任务二s8),b2(内有任务一s9,任务二s10);一般的任务调度器,都能保证一个工作流内的任务如s1,s2是有序往下运行的,当然也可并行;但是有些调度器就实现不了工作流a1和a2以及a3之间有依赖关系了,比如某些场景下必须工作流b1先跑完,才可以跑a1,a2;那更甚至的必须先跑完整个项目B才能跑 项目A就更不支持了,即项目之间有壁垒,这些都是比价差劲的,需要用户自己想办法去实现,但是DolphinScheduler这些缺陷都填了,即以上的这些复杂依赖关系,不论是工作流之间,项目之间都支持;
架构图
在这里插入图片描述
DolphinScheduler支持多种部署模式,包括单机模式(Standalone)伪集群模式(Pseudo-Cluster)集群模式(Cluster)等。
1)单机模式
单机模式下,所有的服务都集中于一个StandaloneServer进程中,并且在其中内置了注册中心Zookeeper和数据库H2,只需要配置JDK环境,就可以一键启动DolphinScheduler。
一般用于快速体验功能。
2)伪集群模式
伪集群模式是在单台机器上部署DolphinScheduler各项服务,该模式下master、worker、api server、logger server等服务都只在同一台机器上。Zookeeper和数据库需单独安装并进行相应配置。
适用于公司中正式上线前的测试集群。
3 )集群模式
集群模式与伪集群模式的区别就是在多台机器上部署DolohinScheduler各项服务,并且可以配置多个Master及多个Worker。
DolphinScheduler概述
DolphinScheduler是一个分布式、易扩展的可视化DAG工作流调度平台,致力于解决数据处理流程中错综复杂的依赖关系,使调度系统在数据处理流程中开箱即用。
DolphinScheduler组件
DolphinScheduler主要包含以下几个部分:
1)MasterServer
采用分布式无中心设计理念。
MasterServer主要负责DAG(工作流)任务切分、任务提交(提交给WorkerServer并分配任务给WorkerServer)、任务监控,并同时监听其它的MasterServer和WorkerServer的健康状态(为了做高可用,容错机制。假如有一个WorkerServer挂掉了,要把它的工作分配给别的WorkerServer;假如有一个MasterServer挂掉了,那么这个MasterServer负责的工作就要交给别的MasterServer去负责,哪个MasterServer抢到它就负责)。
2)WorkerServer
也采用分布式无中心设计理念。
WorkerServer主要负责任务的执行和提供日志服务。
3)Zookeeeper
系统中的MasterServer和WorkerServer节点都通过Zookeeper来进行集群管理和容错,zookeeper负责协调整个集群。
4)Alert
Alert服务,提供告警相关服务(电话、邮件等等)。
5)API接口
API接口层,主要负责处理前端UI的请求,比如前端要看有哪些任务再执行,执行的进度如何,都要通过API接口调用。
6)UI
UI是整个系统的前端页面,提供系统的各种可视化操作界面。
接下来就来进入实战演练呀,先是单机模式,
如果是非单例模式请看另外一篇文章:

https://blog.csdn.net/weimeilayer/article/details/141052040

首先安装部署DolphinScheduler需要docker 19x以上

1.安装docker-ce
安装依赖的软件包

yum install -y yum-utils device-mapper-persistent-data lvm2

添加Docker的阿里云yum源

yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

更新软件包索引

yum makecache fast

查看docker版本,这里选择25.0.5

yum list docker-ce --showduplicates |sort –r

安装docker-ce

yum install -y docker-ce-25.0.5

2.启动Docker服务

systemctl start docker             #启动Docker
systemctl enable docker.service    #设置开机自启

查看docker版本

docker --version

开始拉取dolphinscheduler镜像

docker pull registry.cn-hangzhou.aliyuncs.com/qiluo-images/dolphinscheduler-standalone-server:3.2.0

启动服务
使用 standalone-server 镜像

docker run --name dolphinscheduler-standalone-server \
    -p 32000:12345 \
    -p 25333:25333 \
    -v /data/dolphinscheduler:/opt/dolphinscheduler \
    -d registry.cn-hangzhou.aliyuncs.com/qiluo-images/dolphinscheduler-standalone-server:3.2.0

添加了重启策略 --restart unless-stopped,它确保容器自动重启,除非它被明确停止。这提高了服务器重新启动或容器崩溃时的可靠性。

docker run --name dolphinscheduler-standalone-server \
    -p 32000:12345 \
    -p 25333:25333 \
    -v /data/dolphinscheduler:/opt/dolphinscheduler \
    -e DOLPHINSCHEDULER_OPTS="-Xms512m -Xmx1024m" \
    --restart unless-stopped \
    -d registry.cn-hangzhou.aliyuncs.com/qiluo-images/dolphinscheduler-standalone-server:3.2.0
docker run -d --name dolphinscheduler-standalone-server \
  -p 32000:12345 \
  -p 25333:25333 \
  -e TZ="Asia/Shanghai" \
  -e SPRING_JACKSON_TIME_ZONE="Asia/Shanghai" \
  -v /data/dolphinscheduler:/dolphinscheduler \
  registry.cn-hangzhou.aliyuncs.com/qiluo-images/dolphinscheduler-standalone-server:3.2.0

swagger 地址:http://ip:端口/dolphinscheduler/swagger-ui/index.html
在这里插入图片描述
登录DolphinScheduler界面
启动服务后,在浏览器中输入http://ip:端口/dolphinscheduler/ui 访问DolphinScheduler.
默认的用户名:admin 密码:dolphinscheduler123
在这里插入图片描述
登录成功后进入到DolphinScheduler的管理界面。
在这里插入图片描述
然后是准备驱动,上传到 /data/dolphinscheduler/目录下

kingbase8-8.6.0.jar
mysql-connector-j-8.4.0.jar
mysql-connector-java-5.1.48.jar
ojdbc6-11.2.0.3.jar
postgresql-42.7.3.jar
DmJdbcDriver18-8.1.2.79.jar

然后进入/data/dolphinscheduler/目录

cd /data/dolphinscheduler

然后复制驱动到容器中

docker cp kingbase8-8.6.0.jar dolphinscheduler-standalone-server:/opt/dolphinscheduler/libs/alert-server/
docker cp mysql-connector-j-8.4.0.jar dolphinscheduler-standalone-server:/opt/dolphinscheduler/libs/alert-server/
docker cp mysql-connector-java-5.1.48.jar dolphinscheduler-standalone-server:/opt/dolphinscheduler/libs/alert-server/
docker cp ojdbc6-11.2.0.3.jar dolphinscheduler-standalone-server:/opt/dolphinscheduler/libs/alert-server/
docker cp postgresql-42.7.3.jar dolphinscheduler-standalone-server:/opt/dolphinscheduler/libs/alert-server/
docker cp DmJdbcDriver18-8.1.2.79.jar dolphinscheduler-standalone-server:/opt/dolphinscheduler/libs/alert-server/

docker cp kingbase8-8.6.0.jar dolphinscheduler-standalone-server:/opt/dolphinscheduler/libs/api-server/
docker cp mysql-connector-j-8.4.0.jar dolphinscheduler-standalone-server:/opt/dolphinscheduler/libs/api-server/
docker cp mysql-connector-java-5.1.48.jar dolphinscheduler-standalone-server:/opt/dolphinscheduler/libs/api-server/
docker cp ojdbc6-11.2.0.3.jar dolphinscheduler-standalone-server:/opt/dolphinscheduler/libs/api-server/
docker cp postgresql-42.7.3.jar dolphinscheduler-standalone-server:/opt/dolphinscheduler/libs/api-server/
docker cp DmJdbcDriver18-8.1.2.79.jar dolphinscheduler-standalone-server:/opt/dolphinscheduler/libs/api-server/

docker cp kingbase8-8.6.0.jar dolphinscheduler-standalone-server:/opt/dolphinscheduler/libs/master-server/
docker cp mysql-connector-j-8.4.0.jar dolphinscheduler-standalone-server:/opt/dolphinscheduler/libs/master-server/
docker cp mysql-connector-java-5.1.48.jar dolphinscheduler-standalone-server:/opt/dolphinscheduler/libs/master-server/
docker cp ojdbc6-11.2.0.3.jar dolphinscheduler-standalone-server:/opt/dolphinscheduler/libs/master-server/
docker cp postgresql-42.7.3.jar dolphinscheduler-standalone-server:/opt/dolphinscheduler/libs/master-server/
docker cp DmJdbcDriver18-8.1.2.79.jar dolphinscheduler-standalone-server:/opt/dolphinscheduler/libs/master-server/

docker cp kingbase8-8.6.0.jar dolphinscheduler-standalone-server:/opt/dolphinscheduler/libs/worker-server/
docker cp mysql-connector-j-8.4.0.jar dolphinscheduler-standalone-server:/opt/dolphinscheduler/libs/worker-server/
docker cp mysql-connector-java-5.1.48.jar dolphinscheduler-standalone-server:/opt/dolphinscheduler/libs/worker-server/
docker cp ojdbc6-11.2.0.3.jar dolphinscheduler-standalone-server:/opt/dolphinscheduler/libs/worker-server/
docker cp postgresql-42.7.3.jar dolphinscheduler-standalone-server:/opt/dolphinscheduler/libs/worker-server/
docker cp DmJdbcDriver18-8.1.2.79.jar dolphinscheduler-standalone-server:/opt/dolphinscheduler/libs/worker-server/

# 暂时可以不需要
docker cp kingbase8-8.6.0.jar dolphinscheduler-standalone-server:/opt/dolphinscheduler/libs/standalone-server/
docker cp mysql-connector-j-8.4.0.jar dolphinscheduler-standalone-server:/opt/dolphinscheduler/libs/standalone-server/
docker cp mysql-connector-java-5.1.48.jar dolphinscheduler-standalone-server:/opt/dolphinscheduler/libs/standalone-server/
docker cp ojdbc6-11.2.0.3.jar dolphinscheduler-standalone-server:/opt/dolphinscheduler/libs/standalone-server/
docker cp postgresql-42.7.3.jar dolphinscheduler-standalone-server:/opt/dolphinscheduler/libs/standalone-server/
docker cp DmJdbcDriver18-8.1.2.79.jar dolphinscheduler-standalone-server:/opt/dolphinscheduler/libs/standalone-server/

然后有需要使用到datax的组件需要python3环境
进入容器直接执行命令

apt-get update
apt-get install -y python3 python3-pip
apt-get install -y python python-pip
python3 --version 
pip3 --version

然后有需要使用到datax的组件需要python2环境
进入容器直接执行命令

apt-get update
apt-get install -y python python-pip
python --version
pip --version

此时此刻就完成部署了,就可以测试连接了
![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/e0d2417ba371480893c1f7a24fed54f2.png
测试Doris 连接成功了
在这里插入图片描述

如何使用Kubernetes上部署dolphinscheduler-standalone-server
创建vi dolphinscheduler-deployment.yaml

apiVersion: v1
kind: PersistentVolume
metadata:
  name: dolphinscheduler-pv
spec:
  capacity:
    storage: 10Gi
  accessModes:
    - ReadWriteOnce
  hostPath:
    path: "/data/dolphinscheduler"
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: dolphinscheduler-pvc
spec:
  accessModes:
    - ReadWriteOnce
  resources:
    requests:
      storage: 10Gi
---
apiVersion: apps/v1
kind: Deployment
metadata:
  name: dolphinscheduler-standalone-server
  labels:
    app: dolphinscheduler
spec:
  replicas: 1
  selector:
    matchLabels:
      app: dolphinscheduler
  template:
    metadata:
      labels:
        app: dolphinscheduler
    spec:
      containers:
      - name: dolphinscheduler-standalone-server
        image: registry.cn-hangzhou.aliyuncs.com/qiluo-images/dolphinscheduler-standalone-server:3.2.0
        ports:
        - containerPort: 12345
          name: api-port
        - containerPort: 25333
          name: master-port
        volumeMounts:
        - name: dolphinscheduler-storage
          mountPath: /opt/dolphinscheduler
      volumes:
      - name: dolphinscheduler-storage
        persistentVolumeClaim:
          claimName: dolphinscheduler-pvc
---
apiVersion: v1
kind: Service
metadata:
  name: dolphinscheduler-service
  labels:
    app: dolphinscheduler
spec:
  selector:
    app: dolphinscheduler
  ports:
  - name: api-port
    protocol: TCP
    port: 12345
    targetPort: 12345
    nodePort: 32000
  - name: master-port
    protocol: TCP
    port: 25333
    targetPort: 25333
    nodePort: 25333
  type: NodePort

然后部署

kubectl apply -f dolphinscheduler-deployment.yaml

第三种在Kubernetes上部署Apache DolphinScheduler

1.建议为DolphinScheduler创建一个单独的命名空间(如果还没创建):

kubectl create namespace dolphinscheduler

2.准备ZooKeeper
DolphinScheduler依赖ZooKeeper作为协调服务。可以使用已有的ZooKeeper服务,也可以在Kubernetes上部署一个新的实例。以下是一个简单的ZooKeeper StatefulSet部署:

vi zookeeper-deployment.yaml
apiVersion: apps/v1
kind: StatefulSet
metadata:
  name: zookeeper
  namespace: dolphinscheduler
spec:
  serviceName: "zookeeper"
  replicas: 3
  selector:
    matchLabels:
      app: zookeeper
  template:
    metadata:
      labels:
        app: zookeeper
    spec:
      containers:
      - name: zookeeper
        image: registry.cn-hangzhou.aliyuncs.com/qiluo-images/zookeeper:latest
        ports:
        - containerPort: 2181
        volumeMounts:
        - name: data
          mountPath: /data
  volumeClaimTemplates:
  - metadata:
      name: data
    spec:
      accessModes: [ "ReadWriteOnce" ]
      resources:
        requests:
          storage: 1Gi

3.准备PostgreSQL,但是MySQL也是可以的
DolphinScheduler依赖PostgreSQL数据库存储任务信息。可以使用已有的PostgreSQL服务,也可以部署一个新的:

vi postgresql-deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
  name: postgres
  namespace: dolphinscheduler
spec:
  replicas: 1
  selector:
    matchLabels:
      app: postgres
  template:
    metadata:
      labels:
        app: postgres
    spec:
      containers:
      - name: postgres
        image: registry.cn-hangzhou.aliyuncs.com/qiluo-images/postgres:latest
        ports:
        - containerPort: 5432
        env:
        - name: POSTGRES_USER
          value: "dolphinscheduler"
        - name: POSTGRES_PASSWORD
          value: "Yo5WYypu0mCCheOU"
        - name: POSTGRES_DB
          value: "dolphinscheduler"

4.部署DolphinScheduler
创建DolphinScheduler的Deployment和Service资源。你需要配置环境变量来连接ZooKeeper和PostgreSQL:

vi dolphinscheduler-deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
  name: dolphinscheduler
  namespace: dolphinscheduler
spec:
  replicas: 1
  selector:
    matchLabels:
      app: dolphinscheduler
  template:
    metadata:
      labels:
        app: dolphinscheduler
    spec:
      containers:
      - name: dolphinscheduler
        image: registry.cn-hangzhou.aliyuncs.com/qiluo-images/dolphinscheduler:latest
        ports:
        - containerPort: 12345
        - containerPort: 56789
        env:
        - name: DATABASE_HOST
          value: "plsql.dolphinscheduler.svc.cluster.local"
        - name: DATABASE_PORT
          value: "5432"
        - name: DATABASE_DATABASE
          value: "dolphinscheduler"
        - name: DATABASE_USERNAME
          value: "dolphinscheduler"
        - name: DATABASE_PASSWORD
          value: "Yo5WYypu0mCCheOU"
        - name: ZOOKEEPER_QUORUM
          value: "zookeeper.dolphinscheduler.svc.cluster.local:2181"

  1. 配置Ingress或NodePort
    根据你的集群设置,可能需要配置Ingress或NodePort以暴露DolphinScheduler的Web UI:
vi dolphinscheduler-service.yaml
apiVersion: v1
kind: Service
metadata:
  name: dolphinscheduler-service
  namespace: dolphinscheduler
spec:
  type: NodePort
  ports:
  - port: 12345
    targetPort: 12345
    nodePort: 30001
  - port: 56789
    targetPort: 56789
    nodePort: 30002
  selector:
    app: dolphinscheduler

最后执行

kubectl apply -f zookeeper-deployment.yaml
kubectl apply -f postgresql-deployment.yaml
kubectl apply -f dolphinscheduler-deployment.yaml
kubectl apply -f dolphinscheduler-service.yaml

在这里插入图片描述

在这里插入图片描述

  • 10
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
Docker 是一个开源的应用容器引擎,可以让开发者将应用程序及其依赖打包成一个可移植的容器DolphinScheduler 是一个分布式的大数据工作流任务调度系统,可以根据业务需求自动调度和执行任务。 在单机部署 DolphinScheduler 3.1.7,我们可以使用 Docker 方便地搭建环境。下面是具体的步骤: 1. 首先,安装 Docker。根据操作系统的不同,可以在 Docker 官网上下载相应的安装包,并按照官方的指引进行安装。 2. 安装 Docker Compose。Docker Compose 是一个用于定义和运行多容器 Docker 应用程序的工具。同样可以在 Docker 官网上找到相应的安装方式,并进行安装。 3. 下载 DolphinScheduler 3.1.7 的 release 包。可以在 DolphinScheduler 的 GitHub 仓库中找到发布版本,选择合适的版本并下载。 4. 解压 release 包,并进入解压后的文件夹。 5. 修改 Dockerfile 文件。Dockerfile 是 Docker 构建镜像的配置文件,可以根据需要进行修改。一般来说,需要修改的地方包括环境变量的配置和数据源的配置等。 6. 修改 docker-compose.yml 文件。docker-compose.yml 文件定义了 Docker Compose 的配置信息,可以根据需要进行修改。主要需要修改的地方包括挂载目录和环境变量的配置。 7. 使用 Docker Compose 构建镜像并启动容器。在 DolphinScheduler 的文件夹下执行以下命令: ``` docker-compose up -d ``` 通过以上步骤,就可以在单机部署 DolphinScheduler 3.1.7。在启动容器后,可以通过浏览器访问 DolphinScheduler 的 Web 界面,进行任务的调度和执行。 需要注意的是,单机部署适用于开发和测试环境,对于生产环境则需要考虑使用分布式部署,以提高系统的稳定性和容错性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

❀͜͡傀儡师

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值