DolphinScheduler初体验
背景
DolphinScheduler是由易观2019年开发的,目前属于Apache的正式的一个分布式易扩展的可视化DAG工作流任务调度系统。其功能与airflow相近。截止2021-08-20,已经在github上有6.2k个star。
目前官方声称可以支持每日10万级的调度。
DS与Airflow, Azkaban对比
来自知乎:使用 DolphinScheduler 调度 Kylin 构建
初体验
目前最新版本为 1.3.6。
本文只进行单机部署试用,因此跳过了1.3.6官方部署文档中的创建用户、免密登录等环节。
下载
下载二进制包:
wget https://mirrors.sonic.net/apache/dolphinscheduler/1.3.6/apache-dolphinscheduler-1.3.6-bin.tar.gz
环境准备
数据库增加账号
// 添加用户
// 只允许指定ip连接
create user '新用户名'@'localhost' identified by '密码';
// 允许所有ip连接(用通配符%表示)
create user '新用户名'@'%' identified by '密码';
// 为新用户授权
//基本格式如下
grant all privileges on dolphinscheduler.* to '新用户名'@'指定ip' identified by '新用户密码' ;
// 刷新权限
FLUSH PRIVILEGES;
安装Zookeeper
// 安装
sudo apt-get install zookeeper
// 启动
/usr/share/zookeeper/bin/zkServer.sh start
// 测试安装成功
/usr/share/zookeeper/bin/zkCli.sh
[zk: localhost:2181(CONNECTED) 0] ls /
[zookeeper]
数据库
修改配置文件 conf/datasource.properties
,如下:
# mysql
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
spring.datasource.url=jdbc:mysql://127.0.0.1:3306/dolphinscheduler?useUnicode=true&characterEncoding=UTF-8&allowMultiQueries=true
spring.datasource.username=dolphinscheduler
spring.datasource.password=password
导入基本数据:
sh script/create-dolphinscheduler.sh
报错,找不到类 com.mysql.jdbc.Driver
自己手动复制一个 mysql-connector-java-5.1.47.jar
到 lib
下,如 https://repo1.maven.org/maven2/mysql/mysql-connector-java/5.1.47/mysql-connector-java-5.1.47.jar。
运行结果:
12:41:15.665 [main] INFO org.apache.dolphinscheduler.dao.upgrade.shell.CreateDolphinScheduler - upgrade DolphinScheduler finished
12:41:15.665 [main] INFO org.apache.dolphinscheduler.dao.upgrade.shell.CreateDolphinScheduler - create DolphinScheduler success
修改运行参数
编辑配置文件 conf/env/dolphinscheduler_env.sh
// 本文跳过
编辑配置文件conf/config/install_config.conf
dbtype="mysql"
dbhost="192.168.31.150:3306"
username="dolphinscheduler"
dbname="dolphinscheduler"
password="password"
deployUser="admin"
zkQuorum="192.168.31.150:2181"
installPath="/home/admin/dolphinscheduler/publish"
resourceUploadPath="/home/admin/dolphinscheduler/resource"
ips="localhost"
masters="localhost"
workers="localhost:default"
alertServer="localhost"
apiServers="localhost"
然后安装:
bash install.sh
这里我忍不住要吐槽一句,这个安装过程就是为hadoop集群比如CDH量身定制的,对于单机版来体验运行,太复杂太不友好了。
访问界面
http://localhost:12345/dolphinscheduler/
默认账户为:admin/dolphinscheduler123
使用
好不容易安装一个,创建一个DAG工作流体验一下吧。
创建租户
在安全中心 --> 租户管理中,创建一个租户。
租户和用户绑定
在用户管理中,修改用户,绑定对应的租户。
创建项目
创建一个测试项目。
创建两个脚本的工作流
创建两个shell即可,操作很简单。如果遇到了困难,可以参考这篇文章DAG测试中的图形指南。
上线运行
回到项目页面,先点上线,再点运行。
如果提示“没有合适的租户”,一定是前面没有创建租户、以及进行租户和用户的绑定。
在任务实例中,可以看到运行日志。
闲聊
组件
包括至少5个组件:
- master-server
- worker-server
- logger-server
- alert-server
- api-server
依赖项
- 前端依赖了nodejs,源码编译时需要。
- 后端依赖了zookeeper
技术细节
使用了 quartz调度。