文章目录

  • 快速试用 Docker 部署
    • 先决条件
    • 如何使用 Docker 镜像
      • 一、以 docker-compose 的方式启动 DolphinScheduler (推荐)
        • 0、请配置内存不少于 4GB
        • 1、下载源码包
        • 2、拉取镜像并启动服务
        • 3、登录系统
      • 二、通过指定已存在的 PostgreSQL 和 ZooKeeper 服务
        • 1、基础软件安装 (请自行安装)
        • 2、请登录 PostgreSQL 数据库,创建名为 `dolphinscheduler` 数据库
        • 3、初始化数据库,导入 `sql/dolphinscheduler_postgre.sql` 进行创建表及基础数据导入
        • 4、下载 DolphinScheduler 镜像
        • 5、运行一个 DolphinScheduler 实例
        • 6、登录系统
      • 三、运行 DolphinScheduler 中的独立服务
    • 环境变量
    • 支持矩阵
    • FAQ
      • 如何通过 docker-compose 管理 DolphinScheduler?
      • 如何查看一个容器的日志?
      • 如何通过 docker-compose 扩缩容 master 和 worker?
      • 如何在 Docker Swarm 上部署 DolphinScheduler?
      • 如何在 Docker Swarm 上扩缩容 master 和 worker?
      • 如何构建一个 Docker 镜像?
        • 从源码构建 (需要 Maven 3.3+ & JDK 1.8+)
        • 从二进制包构建 (不需要 Maven 3.3+ & JDK 1.8+)
        • 构建多平台架构镜像
      • 如何为 Docker 添加一个环境变量?
      • 如何用 MySQL 替代 PostgreSQL 作为 DolphinScheduler 的数据库?
      • 如何在数据源中心支持 MySQL 数据源?
      • 如何在数据源中心支持 Oracle 数据源?
      • 如何支持 Python 2 pip 以及自定义 requirements.txt?
      • 如何支持 Python 3?
      • 如何支持 Hadoop, Spark, Flink, Hive 或 DataX?
      • 如何支持 Spark 3?
      • 如何在 Master、Worker 和 Api 服务之间支持共享存储?
      • 如何支持本地文件存储而非 HDFS 和 S3?
      • 如何支持 S3 资源存储,例如 MinIO?
      • 如何配置 SkyWalking?
    • 附录-环境变量
      • 数据库
      • ZooKeeper
      • 通用
      • Master Server
      • Worker Server
      • Alert Server
      • Api Server
      • Logger Server

快速试用 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/amd64linux/arm64 平台架构的镜像,要求:

  1. 支持 docker buildx
  2. 具有 https://hub.docker.com/r/apache/dolphinscheduler 的 push 权限(务必谨慎: 构建命令默认会自动将多平台架构镜像推送到 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
  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. 注释 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_HOSTdolphinscheduler-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
  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 数据源

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

  1. 创建一个新的 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?

  1. 创建一个新的 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
  2. 运行 dolphinscheduler (详见如何使用docker镜像)
  3. 复制 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 (部署方式为 clusterclient) 需要 Hadoop 支持. 类似于 Spark 支持, 支持 Hadoop 的操作几乎和前面的步骤相同

确保 $HADOOP_HOME$HADOOP_CONF_DIR 存在

如何支持 Spark 3?

事实上,使用 spark-submit 提交应用的方式是相同的, 无论是 Spark 1, 2 或 3. 换句话说,SPARK_HOME2 的语义是第二个 SPARK_HOME, 而非 SPARK2HOME, 因此只需设置 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_KEYMINIO_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

配置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这些服务时,必须指定这个环境变量,以便于你更好的搭建分布式服务。

ZooKeeper

ZOOKEEPER_QUORUM

配置dolphinschedulerZookeeper地址, 默认值 127.0.0.1:2181

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

ZOOKEEPER_ROOT

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

通用

DOLPHINSCHEDULER_OPTS

配置dolphinschedulerjvm options,适用于master-serverworker-serverapi-serveralert-serverlogger-server,默认值 ""

DATA_BASEDIR_PATH

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

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

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

配置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/local/openjdk-8

HIVE_HOME

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

FLINK_HOME

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

DATAX_HOME

配置dolphinschedulerDATAX_HOME,默认值 /opt/soft/datax

Master Server

MASTER_SERVER_OPTS

配置master-serverjvm 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, RoundRobinLowerWeight,默认值 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-serverjvm 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-serverjvm options,默认值 -Xms512m -Xmx512m -Xmn256m

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,默认值

Api Server

API_SERVER_OPTS

配置api-serverjvm options,默认值 -Xms512m -Xmx512m -Xmn256m

Logger Server

LOGGER_SERVER_OPTS

配置logger-serverjvm options,默认值 -Xms512m -Xmx512m -Xmn256m

DolphinScheduler 之Docker 部署相关推荐

  1. docker学习:docker部署dolphinscheduler1.3.9伪分布式集群

    docker&dolphinscheduler 一.环境准备 二.构建镜像 (一).dolphinscheduler镜像 (二).mysql镜像(直接拉取) (三).zookeeper镜像(直 ...

  2. Docker 部署 SpringBoot 项目整合 Redis 镜像做访问计数Demo

    Docker 部署SpringBoot项目整合 Redis 镜像做访问计数Demo 最终效果如下 大概就几个步骤 1.安装 Docker CE 2.运行 Redis 镜像 3.Java 环境准备 4. ...

  3. Docker 部署SpringBoot项目不香吗?

    点击上方"方志朋",选择"设为星标" 回复"666"获取新整理的面试文章 作者:流星007 链接:toutiao.com/i68433912 ...

  4. docker部署springboot_Docker+SpringBoot快速构建和部署应用

    前言 Docker技术发展为当前流行的微服务提供了更加便利的环境,使用SpringBoot+Docker部署和发布应用,其实也是一件比较简单的事情.当前,前提是得有Docker的基础. 构建一个Spr ...

  5. docker初体验:docker部署nginx负载均衡集群

    Docker 是一个用于开发,交付和运行应用程序的开放平台.Docker 使您能够将应用程序与基础架构分开,从而可以快速交付软件.今天来为大家演示一下docker部署nginx负载均衡集群 环境 ce ...

  6. docker初体验:docker部署nginx服务

    Docker 是一个用于开发,交付和运行应用程序的开放平台.Docker 使您能够将应用程序与基础架构分开,从而可以快速交付软件.今天来为大家演示一下docker部署nginx 环境 centos7 ...

  7. Docker系列 四.Docker部署SpringBoot

    四.Docker部署SpringBoot 环境&工具: 阿里云轻量级服务器.CentOS 7系统.FinalShell(其他连接客户端也可以).IDEA 1. 创建springboot项目 这 ...

  8. Docker部署文档

    Docker部署文档 目录 Docker部署文档 1 一.什么是Docker 3 1.1Docker简介 3 1.2对比传统虚拟机总结 4 1.3Docker通常用于如下场景: 5 1.4基本概念 5 ...

  9. Docker部署Zookeeper集群

    Docker部署Zookeeper集群 官方网站: http://zookeeper.apache.org/ http://zookeeper.apache.org/doc/r3.4.8/zookee ...

最新文章

  1. Java元组Tuple使用实例--转载
  2. mc服务器村民交易修改,【原创】【教程】MCPE自定义村民交易内容
  3. OS / 进程和线程的区别和联系
  4. Stack Overflow引入CROKAGE,搜问题不用再东拼西凑
  5. Idea中搭建Resin运行环境(Mac)
  6. scrapy 整合 djangoitem,摆脱保存数据时SQL报错的困扰
  7. Cesium获取经度 ,纬度,高度
  8. 5-01表达基本概念
  9. python自己制作视频_你还在为看电影发愁?Python制作全网视频播放工具!
  10. vm虚拟机无法访问共享文件夹
  11. SPSS回归分析案例
  12. Greenplum外表gpfdist加载数据
  13. 生活就像一盒巧克力,你永远不知道会尝到哪种滋味
  14. (python)下载喜马拉雅电台的音频
  15. Scala之set方法(超详细)
  16. 什么是对象、什么是面对对象?
  17. wden小波滤波函数
  18. pdf加密怎么加?在线免费对PDF文档加密
  19. hdfs——Attempting to operate on hdfs namenode as root 两种解决方式
  20. 水下机器人舟山_别看水下机器人小 它可是一个探海高手

热门文章

  1. Linux——设置内网映射外网代理(git,apt通用)
  2. 对表格数据的数据筛选
  3. Android:同步屏障的简单理解和使用
  4. 为什么魔兽世界不显示服务器,魔兽世界为什么看不见自己的同伴呢_在rtp服务器取消位面...
  5. Excel VBA 高级编程-来自直男的Excel表白
  6. VC 32位(或64位)win7操作系统的注册表操作
  7. JAVA 提取字符串中的数字相加方法
  8. Jarvis OJ pwn guestbook2
  9. java强制类型转换(java强制类型转换有哪些)
  10. B1032挖掘机技术哪家强