DolphinScheduler 之Docker 部署

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
实时计算 Flink 版,5000CU*H 3个月
简介: Docker 容器通过环境变量进行配置,附录-环境变量 列出了 DolphinScheduler 的可配置环境变量及其默认值

快速试用 Docker 部署


先决条件


  • Docker 1.13.1+
  • Docker Compose 1.11.0+


如何使用 Docker 镜像


有 3 种方式可以快速试用 DolphinScheduler


一、以 docker-compose 的方式启动 DolphinScheduler (推荐)


这种方式需要先安装 docker-compose, docker-compose 的安装网上已经有非常多的资料,请自行安装即可


对于 Windows 7-10,你可以安装 Docker Toolbox。对于 Windows 10 64-bit,你可以安装 Docker Desktop,并且注意系统要求


0、请配置内存不少于 4GB


对于 Mac 用户,点击 Docker Desktop -> Preferences -> Resources -> Memory


对于 Windows Docker Toolbox 用户,有两项需要配置:


  • 内存:打开 Oracle VirtualBox Manager,如果你双击 Docker Quickstart Terminal 并成功运行 Docker Toolbox,你将会看到一个名为 default 的虚拟机. 点击 设置 -> 系统 -> 主板 -> 内存大小


  • 端口转发:点击 设置 -> 网络 -> 高级 -> 端口转发 -> 添加. 名称,主机端口 和 子系统端口 都填写 12345,不填 主机IP 和 子系统IP


对于 Windows Docker Desktop 用户


  • Hyper-V 模式:点击 Docker Desktop -> Settings -> Resources -> Memory
  • WSL 2 模式:参考 WSL 2 utility VM


1、下载源码包


请下载源码包 apache-dolphinscheduler-1.3.9-src.tar.gz,下载地址: 下载


2、拉取镜像并启动服务


对于 Mac 和 Linux 用户,打开 Terminal 对于 Windows Docker Toolbox 用户,打开 Docker Quickstart Terminal 对于 Windows Docker Desktop 用户,打开 Windows PowerShell


$ tar -zxvf apache-dolphinscheduler-1.3.9-src.tar.gz
$ cd apache-dolphinscheduler-1.3.9-src/docker/docker-swarm
$ docker pull dolphinscheduler.docker.scarf.sh/apache/dolphinscheduler:1.3.9
$ docker tag apache/dolphinscheduler:1.3.9 apache/dolphinscheduler:latest
$ docker-compose up -d


PowerShell 应该使用 cd apache-dolphinscheduler-1.3.9-src\docker\docker-swarm


PostgreSQL (用户 root, 密码 root, 数据库 dolphinscheduler) 和 ZooKeeper 服务将会默认启动


3、登录系统


访问前端页面:http://localhost:12345/dolphinscheduler,如果有需要请修改成对应的 IP 地址


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


[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-kTqmLfVE-1646312172369)(https://dolphinscheduler.apache.org/img/login.png)]


请参考用户手册章节的快速上手 查看如何使用DolphinScheduler


二、通过指定已存在的 PostgreSQL 和 ZooKeeper 服务


这种方式需要先安装 docker, docker 的安装网上已经有非常多的资料,请自行安装即可


1、基础软件安装 (请自行安装)


  • PostgreSQL (8.2.15+)
  • ZooKeeper (3.4.6+)
  • Docker (1.13.1+)


2、请登录 PostgreSQL 数据库,创建名为 dolphinscheduler 数据库

3、初始化数据库,导入 sql/dolphinscheduler_postgre.sql 进行创建表及基础数据导入

4、下载 DolphinScheduler 镜像


我们已将面向用户的 DolphinScheduler 镜像上传至 docker 仓库,用户无需在本地构建镜像,直接执行以下命令从 docker 仓库 pull 镜像:


docker pull dolphinscheduler.docker.scarf.sh/apache/dolphinscheduler:1.3.9


5、运行一个 DolphinScheduler 实例


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


注:数据库用户 test 和密码 test 需要替换为实际的 PostgreSQL 用户和密码,192.168.x.x 需要替换为 PostgreSQL 和 ZooKeeper 的主机 IP


6、登录系统


同上


三、运行 DolphinScheduler 中的独立服务


在容器启动时,会自动启动以下服务:


 

    MasterServer         ----- master服务
    WorkerServer         ----- worker服务
    LoggerServer         ----- logger服务
    ApiApplicationServer ----- api服务
    AlertServer          ----- alert服务


如果你只是想运行 dolphinscheduler 中的部分服务


你可以够通执行以下命令来运行dolphinscheduler中的部分服务


  • 启动一个 master server, 如下:


$ docker run -d --name dolphinscheduler-master \
-e DATABASE_HOST="192.168.x.x" -e DATABASE_PORT="5432" -e DATABASE_DATABASE="dolphinscheduler" \
-e DATABASE_USERNAME="test" -e DATABASE_PASSWORD="test" \
-e ZOOKEEPER_QUORUM="192.168.x.x:2181" \
apache/dolphinscheduler:1.3.9 master-server


  • 启动一个 worker server (包括 logger server), 如下:


$ docker run -d --name dolphinscheduler-worker \
-e DATABASE_HOST="192.168.x.x" -e DATABASE_PORT="5432" -e DATABASE_DATABASE="dolphinscheduler" \
-e DATABASE_USERNAME="test" -e DATABASE_PASSWORD="test" \
-e ZOOKEEPER_QUORUM="192.168.x.x:2181" \
apache/dolphinscheduler:1.3.9 worker-server


  • 启动一个 api server, 如下:


$ docker run -d --name dolphinscheduler-api \
-e DATABASE_HOST="192.168.x.x" -e DATABASE_PORT="5432" -e DATABASE_DATABASE="dolphinscheduler" \
-e DATABASE_USERNAME="test" -e DATABASE_PASSWORD="test" \
-e ZOOKEEPER_QUORUM="192.168.x.x:2181" \
-p 12345:12345 \
apache/dolphinscheduler:1.3.9 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:1.3.9 alert-server


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


环境变量


Docker 容器通过环境变量进行配置,附录-环境变量 列出了 DolphinScheduler 的可配置环境变量及其默认值


特别地,在 Docker Compose 和 Docker Swarm 中,可以通过环境变量配置文件 config.env.sh 进行配置


支持矩阵


Type 支持 备注
Shell
Python2
Python3 间接支持 详见 FAQ
Hadoop2 间接支持 详见 FAQ
Hadoop3 尚未确定 尚未测试
Spark-Local(client) 间接支持 详见 FAQ
Spark-YARN(cluster) 间接支持 详见 FAQ
Spark-Standalone(cluster) 尚不
Spark-Kubernetes(cluster) 尚不
Flink-Local(local>=1.11) 尚不 Generic CLI 模式尚未支持
Flink-YARN(yarn-cluster) 间接支持 详见 FAQ
Flink-YARN(yarn-session/yarn-per-job/yarn-application>=1.11) 尚不 Generic CLI 模式尚未支持
Flink-Standalone(default) 尚不
Flink-Standalone(remote>=1.11) 尚不 Generic CLI 模式尚未支持
Flink-Kubernetes(default) 尚不
Flink-Kubernetes(remote>=1.11) 尚不 Generic CLI 模式尚未支持
Flink-NativeKubernetes(kubernetes-session/application>=1.11) 尚不 Generic CLI 模式尚未支持
MapReduce 间接支持 详见 FAQ
Kerberos 间接支持 详见 FAQ
HTTP
DataX 间接支持 详见 FAQ
Sqoop 间接支持 详见 FAQ
SQL-MySQL 间接支持 详见 FAQ
SQL-PostgreSQL
SQL-Hive 间接支持 详见 FAQ
SQL-Spark 间接支持 详见 FAQ
SQL-ClickHouse 间接支持 详见 FAQ
SQL-Oracle 间接支持 详见 FAQ
SQL-SQLServer 间接支持 详见 FAQ
SQL-DB2 间接支持 详见 FAQ


FAQ


如何通过 docker-compose 管理 DolphinScheduler?


启动、重启、停止或列出所有容器:


docker-compose start
docker-compose restart
docker-compose stop
docker-compose ps


停止所有容器并移除所有容器、网络:


docker-compose down


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


docker-compose down -v


如何查看一个容器的日志?


列出所有运行的容器:


docker ps
docker ps --format "{{.Names}}" # 只打印名字


查看名为 docker-swarm_dolphinscheduler-api_1 的容器的日志:


docker logs docker-swarm_dolphinscheduler-api_1
docker logs -f docker-swarm_dolphinscheduler-api_1 # 跟随日志输出
docker logs --tail 10 docker-swarm_dolphinscheduler-api_1 # 显示倒数10行日志


如何通过 docker-compose 扩缩容 master 和 worker?


扩缩容 master 至 2 个实例:


docker-compose up -d --scale dolphinscheduler-master=2 dolphinscheduler-master


扩缩容 worker 至 3 个实例:


docker-compose up -d --scale dolphinscheduler-worker=3 dolphinscheduler-worker


如何在 Docker Swarm 上部署 DolphinScheduler?


假设 Docker Swarm 集群已经部署(如果还没有创建 Docker Swarm 集群,请参考 create-swarm)


启动名为 dolphinscheduler 的 stack:


docker stack deploy -c docker-stack.yml dolphinscheduler


列出名为 dolphinscheduler 的 stack 的所有服务:


docker stack services dolphinscheduler


停止并移除名为 dolphinscheduler 的 stack:


docker stack rm dolphinscheduler


移除名为 dolphinscheduler 的 stack 的所有存储卷:


docker volume rm -f $(docker volume ls --format "{{.Name}}" | grep -e "^dolphinscheduler")


如何在 Docker Swarm 上扩缩容 master 和 worker?


扩缩容名为 dolphinscheduler 的 stack 的 master 至 2 个实例:


docker service scale dolphinscheduler_dolphinscheduler-master=2


扩缩容名为 dolphinscheduler 的 stack 的 worker 至 3 个实例:


docker service scale dolphinscheduler_dolphinscheduler-worker=3


如何构建一个 Docker 镜像?


从源码构建 (需要 Maven 3.3+ & JDK 1.8+)


类 Unix 系统,在 Terminal 中执行:


$ bash ./docker/build/hooks/build


Windows 系统,在 cmd 或 PowerShell 中执行:


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


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


从二进制包构建 (不需要 Maven 3.3+ & JDK 1.8+)


请下载二进制包 apache-dolphinscheduler-1.3.9-bin.tar.gz,下载地址: 下载. 然后将 apache-dolphinscheduler-1.3.9-bin.tar.gz 放到 apache-dolphinscheduler-1.3.9-src/docker/build 目录里,在 Terminal 或 PowerShell 中执行:


$ cd apache-dolphinscheduler-1.3.9-src/docker/build
$ docker build --build-arg VERSION=1.3.9 -t apache/dolphinscheduler:1.3.9 .


PowerShell 应该使用 cd apache-dolphinscheduler-1.3.9-src/docker/build


构建多平台架构镜像


目前支持构建 linux/amd64 和 linux/arm64 平台架构的镜像,要求:


1.支持 docker buildx

2.具有https://hub.docker.com/r/apache/dolphinschedulerpush 权限(务必谨慎: 构建命令默认会自动将多平台架构镜像推送到 apache/dolphinscheduler 的 docker hub)


执行:


$ docker login # 登录, 用于推送 apache/dolphinscheduler
$ bash ./docker/build/hooks/build x


如何为 Docker 添加一个环境变量?


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


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


export SECURITY_AUTHENTICATION_TYPE=PASSWORD


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


security.authentication.type=${SECURITY_AUTHENTICATION_TYPE}


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


echo "generate dolphinscheduler 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


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


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


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


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

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


FROM dolphinscheduler.docker.scarf.sh/apache/dolphinscheduler:1.3.9
COPY mysql-connector-java-5.1.49.jar /opt/dolphinscheduler/lib


构建一个包含 MySQL 驱动包的新镜像:


docker build -t apache/dolphinscheduler:mysql-driver .


1.修改 docker-compose.yml 文件中的所有 image 字段为 apache/dolphinscheduler:mysql-driver


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


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

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

3.修改 config.env.sh 文件中的 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_HOST 为 dolphinscheduler-mysql 即可


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


如何在数据源中心支持 MySQL 数据源?


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


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


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

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


FROM dolphinscheduler.docker.scarf.sh/apache/dolphinscheduler:1.3.9
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 数据源


如何在数据源中心支持 Oracle 数据源?


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


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


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

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


FROM dolphinscheduler.docker.scarf.sh/apache/dolphinscheduler:1.3.9
COPY ojdbc8-19.9.0.0.jar /opt/dolphinscheduler/lib


构建一个包含 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 数据源


如何支持 Python 2 pip 以及自定义 requirements.txt?


创建一个新的 Dockerfile,用于安装 pip:


FROM dolphinscheduler.docker.scarf.sh/apache/dolphinscheduler:1.3.9
COPY requirements.txt /tmp
RUN apt-get update && \
    apt-get install -y --no-install-recommends python-pip && \
    pip install --no-cache-dir -r /tmp/requirements.txt && \
    rm -rf /var/lib/apt/lists/*


这个命令会安装默认的 pip 18.1. 如果你想升级 pip, 只需添加一行


pip install --no-cache-dir -U pip && \


1.构建一个包含 pip 的新镜像:


docker build -t apache/dolphinscheduler:pip .


1.将 docker-compose.yml 文件中的所有 image 字段修改为 apache/dolphinscheduler:pip


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


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

2.在一个新 Python 任务下验证 pip


如何支持 Python 3?


创建一个新的 Dockerfile,用于安装 Python 3:


FROM dolphinscheduler.docker.scarf.sh/apache/dolphinscheduler:1.3.9
RUN apt-get update && \
    apt-get install -y --no-install-recommends python3 && \
    rm -rf /var/lib/apt/lists/*


这个命令会安装默认的 Python 3.7.3. 如果你也想安装 pip3, 将 python3 替换为 python3-pip 即可


apt-get install -y --no-install-recommends python3-pip && \


1.构建一个包含 Python 3 的新镜像:


docker build -t apache/dolphinscheduler:python3 .


1.将 docker-compose.yml 文件中的所有 image 字段修改为 apache/dolphinscheduler:python3


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


1.修改 config.env.sh 文件中的 PYTHON_HOME 为 /usr/bin/python3

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

3.在一个新 Python 任务下验证 Python 3


如何支持 Hadoop, Spark, Flink, Hive 或 DataX?


以 Spark 2.4.7 为例:


1.下载 Spark 2.4.7 发布的二进制包 spark-2.4.7-bin-hadoop2.7.tgz

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

2.复制 Spark 2.4.7 二进制包到 Docker 容器中


docker cp spark-2.4.7-bin-hadoop2.7.tgz docker-swarm_dolphinscheduler-worker_1:/opt/soft


因为存储卷 dolphinscheduler-shared-local 被挂载到 /opt/soft, 因此 /opt/soft 中的所有文件都不会丢失


1.登录到容器并确保 SPARK_HOME2 存在


docker exec -it docker-swarm_dolphinscheduler-worker_1 bash
cd /opt/soft
tar zxf spark-2.4.7-bin-hadoop2.7.tgz
rm -f spark-2.4.7-bin-hadoop2.7.tgz
ln -s spark-2.4.7-bin-hadoop2.7 spark2 # 或者 mv
$SPARK_HOME2/bin/spark-submit --version


如果一切执行正常,最后一条命令将会打印 Spark 版本信息


1.在一个 Shell 任务下验证 Spark


$SPARK_HOME2/bin/spark-submit --class org.apache.spark.examples.SparkPi $SPARK_HOME2/examples/jars/spark-examples_2.11-2.4.7.jar


检查任务日志是否包含输出 Pi is roughly 3.146015


1.在一个 Spark 任务下验证 Spark


文件 spark-examples_2.11-2.4.7.jar 需要先被上传到资源中心,然后创建一个 Spark 任务并设置:


  • Spark版本: SPARK2
  • 主函数的Class: org.apache.spark.examples.SparkPi
  • 主程序包: spark-examples_2.11-2.4.7.jar
  • 部署方式: local


同样地, 检查任务日志是否包含输出 Pi is roughly 3.146015


1.验证 Spark on YARN


Spark on YARN (部署方式为 cluster 或 client) 需要 Hadoop 支持. 类似于 Spark 支持, 支持 Hadoop 的操作几乎和前面的步骤相同


确保 $HADOOP_HOME 和 $HADOOP_CONF_DIR 存在


如何支持 Spark 3?


事实上,使用 spark-submit 提交应用的方式是相同的, 无论是 Spark 1, 2 或 3. 换句话说,SPARK_HOME2 的语义是第二个 SPARK_HOME, 而非 SPARK2 的 HOME, 因此只需设置 SPARK_HOME2=/path/to/spark3 即可


以 Spark 3.1.1 为例:


1.下载 Spark 3.1.1 发布的二进制包 spark-3.1.1-bin-hadoop2.7.tgz

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

3.复制 Spark 3.1.1 二进制包到 Docker 容器中


docker cp spark-3.1.1-bin-hadoop2.7.tgz docker-swarm_dolphinscheduler-worker_1:/opt/soft


1.登录到容器并确保 SPARK_HOME2 存在


docker exec -it docker-swarm_dolphinscheduler-worker_1 bash
cd /opt/soft
tar zxf spark-3.1.1-bin-hadoop2.7.tgz
rm -f spark-3.1.1-bin-hadoop2.7.tgz
ln -s spark-3.1.1-bin-hadoop2.7 spark2 # 或者 mv
$SPARK_HOME2/bin/spark-submit --version


如果一切执行正常,最后一条命令将会打印 Spark 版本信息


1.在一个 Shell 任务下验证 Spark


$SPARK_HOME2/bin/spark-submit --class org.apache.spark.examples.SparkPi $SPARK_HOME2/examples/jars/spark-examples_2.12-3.1.1.jar


检查任务日志是否包含输出 Pi is roughly 3.146015


如何在 Master、Worker 和 Api 服务之间支持共享存储?


注意: 如果是在单机上通过 docker-compose 部署,则步骤 1 和 2 可以直接跳过,并且执行命令如 docker cp hadoop-

3.2.2.tar.gz docker-swarm_dolphinscheduler-worker_1:/opt/soft 将 Hadoop 放到容器中的共享目录 /opt/soft 下


例如, Master、Worker 和 Api 服务可能同时使用 Hadoop


1.修改 docker-compose.yml 文件中的 dolphinscheduler-shared-local 存储卷,以支持 nfs


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


volumes:
  dolphinscheduler-shared-local:
    driver_opts:
      type: "nfs"
      o: "addr=10.40.0.199,nolock,soft,rw"
      device: ":/path/to/shared/dir"


1.将 Hadoop 放到 nfs

2.确保 $HADOOP_HOME 和 $HADOOP_CONF_DIR 正确


如何支持本地文件存储而非 HDFS 和 S3?


注意: 如果是在单机上通过 docker-compose 部署,则步骤 2 可以直接跳过


1.修改 config.env.sh 文件中下面的环境变量:


RESOURCE_STORAGE_TYPE=HDFS
FS_DEFAULT_FS=file:///


1.修改 docker-compose.yml 文件中的 dolphinscheduler-resource-local 存储卷,以支持 nfs


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


volumes:
  dolphinscheduler-resource-local:
    driver_opts:
      type: "nfs"
      o: "addr=10.40.0.199,nolock,soft,rw"
      device: ":/path/to/resource/dir"


如何支持 S3 资源存储,例如 MinIO?


以 MinIO 为例: 修改 config.env.sh 文件中下面的环境变量


RESOURCE_STORAGE_TYPE=S3
RESOURCE_UPLOAD_PATH=/dolphinscheduler
FS_DEFAULT_FS=s3a://BUCKET_NAME
FS_S3A_ENDPOINT=http://MINIO_IP:9000
FS_S3A_ACCESS_KEY=MINIO_ACCESS_KEY
FS_S3A_SECRET_KEY=MINIO_SECRET_KEY


BUCKET_NAME, MINIO_IP, MINIO_ACCESS_KEY 和 MINIO_SECRET_KEY 需要被修改为实际值


注意: MINIO_IP 只能使用 IP 而非域名, 因为 DolphinScheduler 尚不支持 S3 路径风格访问 (S3 path style access)


如何配置 SkyWalking?


修改 config.env.sh 文件中的 SKYWALKING 环境变量


SKYWALKING_ENABLE=true
SW_AGENT_COLLECTOR_BACKEND_SERVICES=127.0.0.1:11800
SW_GRPC_LOG_SERVER_HOST=127.0.0.1
SW_GRPC_LOG_SERVER_PORT=11800


附录-环境变量


数据库


DATABASE_TYPE


配置database的TYPE, 默认值 postgresql。


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


DATABASE_DRIVER


配置database的DRIVER, 默认值 org.postgresql.Driver。


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


DATABASE_HOST


配置database的HOST, 默认值 127.0.0.1。


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


DATABASE_PORT


配置database的PORT, 默认值 5432。


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


DATABASE_USERNAME


配置database的USERNAME, 默认值 root。


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


DATABASE_PASSWORD


配置database的PASSWORD, 默认值 root。


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


DATABASE_DATABASE


配置database的DATABASE, 默认值 dolphinscheduler。


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


DATABASE_PARAMS


配置database的PARAMS, 默认值 characterEncoding=utf8。


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


ZooKeeper


ZOOKEEPER_QUORUM


配置dolphinscheduler的Zookeeper地址, 默认值 127.0.0.1:2181。


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


ZOOKEEPER_ROOT


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


通用


DOLPHINSCHEDULER_OPTS


配置dolphinscheduler的jvm options,适用于master-server、worker-server、api-server、alert-server、logger-server,默认值 ""、


DATA_BASEDIR_PATH


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


RESOURCE_STORAGE_TYPE


配置dolphinscheduler的资源存储类型,可选项为 HDFS、S3、NONE,默认值 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时,需要配置S3的s3 access key,默认值 xxxxxxx。


FS_S3A_SECRET_KEY


当RESOURCE_STORAGE_TYPE=S3时,需要配置S3的s3 secret key,默认值 xxxxxxx。


HADOOP_SECURITY_AUTHENTICATION_STARTUP_STATE


配置dolphinscheduler是否启用kerberos,默认值 false。


JAVA_SECURITY_KRB5_CONF_PATH


配置dolphinscheduler的java.security.krb5.conf路径,默认值 /opt/krb5.conf。


LOGIN_USER_KEYTAB_USERNAME


配置dolphinscheduler登录用户的keytab用户名,默认值 hdfs@HADOOP.COM。


LOGIN_USER_KEYTAB_PATH


配置dolphinscheduler登录用户的keytab路径,默认值 /opt/hdfs.keytab。


KERBEROS_EXPIRE_TIME


配置dolphinscheduler的kerberos过期时间,单位为小时,默认值 2。


HDFS_ROOT_USER


当RESOURCE_STORAGE_TYPE=HDFS时,配置dolphinscheduler的hdfs的root用户名,默认值 hdfs。


RESOURCE_MANAGER_HTTPADDRESS_PORT


配置dolphinscheduler的resource manager httpaddress 端口,默认值 8088。


YARN_RESOURCEMANAGER_HA_RM_IDS


配置dolphinscheduler的yarn resourcemanager ha rm ids,默认值 空。


YARN_APPLICATION_STATUS_ADDRESS


配置dolphinscheduler的yarn application status地址,默认值 http://ds1:%s/ws/v1/cluster/apps/%s。


SKYWALKING_ENABLE


配置skywalking是否启用. 默认值 false。


SW_AGENT_COLLECTOR_BACKEND_SERVICES


配置skywalking的collector后端地址. 默认值 127.0.0.1:11800。


SW_GRPC_LOG_SERVER_HOST


配置skywalking的grpc服务主机或IP. 默认值 127.0.0.1。


SW_GRPC_LOG_SERVER_PORT


配置skywalking的grpc服务端口. 默认值 11800。


HADOOP_HOME


配置dolphinscheduler的HADOOP_HOME,默认值 /opt/soft/hadoop。


HADOOP_CONF_DIR


配置dolphinscheduler的HADOOP_CONF_DIR,默认值 /opt/soft/hadoop/etc/hadoop。


SPARK_HOME1


配置dolphinscheduler的SPARK_HOME1,默认值 /opt/soft/spark1。


SPARK_HOME2


配置dolphinscheduler的SPARK_HOME2,默认值 /opt/soft/spark2。


PYTHON_HOME


配置dolphinscheduler的PYTHON_HOME,默认值 /usr/bin/python。


JAVA_HOME


配置dolphinscheduler的JAVA_HOME,默认值 /usr/local/openjdk-8。


HIVE_HOME


配置dolphinscheduler的HIVE_HOME,默认值 /opt/soft/hive。


FLINK_HOME


配置dolphinscheduler的FLINK_HOME,默认值 /opt/soft/flink。


DATAX_HOME


配置dolphinscheduler的DATAX_HOME,默认值 /opt/soft/datax。


Master Server


MASTER_SERVER_OPTS


配置master-server的jvm options,默认值 -Xms1g -Xmx1g -Xmn512m。


MASTER_EXEC_THREADS


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


MASTER_EXEC_TASK_NUM


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


MASTER_DISPATCH_TASK_NUM


配置master-server中的派发任务数量,默认值 3。


MASTER_HOST_SELECTOR


配置master-server中派发任务时worker host的选择器,可选值为Random, RoundRobin和LowerWeight,默认值 LowerWeight。


MASTER_HEARTBEAT_INTERVAL


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


MASTER_TASK_COMMIT_RETRYTIMES


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


MASTER_TASK_COMMIT_INTERVAL


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


MASTER_MAX_CPULOAD_AVG


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


MASTER_RESERVED_MEMORY


配置master-server的保留内存,单位为G,默认值 0.3。


Worker Server


WORKER_SERVER_OPTS


配置worker-server的jvm options,默认值 -Xms1g -Xmx1g -Xmn512m。


WORKER_EXEC_THREADS


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


WORKER_HEARTBEAT_INTERVAL


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


WORKER_MAX_CPULOAD_AVG


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


WORKER_RESERVED_MEMORY


配置worker-server的保留内存,单位为G,默认值 0.3。


WORKER_GROUPS


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


Alert Server


ALERT_SERVER_OPTS


配置alert-server的jvm options,默认值 -Xms512m -Xmx512m -Xmn256m。


XLS_FILE_PATH


配置alert-server的XLS文件的存储路径,默认值 /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,默认值 空。


Api Server


API_SERVER_OPTS


配置api-server的jvm options,默认值 -Xms512m -Xmx512m -Xmn256m。


Logger Server


LOGGER_SERVER_OPTS


配置logger-server的jvm options,默认值 -Xms512m -Xmx512m -Xmn256m。

目录
相关文章
|
8天前
|
Ubuntu Linux 开发工具
docker 是什么?docker初认识之如何部署docker-优雅草后续将会把产品发布部署至docker容器中-因此会出相关系列文章-优雅草央千澈
Docker 是一个开源的容器化平台,允许开发者将应用程序及其依赖项打包成标准化单元(容器),确保在任何支持 Docker 的操作系统上一致运行。容器共享主机内核,提供轻量级、高效的执行环境。本文介绍如何在 Ubuntu 上安装 Docker,并通过简单步骤验证安装成功。后续文章将探讨使用 Docker 部署开源项目。优雅草央千澈 源、安装 Docker 包、验证安装 - 适用场景:开发、测试、生产环境 通过以上步骤,您可以在 Ubuntu 系统上成功安装并运行 Docker,为后续的应用部署打下基础。
docker 是什么?docker初认识之如何部署docker-优雅草后续将会把产品发布部署至docker容器中-因此会出相关系列文章-优雅草央千澈
|
2月前
|
人工智能 API 数据安全/隐私保护
使用 Docker 一键免费部署 63.8k 的私人 ChatGPT 网页应用
NextChat 是一个可以在 GitHub 上一键免费部署的私人 ChatGPT 网页应用,支持 GPT3、GPT4 和 Gemini Pro 模型。该项目在 GitHub 上获得了 63.8k 的 star 数。部署简单,只需拉取 Docker 镜像并运行容器,设置 API Key 后即可使用。此外,NextChat 还提供了预设角色的面具功能,方便用户快速创建对话。
226 22
使用 Docker 一键免费部署 63.8k 的私人 ChatGPT 网页应用
|
2月前
|
Java 应用服务中间件 Linux
【Docker容器化技术】docker安装与部署、常用命令、容器数据卷、应用部署实战、Dockerfile、服务编排docker-compose、私有仓库
本文主要讲解了Docker的安装与部署、常用命令、容器数据卷、应用部署实战、Dockerfile、服务编排docker-compose、私有仓库以及Docker容器虚拟化与传统虚拟机比较。
1191 12
【Docker容器化技术】docker安装与部署、常用命令、容器数据卷、应用部署实战、Dockerfile、服务编排docker-compose、私有仓库
|
1月前
|
Java 应用服务中间件 Docker
将基于 Spring 的 WAR 应用程序部署到 Docker:详尽指南
将基于 Spring 的 WAR 应用程序部署到 Docker:详尽指南
38 2
|
2月前
|
SQL 关系型数据库 数据库
国产数据实战之docker部署MyWebSQL数据库管理工具
【10月更文挑战第23天】国产数据实战之docker部署MyWebSQL数据库管理工具
169 4
国产数据实战之docker部署MyWebSQL数据库管理工具
|
2月前
|
Java Linux Docker
什么是 Docker?如何将 Spring Boot 应用程序部署到 Docker?
什么是 Docker?如何将 Spring Boot 应用程序部署到 Docker?
53 3
|
2月前
|
机器学习/深度学习 数据采集 Docker
Docker容器化实战:构建并部署一个简单的Web应用
Docker容器化实战:构建并部署一个简单的Web应用
|
2月前
|
运维 开发者 Docker
Docker Compose:简化容器化应用的部署与管理
Docker Compose:简化容器化应用的部署与管理
|
2月前
|
Docker 微服务 容器
使用Docker Compose实现微服务架构的快速部署
使用Docker Compose实现微服务架构的快速部署
84 1
|
3月前
|
Web App开发 前端开发 测试技术
【Docker项目实战】使用docker部署tabler后台模版
【10月更文挑战第10天】使用docker部署tabler后台模版
57 1
【Docker项目实战】使用docker部署tabler后台模版

热门文章

最新文章