分布式调度框架。
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.
 
 
 
 
 
 

16 KiB

DolphinScheduler是什么?

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

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

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

DolphinScheduler

EN doc CN doc

如何使用docker镜像

以 docker-compose 的方式启动dolphinscheduler(推荐)

$ docker-compose -f ./docker/docker-swarm/docker-compose.yml up -d

docker-compose.yml文件中,默认的创建Postgres的用户、密码和数据库,默认值分别为:rootrootdolphinscheduler

同时,默认的Zookeeper也会在docker-compose.yml文件中被创建。

访问前端界面:http://192.168.xx.xx:12345/dolphinscheduler

默认的用户是admin,默认的密码是dolphinscheduler123

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

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

$ docker run -d --name dolphinscheduler \
-e ZOOKEEPER_QUORUM="192.168.x.x:2181" \
-e DATABASE_HOST="192.168.x.x" -e DATABASE_PORT="5432" -e DATABASE_DATABASE="dolphinscheduler" \
-e DATABASE_USERNAME="test" -e DATABASE_PASSWORD="test" \
-p 12345:12345 \
apache/dolphinscheduler:latest all

访问前端界面:http://192.168.xx.xx:12345/dolphinscheduler

或者运行dolphinscheduler中的部分服务

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

  • 创建一个 本地卷 用于资源存储,如下:
docker volume create dolphinscheduler-resource-local
  • 启动一个 master server, 如下:
$ docker run -d --name dolphinscheduler-master \
-e ZOOKEEPER_QUORUM="192.168.x.x:2181" \
-e DATABASE_HOST="192.168.x.x" -e DATABASE_PORT="5432" -e DATABASE_DATABASE="dolphinscheduler" \
-e DATABASE_USERNAME="test" -e DATABASE_PASSWORD="test" \
apache/dolphinscheduler:latest master-server
  • 启动一个 worker server, 如下:
$ docker run -d --name dolphinscheduler-worker \
-e ZOOKEEPER_QUORUM="192.168.x.x:2181" \
-e DATABASE_HOST="192.168.x.x" -e DATABASE_PORT="5432" -e DATABASE_DATABASE="dolphinscheduler" \
-e DATABASE_USERNAME="test" -e DATABASE_PASSWORD="test" \
-e ALERT_LISTEN_HOST="dolphinscheduler-alert" \
-v dolphinscheduler-resource-local:/dolphinscheduler \
apache/dolphinscheduler:latest worker-server
  • 启动一个 api server, 如下:
$ docker run -d --name dolphinscheduler-api \
-e ZOOKEEPER_QUORUM="192.168.x.x:2181" \
-e DATABASE_HOST="192.168.x.x" -e DATABASE_PORT="5432" -e DATABASE_DATABASE="dolphinscheduler" \
-e DATABASE_USERNAME="test" -e DATABASE_PASSWORD="test" \
-v dolphinscheduler-resource-local:/dolphinscheduler \
-p 12345:12345 \
apache/dolphinscheduler:latest api-server
  • 启动一个 alert server, 如下:
$ docker run -d --name dolphinscheduler-alert \
-e DATABASE_HOST="192.168.x.x" -e DATABASE_PORT="5432" -e DATABASE_DATABASE="dolphinscheduler" \
-e DATABASE_USERNAME="test" -e DATABASE_PASSWORD="test" \
apache/dolphinscheduler:latest alert-server

注意: 当你运行dolphinscheduler中的部分服务时,你必须指定这些环境变量 DATABASE_HOST DATABASE_PORT DATABASE_DATABASE DATABASE_USERNAME DATABASE_PASSWORD ZOOKEEPER_QUORUM

如何构建一个docker镜像

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

类Unix系统, 如下:

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

Windows系统, 如下:

C:\incubator-dolphinscheduler>.\docker\build\hooks\build.bat

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

环境变量

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

DATABASE_TYPE

配置databaseTYPE, 默认值 postgresql

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

DATABASE_DRIVER

配置databaseDRIVER, 默认值 org.postgresql.Driver

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

DATABASE_HOST

配置databaseHOST, 默认值 127.0.0.1

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

DATABASE_PORT

配置databasePORT, 默认值 5432

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

DATABASE_USERNAME

配置databaseUSERNAME, 默认值 root

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

DATABASE_PASSWORD

配置databasePASSWORD, 默认值 root

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

DATABASE_DATABASE

配置databaseDATABASE, 默认值 dolphinscheduler

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

DATABASE_PARAMS

配置databasePARAMS, 默认值 characterEncoding=utf8

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

HADOOP_HOME

配置dolphinschedulerHADOOP_HOME,默认值 /opt/soft/hadoop

HADOOP_CONF_DIR

配置dolphinschedulerHADOOP_CONF_DIR,默认值 /opt/soft/hadoop/etc/hadoop

SPARK_HOME1

配置dolphinschedulerSPARK_HOME1,默认值 /opt/soft/spark1

SPARK_HOME2

配置dolphinschedulerSPARK_HOME2,默认值 /opt/soft/spark2

PYTHON_HOME

配置dolphinschedulerPYTHON_HOME,默认值 /usr/bin/python

JAVA_HOME

配置dolphinschedulerJAVA_HOME,默认值 /usr/lib/jvm/java-1。8-openjdk

HIVE_HOME

配置dolphinschedulerHIVE_HOME,默认值 /opt/soft/hive

FLINK_HOME

配置dolphinschedulerFLINK_HOME,默认值 /opt/soft/flink

DATAX_HOME

配置dolphinschedulerDATAX_HOME,默认值 /opt/soft/datax/bin/datax。py

DOLPHINSCHEDULER_DATA_BASEDIR_PATH

用户数据目录, 用户自己配置, 请确保这个目录存在并且用户读写权限, 默认值 /tmp/dolphinscheduler

DOLPHINSCHEDULER_OPTS

配置dolphinschedulerjava options,默认值 ""

RESOURCE_STORAGE_TYPE

配置dolphinscheduler的资源存储类型,可选项为 HDFSS3NONE,默认值 HDFS

RESOURCE_UPLOAD_PATH

配置HDFS/S3上的资源存储路径,默认值 /dolphinscheduler

FS_DEFAULT_FS

配置资源存储的文件系统协议,如 file:///, hdfs://mycluster:8020 or s3a://dolphinscheduler,默认值 file:///

FS_S3A_ENDPOINT

RESOURCE_STORAGE_TYPE=S3时,需要配置S3的访问路径,默认值 s3.xxx.amazonaws.com

FS_S3A_ACCESS_KEY

RESOURCE_STORAGE_TYPE=S3时,需要配置S3s3 access key,默认值 xxxxxxx

FS_S3A_SECRET_KEY

RESOURCE_STORAGE_TYPE=S3时,需要配置S3s3 secret key,默认值 xxxxxxx

ZOOKEEPER_QUORUM

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

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

ZOOKEEPER_ROOT

配置dolphinschedulerzookeeper中数据存储的根目录,默认值 /dolphinscheduler

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

MASTER_LISTEN_PORT

配置master-server的端口,默认值 5678

WORKER_EXEC_THREADS

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

WORKER_HEARTBEAT_INTERVAL

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

WORKER_MAX_CPULOAD_AVG

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

WORKER_RESERVED_MEMORY

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

WORKER_LISTEN_PORT

配置worker-server的端口,默认值 1234

WORKER_GROUPS

配置worker-server的分组,默认值 default

WORKER_WEIGHT

配置worker-server的权重,默认之100

ALERT_LISTEN_HOST

配置worker-server的告警主机,即alert-server的主机名,默认值 127.0.0.1

ALERT_PLUGIN_DIR

配置alert-server的告警插件目录,默认值 lib/plugin/alert

初始化脚本

如果你想在编译的时候或者运行的时候附加一些其它的操作及新增一些环境变量,你可以在/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

FAQ

如何通过 docker-compose 停止 dolphinscheduler?

停止所有容器:

docker-compose stop

停止所有容器并移除所有容器,网络和存储卷:

docker-compose down -v

如何在 Docker Swarm 上部署 dolphinscheduler?

假设 Docker Swarm 集群已经部署(如果还没有创建 Docker Swarm 集群,请参考 [https://docs.docker.com/engine/swarm/swarm-tutorial/create-swarm/](https://docs.docker.com/engine/swarm/swarm-tutorial/create-swarm/

启动名为 dolphinscheduler 的 stack

docker stack deploy -c docker-stack.yml dolphinscheduler

启动并移除名为 dolphinscheduler 的 stack

docker stack rm dolphinscheduler

如何用 MySQL 替代 PostgreSQL 作为 DolphinScheduler 的数据库?

由于商业许可证的原因,我们不能直接使用 MySQL 的驱动包和客户端.

如果你要使用 MySQL, 你可以基于官方镜像 apache/dolphinscheduler 进行构建.

  1. 下载 MySQL 驱动包 mysql-connector-java-5.1.49.jar (要求 >=5.1.47)

  2. 创建一个新的 Dockerfile,用于添加 MySQL 的驱动包和客户端:

FROM apache/dolphinscheduler:latest
COPY mysql-connector-java-5.1.49.jar /opt/dolphinscheduler/lib
RUN apk add --update --no-cache mysql-client
  1. 构建一个包含 MySQL 的驱动包和客户端的新镜像:
docker build -t apache/dolphinscheduler:mysql .
  1. 修改 docker-compose.yml 文件中的所有 image 字段为 apache/dolphinscheduler:mysql

如果你想在 Docker Swarm 上部署 dolphinscheduler,你需要修改 docker-stack.yml

  1. 注释 docker-compose.yml 文件中的 dolphinscheduler-postgresql

  2. docker-compose.yml 文件中添加 dolphinscheduler-mysql 服务(可选,你可以直接使用一个外部的 MySQL 数据库)

  3. 修改 docker-compose.yml 文件中的所有 DATABASE 环境变量

DATABASE_TYPE: mysql
DATABASE_DRIVER: com.mysql.jdbc.Driver
DATABASE_HOST: dolphinscheduler-mysql
DATABASE_PORT: 3306
DATABASE_USERNAME: root
DATABASE_PASSWORD: root
DATABASE_DATABASE: dolphinscheduler
DATABASE_PARAMS: useUnicode=true&characterEncoding=UTF-8

如果你已经添加了 dolphinscheduler-mysql 服务,设置 DATABASE_HOSTdolphinscheduler-mysql 即可

  1. 运行 dolphinscheduler (详见如何使用docker镜像)

How to support MySQL datasource in Datasource manage

由于商业许可证的原因,我们不能直接使用 MySQL 的驱动包.

如果你要添加 MySQL 数据源, 你可以基于官方镜像 apache/dolphinscheduler 进行构建.

  1. 下载 MySQL 驱动包 mysql-connector-java-5.1.49.jar (要求 >=5.1.47)

  2. 创建一个新的 Dockerfile,用于添加 MySQL 驱动包:

FROM apache/dolphinscheduler:latest
COPY mysql-connector-java-5.1.49.jar /opt/dolphinscheduler/lib
  1. 构建一个包含 MySQL 驱动包的新镜像:
docker build -t apache/dolphinscheduler:mysql-driver .
  1. docker-compose.yml 文件中的所有 image 字段 修改为 apache/dolphinscheduler:mysql-driver

如果你想在 Docker Swarm 上部署 dolphinscheduler,你需要修改 docker-stack.yml

  1. 运行 dolphinscheduler (详见如何使用docker镜像)

  2. 在数据源中心添加一个 MySQL 数据源

How to support Oracle datasource in Datasource manage

由于商业许可证的原因,我们不能直接使用 Oracle 的驱动包.

如果你要添加 Oracle 数据源, 你可以基于官方镜像 apache/dolphinscheduler 进行构建.

  1. 下载 Oracle 驱动包 ojdbc8.jar (such as ojdbc8-19.9.0.0.jar)

  2. 创建一个新的 Dockerfile,用于添加 Oracle 驱动包:

FROM apache/dolphinscheduler:latest
COPY ojdbc8-19.9.0.0.jar /opt/dolphinscheduler/lib
  1. 构建一个包含 Oracle 驱动包的新镜像:
docker build -t apache/dolphinscheduler:oracle-driver .
  1. docker-compose.yml 文件中的所有 image 字段 修改为 apache/dolphinscheduler:oracle-driver

如果你想在 Docker Swarm 上部署 dolphinscheduler,你需要修改 docker-stack.yml

  1. 运行 dolphinscheduler (详见如何使用docker镜像)

  2. 在数据源中心添加一个 Oracle 数据源

更多信息请查看 incubator-dolphinscheduler 文档.