DolphinScheduler源码阅读日记(一)开发环境搭建

DolphinScheduler源码阅读日记(一)开发环境搭建

系统环境

环境 版本
系统 macOS 12.2.1/m1 pro
JRE Zulu 8.62.0.19-CA-macos-aarch64
Maven 3.8.6
Node 18.4.0
Pnpm 7.3.0
Zookeeper 3.8.4
MySQL 8.0.28
DolphinScheduler 3.2.0

搭建项目开发环境

项目下载

从github下载源码

dolphinscheduler源码仓库下载源码

1
2
git clone https://github.com/apache/dolphinscheduler
git checkout 3.2.0 # 切换到3.2.0分支

Zookeeper

下载二进制可执行包

下载Zookeeper 3.8.4二进制可执行包

创建文件&日志目录

解压压缩包,创建data、datalog目录

1
2
3
cd /Users/jiashaoqi/plugin/zookeeper
tar -zxvf apache-zookeeper-3.8.4-bin.tar.gz
mkdir data datalog

修改配置文件

将conf目录下的zoo_sample.cfg文件,复制一份,重命名为zoo.cfg,修改其中数据和日志的配置,如:

1
2
3
cd ./apache-zookeeper-3.8.4-bin/conf
cp zoo_sample.cfg zoo.cfg
vi zoo.cfg

添加环境变量

1
2
vi ~/.bash_profile # 添加内容如下
source ~/.bash_profile

启动Zookeeper

1
zkServer.sh start # 见到如图所示即为启动成功

MySQL数据库配置

初始化数据库及账号

创建完新数据库dolphinscheduler后,将dolphinscheduler/dolphinscheduler-dao/src/main/resources/sql/dolphinscheduler_mysql.sql下的sql文件直接在MySQL中运行,完成数据库初始化

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
mysql> create database dolphinscheduler;
Query OK, 1 row affected (0.01 sec)

mysql> create user 'dolphin'@'localhost' identified by 'nihplod';
Query OK, 0 rows affected (0.01 sec)

mysql> grant all privileges on dolphinscheduler.* to 'dolphin'@'localhost';
Query OK, 0 rows affected (0.00 sec)

mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)

mysql> use dolphinscheduler;
Database changed

mysql> source /Users/jiashaoqi/workspace/idea/dolphinscheduler/dolphinscheduler-dao/src/main/resources/sql/dolphinscheduler_mysql.sql;

Query OK, 1 row affected (0.00 sec)
...
Query OK, 1 row affected (0.00 sec)

后端

Maven依赖下载

通过idea打开项目,下载依赖,这可能需要一段时间

注意:maven下载依赖可能会出现问题,对于下载出错的依赖或者插件,可以到本地maven仓库目录下删除对应的子目录重新下载,如在下载依赖后编译时发生了如下异常

1
java: 读取/Users/jiashaoqi/plugin/maven/apache-maven-3.8.6/repo/io/fabric8/kubernetes-model-core/5.10.2/kubernetes-model-core-5.10.2.jar时出错; zip file is empty

所以手动下载依赖kubernetes-model-core

1
2
rm -rfv /Users/jiashaoqi/plugin/maven/apache-maven-3.8.6/repo/io/fabric8/kubernetes-model-core/5.10.2
mvn dependency:get -DgroupId=io.fabric8 -DartifactId=kubernetes-model-core -Dversion=5.10.2

修改数据库配置

  1. 将dolphinscheduler-bom/pom.xml文件中mysql-connector-java依赖的scope修改为compile
  2. 将如下配置文件中的mysql的datasource配置为如下内容
    1
    2
    3
    4
    5
    dolphinscheduler-master/src/main/resources/application.yaml:151
    dolphinscheduler-alert/dolphinscheduler-alert-server/src/main/resources/application.yaml:93
    dolphinscheduler-api/src/main/resources/application.yaml:229
    dolphinscheduler-standalone-server/src/main/resources/application.yaml:305
    dolphinscheduler-tools/src/main/resources/application.yaml:49
    配置名 配置值
    datasource.driver-class-name com.mysql.cj.jdbc.Driver
    datasource.url jdbc:mysql://127.0.0.1:3306/dolphinscheduler
    datasource.username dolphin
    datasource.password nihplod

修改日志级别

为以下配置增加一行内容 使日志能在命令行中显示

1
2
3
dolphinscheduler-master/src/main/resources/logback-spring.xml
dolphinscheduler-worker/src/main/resources/logback-spring.xml
dolphinscheduler-api/src/main/resources/logback-spring.xml
1
2
3
4
5
<root level="INFO">
+ <appender-ref ref="STDOUT"/>
<appender-ref ref="APILOGFILE"/>
<appender-ref ref="SKYWALKING-LOG"/>
</root>

可以再在STDOUT这个appender的pattern上套一个%clr(...),让日志在控制台上高亮显示,如

1
2
3
4
5
6
7
8
9
10
11
12
13
<configuration scan="true" scanPeriod="120 seconds">
+ <include resource="org/springframework/boot/logging/logback/defaults.xml" />
<!-- ... -->
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<pattern>
+ %clr([%level] %date{yyyy-MM-dd HH:mm:ss.SSS Z} %logger{96}:[%line] - [WorkflowInstance-%X{workflowInstanceId:-0}][TaskInstance-%X{taskInstanceId:-0}] - %msg%n)
</pattern>
<charset>UTF-8</charset>
</encoder>
</appender>
<!-- ... -->
</configuration>

编译源代码

运行后端服务

参考DolphinScheduler 普通开发模式
需要启动三个服务,包括 MasterServer,WorkerServer,ApiApplicationServer

  • MasterServer:在 Intellij IDEA 中执行 org.apache.dolphinscheduler.server.master.MasterServer 中的 main 方法,并配置 VM Options -Dlogging.config=classpath:logback-spring.xml -Ddruid.mysql.usePingMethod=false -Dspring.profiles.active=mysql
  • WorkerServer:在 Intellij IDEA 中执行 org.apache.dolphinscheduler.server.worker.WorkerServer 中的 main 方法,并配置 VM Options -Dlogging.config=classpath:logback-spring.xml -Ddruid.mysql.usePingMethod=false -Dspring.profiles.active=mysql
  • ApiApplicationServer:在 Intellij IDEA 中执行 org.apache.dolphinscheduler.api.ApiApplicationServer 中的 main 方法,并配置 VM Options -Dlogging.config=classpath:logback-spring.xml -Dspring.profiles.active=api,mysql。启动完成可以浏览 Open API 文档,地址为 http://localhost:12345/dolphinscheduler/swagger-ui/index.html

前端

安装依赖,运行前端服务

1
2
3
cd dolphinscheduler-ui
pnpm install
pnpm run dev

截止目前,前后端已成功运行起来,浏览器访问 http://localhost:5173 ,并使用默认账户密码 admin/dolphinscheduler123 即可完成登录

完成环境搭建

搭建成功效果

作者

jszero

发布于

2024-07-27

更新于

2025-05-13

许可协议

评论