分布式调度框架。
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

9.1 KiB

Dolphin Scheduler是什么?

一个分布式易扩展的可视化DAG工作流任务调度系统。致力于解决数据处理流程中错综复杂的依赖关系,使调度系统在数据处理流程中开箱即用

Github URL: https://github.com/apache/incubator-dolphinscheduler

Official Website: https://dolphinscheduler.apache.org

Dolphin Scheduler

EN doc CN doc

如何使用docker镜像

你可以运行一个dolphinscheduler实例

$ docker run -dit --name dolphinscheduler \ 
-e POSTGRESQL_USERNAME=test -e POSTGRESQL_PASSWORD=test \
-p 8888:8888 \
dolphinscheduler all

startup.sh脚本中,默认的创建Postgres的用户、密码和数据库,默认值分别为:rootrootdolphinscheduler

同时,默认的Zookeeper也会在startup.sh脚本中被创建。

或者通过环境变量 POSTGRESQL_HOST POSTGRESQL_PORT ZOOKEEPER_QUORUM 使用已存在的服务

你可以指定一个已经存在的 Postgres 服务. 如下:

$ docker run -dit --name dolphinscheduler \
-e POSTGRESQL_HOST="192.168.x.x" -e POSTGRESQL_PORT="5432" \
-e POSTGRESQL_USERNAME="test" -e POSTGRESQL_PASSWORD="test" \
-p 8888:8888 \
dolphinscheduler all

你也可以指定一个已经存在的 Zookeeper 服务. 如下:

$ docker run -dit --name dolphinscheduler \
-e ZOOKEEPER_QUORUM="l92.168.x.x:2181"
-e POSTGRESQL_USERNAME="test" -e POSTGRESQL_PASSWORD="test" \
-p 8888:8888 \
dolphinscheduler all

或者运行dolphinscheduler中的部分服务

你能够运行dolphinscheduler中的部分服务。

  • 启动一个 master server, 如下:
$ docker run -dit --name dolphinscheduler \
-e ZOOKEEPER_QUORUM="l92.168.x.x:2181"
-e POSTGRESQL_HOST="192.168.x.x" -e POSTGRESQL_PORT="5432" \
-e POSTGRESQL_USERNAME="test" -e POSTGRESQL_PASSWORD="test" \
dolphinscheduler master-server
  • 启动一个 worker server, 如下:
$ docker run -dit --name dolphinscheduler \
-e ZOOKEEPER_QUORUM="l92.168.x.x:2181"
-e POSTGRESQL_HOST="192.168.x.x" -e POSTGRESQL_PORT="5432" \
-e POSTGRESQL_USERNAME="test" -e POSTGRESQL_PASSWORD="test" \
dolphinscheduler worker-server
  • 启动一个 api server, 如下:
$ docker run -dit --name dolphinscheduler \
-e POSTGRESQL_HOST="192.168.x.x" -e POSTGRESQL_PORT="5432" \
-e POSTGRESQL_USERNAME="test" -e POSTGRESQL_PASSWORD="test" \
-p 12345:12345 \
dolphinscheduler api-server
  • 启动一个 alert server, 如下:
$ docker run -dit --name dolphinscheduler \
-e POSTGRESQL_HOST="192.168.x.x" -e POSTGRESQL_PORT="5432" \
-e POSTGRESQL_USERNAME="test" -e POSTGRESQL_PASSWORD="test" \
dolphinscheduler alert-server
  • 启动一个 frontend, 如下:
$ docker run -dit --name dolphinscheduler \
-e FRONTEND_API_SERVER_HOST="192.168.x.x" -e FRONTEND_API_SERVER_PORT="12345" \
-p 8888:8888 \
dolphinscheduler frontend

注意: 当你运行dolphinscheduler中的部分服务时,你必须指定这些环境变量 POSTGRESQL_HOST POSTGRESQL_PORT ZOOKEEPER_QUORUM

如何构建一个docker镜像

你能够在类Unix系统和Windows系统中构建一个docker镜像。

类Unix系统, 如下:

$ cd path/incubator-dolphinscheduler
$ sh ./dockerfile/hooks/build

Windows系统, 如下:

c:\incubator-dolphinscheduler>.\dockerfile\hooks\build.bat

如果你不理解这些脚本 ./dockerfile/hooks/build ./dockerfile/hooks/build.bat,请阅读里面的内容。

环境变量

Dolphin Scheduler映像使用了几个容易遗漏的环境变量。虽然这些变量不是必须的,但是可以帮助你更容易配置镜像并根据你的需求定义相应的服务配置。

POSTGRESQL_HOST

配置PostgreSQLHOST, 默认值 127.0.0.1

注意: 当运行dolphinschedulermaster-serverworker-serverapi-serveralert-server这些服务时,必须指定这个环境变量,以便于你更好的搭建分布式服务。

POSTGRESQL_PORT

配置PostgreSQLPORT, 默认值 5432

注意: 当运行dolphinschedulermaster-serverworker-serverapi-serveralert-server这些服务时,必须指定这个环境变量,以便于你更好的搭建分布式服务。

POSTGRESQL_USERNAME

配置PostgreSQLUSERNAME, 默认值 root

POSTGRESQL_PASSWORD

配置PostgreSQLPASSWORD, 默认值 root

DOLPHINSCHEDULER_ENV_PATH

任务执行时的环境变量配置文件, 默认值 /opt/dolphinscheduler/conf/env/dolphinscheduler_env.sh

TASK_QUEUE

配置master-serverworker-serverrZookeeper任务队列名, 默认值 zookeeper

ZOOKEEPER_QUORUM

配置master-serverworker-serverrZookeeper地址, 默认值 127.0.0.1:2181

注意: 当运行dolphinschedulermaster-serverworker-server这些服务时,必须指定这个环境变量,以便于你更好的搭建分布式服务。

MASTER_EXEC_THREADS

配置master-server中的执行线程数量,默认值 100

MASTER_EXEC_TASK_NUM

配置master-server中的执行任务数量,默认值 20

MASTER_HEARTBEAT_INTERVAL

配置master-server中的心跳交互时间,默认值 10

MASTER_TASK_COMMIT_RETRYTIMES

配置master-server中的任务提交重试次数,默认值 5

MASTER_TASK_COMMIT_INTERVAL

配置master-server中的任务提交交互时间,默认值 1000

MASTER_MAX_CPULOAD_AVG

配置master-server中的CPU中的load average值,默认值 100

MASTER_RESERVED_MEMORY

配置master-server的保留内存,默认值 0.1

WORKER_EXEC_THREADS

配置worker-server中的执行线程数量,默认值 100

WORKER_HEARTBEAT_INTERVAL

配置worker-server中的心跳交互时间,默认值 10

WORKER_FETCH_TASK_NUM

配置worker-server中的获取任务的数量,默认值 3

WORKER_MAX_CPULOAD_AVG

配置worker-server中的CPU中的最大load average值,默认值 100

WORKER_RESERVED_MEMORY

配置worker-server的保留内存,默认值 0.1

XLS_FILE_PATH

配置alert-serverXLS文件的存储路径,默认值 /tmp/xls

MAIL_SERVER_HOST

配置alert-server的邮件服务地址,默认值

MAIL_SERVER_PORT

配置alert-server的邮件服务端口,默认值

MAIL_SENDER

配置alert-server的邮件发送人,默认值

MAIL_USER=

配置alert-server的邮件服务用户名,默认值

MAIL_PASSWD

配置alert-server的邮件服务用户密码,默认值

MAIL_SMTP_STARTTLS_ENABLE

配置alert-server的邮件服务是否启用TLS,默认值 true

MAIL_SMTP_SSL_ENABLE

配置alert-server的邮件服务是否启用SSL,默认值 false

MAIL_SMTP_SSL_TRUST

配置alert-server的邮件服务SSL的信任地址,默认值

ENTERPRISE_WECHAT_ENABLE

配置alert-server的邮件服务是否启用企业微信,默认值 false

ENTERPRISE_WECHAT_CORP_ID

配置alert-server的邮件服务企业微信ID,默认值

ENTERPRISE_WECHAT_SECRET

配置alert-server的邮件服务企业微信SECRET,默认值

ENTERPRISE_WECHAT_AGENT_ID

配置alert-server的邮件服务企业微信AGENT_ID,默认值

ENTERPRISE_WECHAT_USERS

配置alert-server的邮件服务企业微信USERS,默认值

FRONTEND_API_SERVER_HOST

配置frontend的连接api-server的地址,默认值 127.0.0.1

Note: 当单独运行api-server时,你应该指定api-server这个值。

FRONTEND_API_SERVER_PORT

配置frontend的连接api-server的端口,默认值 12345

Note: 当单独运行api-server时,你应该指定api-server这个值。

初始化脚本

如果你想在编译的时候或者运行的时候附加一些其它的操作及新增一些环境变量,你可以在/root/start-init-conf.sh文件中进行修改,同时如果涉及到配置文件的修改,请在/opt/dolphinscheduler/conf/*.tpl中修改相应的配置文件

例如,在/root/start-init-conf.sh添加一个环境变量API_SERVER_PORT

export API_SERVER_PORT=5555

当添加以上环境变量后,你应该在相应的模板文件/opt/dolphinscheduler/conf/application-api.properties.tpl中添加这个环境变量配置:

server.port=${API_SERVER_PORT}

/root/start-init-conf.sh将根据模板文件动态的生成配置文件:

echo "generate app config"
ls ${DOLPHINSCHEDULER_HOME}/conf/ | grep ".tpl" | while read line; do
eval "cat << EOF
$(cat ${DOLPHINSCHEDULER_HOME}/conf/${line})
EOF
" > ${DOLPHINSCHEDULER_HOME}/conf/${line%.*}
done

echo "generate nginx config"
sed -i "s/FRONTEND_API_SERVER_HOST/${FRONTEND_API_SERVER_HOST}/g" /etc/nginx/conf.d/dolphinscheduler.conf
sed -i "s/FRONTEND_API_SERVER_PORT/${FRONTEND_API_SERVER_PORT}/g" /etc/nginx/conf.d/dolphinscheduler.conf