大数据调度组件之Apache DolphinScheduler

打印 上一主题 下一主题

主题 1918|帖子 1918|积分 5754

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

重要特性


  • 易于部署,提供四种部署方式,包括Standalone、Cluster、Docker和Kubernetes
  • 易于使用,可以通过四种方式创建和管理工作流,包括Web UI、Python SDK和Open API
  • 高可靠高可用,多主多从的去中心化架构,原生支持横向扩展
  • 高性能,性能比其他编排平台快N倍,每天可支持万万级使命
  • Cloud Native,DolphinScheduler支持编排多云/数据中心工作流,支持自界说使命类型
  • 对工作流和工作流实例(包括使命)举行版本控制
  • 工作流和使命的多种状态控制,支持随时暂停/停止/恢复它们
  • 多租户支持
  • 其他如补数支持(Web UI 原生),包括项目和数据源的权限控制
单节点部署

安装包下载


  • JDK:下载JDK (1.8+),安装并设置 JAVA_HOME 环境变量,并将其下的 bin 目录追加到 PATH 环境变量中。如果你的环境中已存在,可以跳过这步。
  • 二进制包:在下载页面下载 DolphinScheduler 二进制包
解压并启动 DolphinScheduler

二进制压缩包中有 Standalone 启动的脚本,解压后即可快速启动。
切换到有sudo权限的用户,运行脚本:
  1. # 解压并运行 Standalone Server
  2. tar -xvzf apache-dolphinscheduler-*-bin.tar.gz
  3. cd apache-dolphinscheduler-*-bin
  4. bash ./bin/dolphinscheduler-daemon.sh start standalone-server
复制代码
登录 DolphinScheduler

浏览器访问地点 http://localhost:12345/dolphinscheduler/ui 即可登录系统UI。
默认的用户名和密码是 admin/dolphinscheduler123
启停服务

脚本 ./bin/dolphinscheduler-daemon.sh 除了可以快捷启动 standalone 外,还能停止服务运行,全部命令如下
  1. # 启动 Standalone Server 服务
  2. bash ./bin/dolphinscheduler-daemon.sh start standalone-server
  3. # 停止 Standalone Server 服务
  4. bash ./bin/dolphinscheduler-daemon.sh stop standalone-server
复制代码
设置数据库

Standalone server 使用 H2 数据库作为其元数据存储数据,这是为了上手简单,用户在启动服务器之前不需要启动数据库。
但是如果用户想将元数据库存储在 MySQL 或 PostgreSQL 等其他数据库中,他们必须更改一些设置。
请参考 数据源设置 Standalone 切换元数据库 创建并初始化数据库
伪集群部署

安装包下载

伪分布式部署 Apache DolphinScheduler 需要有外部软件的支持

  • JDK:下载JDK (1.8+),安装并设置 JAVA_HOME 环境变量,并将其下的 bin 目录追加到 PATH 环境变量中。如果你的环境中已存在,可以跳过这步。
  • 二进制包:在下载页面下载 DolphinScheduler 二进制包
  • 数据库:PostgreSQL (8.2.15+) 大概 MySQL (5.7+),两者任选其一即可,如 MySQL 则需要 JDBC Driver 8.0.16
  • 注册中心:ZooKeeper (3.4.6+),下载地点
  • 进程树分析

    • macOS安装pstree
    • Fedora/Red/Hat/CentOS/Ubuntu/Debian安装psmisc

*注意:* DolphinScheduler 自己不依赖 Hadoop、Hive、Spark,但如果你运行的使命需要依赖他们,就需要有对应的环境支持
设置用户免密及权限

创建部署用户,并且一定要设置 sudo 免密。以创建 dolphinscheduler 用户为例
  1. # 创建用户需使用 root 登录
  2. useradd dolphinscheduler
  3. # 添加密码
  4. echo "dolphinscheduler" | passwd --stdin dolphinscheduler
  5. # 配置 sudo 免密
  6. sed -i '$adolphinscheduler  ALL=(ALL)  NOPASSWD: NOPASSWD: ALL' /etc/sudoers
  7. sed -i 's/Defaults    requirett/#Defaults    requirett/g' /etc/sudoers
  8. # 修改目录权限,使得部署用户对二进制包解压后的 apache-dolphinscheduler-*-bin 目录有操作权限
  9. chown -R dolphinscheduler:dolphinscheduler apache-dolphinscheduler-*-bin
复制代码
启动zookeeper

进入 zookeeper 的安装目录,将 zoo_sample.cfg 设置文件复制到 conf/zoo.cfg,并将 conf/zoo.cfg 中 dataDir 中的值改成 dataDir=./tmp/zookeeper
  1. # 启动 zookeeper
  2. ./bin/zkServer.sh start
复制代码
修改 install_env.sh 文件

文件 install_env.sh 描述了哪些机器将被安装 DolphinScheduler 以及每台机器对应安装哪些服务。
您可以在路径 bin/env/install_env.sh 中找到此文件,可通过以下方式更改env变量,export =,设置详情如下。
  1. # ---------------------------------------------------------
  2. # INSTALL MACHINE
  3. # ---------------------------------------------------------
  4. # Due to the master, worker, and API server being deployed on a single node, the IP of the server is the machine IP or localhost
  5. ips="localhost"
  6. sshPort="22"
  7. masters="localhost"
  8. workers="localhost:default"
  9. alertServer="localhost"
  10. apiServers="localhost"
  11. # DolphinScheduler installation path, it will auto-create if not exists
  12. installPath=~/dolphinscheduler
  13. # Deploy user, use the user you create in section **Configure machine SSH password-free login**
  14. deployUser="dolphinscheduler"
复制代码
修改 dolphinscheduler_env.sh 文件

文件 ./bin/env/dolphinscheduler_env.sh 描述了下列设置:

  • DolphinScheduler 的数据库设置,具体设置方法见初始化数据库
  • 一些使命类型外部依赖路径或库文件,如 JAVA_HOME 和 SPARK_HOME都是在这里界说的
  • 注册中心zookeeper
  • 服务端相干设置,好比缓存,时区设置等
如果不使用某些使命类型,可以忽略使命外部依赖项,但必须根据环境更改 JAVA_HOME、注册中心和数据库相干设置。
  1. # JAVA_HOME, will use it to start DolphinScheduler server
  2. export JAVA_HOME=${JAVA_HOME:-/opt/soft/java}
  3. # Database related configuration, set database type, username and password
  4. export DATABASE=${DATABASE:-postgresql}
  5. export SPRING_PROFILES_ACTIVE=${DATABASE}
  6. export SPRING_DATASOURCE_URL="jdbc:postgresql://127.0.0.1:5432/dolphinscheduler"
  7. export SPRING_DATASOURCE_USERNAME={user}
  8. export SPRING_DATASOURCE_PASSWORD={password}
  9. # DolphinScheduler server related configuration
  10. export SPRING_CACHE_TYPE=${SPRING_CACHE_TYPE:-none}
  11. export SPRING_JACKSON_TIME_ZONE=${SPRING_JACKSON_TIME_ZONE:-UTC}
  12. export MASTER_FETCH_COMMAND_NUM=${MASTER_FETCH_COMMAND_NUM:-10}
  13. # Registry center configuration, determines the type and link of the registry center
  14. export REGISTRY_TYPE=${REGISTRY_TYPE:-zookeeper}
  15. export REGISTRY_ZOOKEEPER_CONNECT_STRING=${REGISTRY_ZOOKEEPER_CONNECT_STRING:-localhost:2181}
  16. # Tasks related configurations, need to change the configuration if you use the related tasks.
  17. export HADOOP_HOME=${HADOOP_HOME:-/opt/soft/hadoop}
  18. export HADOOP_CONF_DIR=${HADOOP_CONF_DIR:-/opt/soft/hadoop/etc/hadoop}
  19. export SPARK_HOME1=${SPARK_HOME1:-/opt/soft/spark1}
  20. export SPARK_HOME2=${SPARK_HOME2:-/opt/soft/spark2}
  21. export PYTHON_HOME=${PYTHON_HOME:-/opt/soft/python}
  22. export HIVE_HOME=${HIVE_HOME:-/opt/soft/hive}
  23. export FLINK_HOME=${FLINK_HOME:-/opt/soft/flink}
  24. export DATAX_HOME=${DATAX_HOME:-/opt/soft/datax}
  25. export PATH=$HADOOP_HOME/bin:$SPARK_HOME1/bin:$SPARK_HOME2/bin:$PYTHON_HOME/bin:$JAVA_HOME/bin:$HIVE_HOME/bin:$FLINK_HOME/bin:$DATAX_HOME/bin:$PATH
复制代码
初始化数据库

DolphinScheduler 元数据存储在关系型数据库中,目前支持 PostgreSQL 和 MySQL。
下面分别先容如何使用 MySQL 和 PostgresQL 初始化数据库。
如果使用 MySQL 需要手动下载 mysql-connector-java 驱动 (8.0.16) 并移动到 DolphinScheduler 的每个模块的 libs 目录下,此中包括 api-server/libs 和 alert-server/libs 和 master-server/libs 和 worker-server/libs。
对于MySQL 5.6 / 5.7:
  1. mysql -uroot -p
  2. mysql> CREATE DATABASE dolphinscheduler DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
  3. # 修改 {user} 和 {password} 为你希望的用户名和密码
  4. mysql> GRANT ALL PRIVILEGES ON dolphinscheduler.* TO '{user}'@'%' IDENTIFIED BY '{password}';
  5. mysql> GRANT ALL PRIVILEGES ON dolphinscheduler.* TO '{user}'@'localhost' IDENTIFIED BY '{password}';
  6. mysql> flush privileges;
复制代码
对于MySQL 8:
  1. mysql -uroot -p
  2. mysql> CREATE DATABASE dolphinscheduler DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
  3. # 修改 {user} 和 {password} 为你希望的用户名和密码
  4. mysql> CREATE USER '{user}'@'%' IDENTIFIED BY '{password}';
  5. mysql> GRANT ALL PRIVILEGES ON dolphinscheduler.* TO '{user}'@'%';
  6. mysql> CREATE USER '{user}'@'localhost' IDENTIFIED BY '{password}';
  7. mysql> GRANT ALL PRIVILEGES ON dolphinscheduler.* TO '{user}'@'localhost';
  8. mysql> FLUSH PRIVILEGES;
复制代码
对于 PostgreSQL:
  1. # 采用命令行工具登陆 PostgreSQL
  2. psql
  3. # 创建数据库
  4. postgres=# CREATE DATABASE dolphinscheduler;
  5. # 修改 {user} 和 {password} 为你希望的用户名和密码
  6. postgres=# CREATE USER {user} PASSWORD {password};
  7. postgres=# ALTER DATABASE dolphinscheduler OWNER TO {user};
  8. # 退出 PostgreSQL
  9. postgres=#\q
  10. # 在终端执行如下命令,向配置文件新增登陆权限,并重载 PostgreSQL 配置,替换 {ip} 为对应的 DS 集群服务器 IP 地址段
  11. echo "host    dolphinscheduler   {user}    {ip}     md5" >> $PGDATA/pg_hba.conf
  12. pg_ctl reload
复制代码
然后修改./bin/env/dolphinscheduler_env.sh,将username和password改成你在上一步中设置的用户名{user}和密码{password}
对于 MySQL:
  1. # for mysql
  2. export DATABASE=${DATABASE:-mysql}
  3. export SPRING_PROFILES_ACTIVE=${DATABASE}
  4. export SPRING_DATASOURCE_URL="jdbc:mysql://127.0.0.1:3306/dolphinscheduler?useUnicode=true&characterEncoding=UTF-8&useSSL=false"
  5. export SPRING_DATASOURCE_USERNAME={user}
  6. export SPRING_DATASOURCE_PASSWORD={password}
复制代码
对于 PostgreSQL:
  1. # for postgresql
  2. export DATABASE=${DATABASE:-postgresql}
  3. export SPRING_PROFILES_ACTIVE=${DATABASE}
  4. export SPRING_DATASOURCE_URL="jdbc:postgresql://127.0.0.1:5432/dolphinscheduler"
  5. export SPRING_DATASOURCE_USERNAME={user}
  6. export SPRING_DATASOURCE_PASSWORD={password}
复制代码
完成上述步骤后,您已经为 DolphinScheduler 创建一个新数据库,如今你可以通过快速的 Shell 脚原来初始化数据库
  1. bash tools/bin/upgrade-schema.sh
复制代码
启动 DolphinScheduler

使用上面创建的部署用户运行以下命令完成部署,部署后的运行日志将存放在 logs 文件夹内。
  1. bash ./bin/install.sh
复制代码
*注意:* 第一次部署的话,可能出现 5 次sh: bin/dolphinscheduler-daemon.sh: No such file or directory相干信息,此为非重要信息直接忽略即可
登录 DolphinScheduler

浏览器访问地点 http://localhost:12345/dolphinscheduler/ui 即可登录系统UI。默认的用户名和密码是 admin/dolphinscheduler123
启停服务
  1. # 一键停止集群所有服务
  2. bash ./bin/stop-all.sh
  3. # 一键开启集群所有服务
  4. bash ./bin/start-all.sh
  5. # 启停 Master
  6. bash ./bin/dolphinscheduler-daemon.sh stop master-server
  7. bash ./bin/dolphinscheduler-daemon.sh start master-server
  8. # 启停 Worker
  9. bash ./bin/dolphinscheduler-daemon.sh start worker-server
  10. bash ./bin/dolphinscheduler-daemon.sh stop worker-server
  11. # 启停 Api
  12. bash ./bin/dolphinscheduler-daemon.sh start api-server
  13. bash ./bin/dolphinscheduler-daemon.sh stop api-server
  14. # 启停 Alert
  15. bash ./bin/dolphinscheduler-daemon.sh start alert-server
  16. bash ./bin/dolphinscheduler-daemon.sh stop alert-server
复制代码
Docker 部署

使用 standalone-server 镜像

使用 Standalone-server 镜像启动一个 DolphinScheduler standalone-server 容器应该是最快体验 DolphinScheduler 的方法。
通过这个方式 你可以最快速的体验到 DolphinScheduler 的大部分功能,相识重要和概念和内容。
  1. DOLPHINSCHEDULER_VERSION=3.1.5
  2. docker run --name dolphinscheduler-standalone-server -p 12345:12345 -p 25333:25333 -d apache/dolphinscheduler-standalone-server:"${DOLPHINSCHEDULER_VERSION}"
复制代码
注意:请不要将 apache/dolphinscheduler-standalone-server 镜像作为生产镜像,应该仅仅作为快速体验 DolphinScheduler 的功能的途径。
除了因为他将全部服务运行在一个进程中外,还因为其使用内存数据库 H2 储存其元数据,当服务停止时内存数据库中的数据将会被清空。
另外 apache/dolphinscheduler-standalone-server 仅包含 DolphinScheduler 焦点服务,部分使命组件(如 Spark 和 Flink 等), 告警组件(如 Telegram 和 Dingtalk 等)需要外部的组件或对应的设置后
使用 docker-compose 启动服务

使用 docker-compose 启动服务相比 standalone-server 的优点是 DolphinScheduler 的各个是独立的容器和进程,相互影响降到最小,且可以或许在服务重启的时候保留元数据(如需要挂载到本地路径需要做指定)。
更结实,能包管用户体验更加完备的 DolphinScheduler 服务。
这种方式需要先安装 docker-compose,链接适用于 Mac,Linux,Windows。
安装完成 docker-compose 后我们需要修改部分设置以便能更好体验 DolphinScheduler 服务,我们需要设置不少于 4GB 的空闲内存:

  • Mac:点击 Docker Desktop -> Preferences -> Resources -> Memory 调整内存巨细
  • Windows Docker Desktop:

    • Hyper-V 模式:点击 Docker Desktop -> Settings -> Resources -> Memory 调整内存巨细
    • WSL 2 模式 模式:参考 WSL 2 utility VM 调整内存巨细

设置完成后我们需要获取 docker-compose.yaml 文件,通过下载页面下载对应版本源码包可能是最快的方法,源码包对应的值为 "Total Source Code"。
当下载完源码后就可以运行命令举行部署了。
  1. DOLPHINSCHEDULER_VERSION=3.1.5
  2. tar -zxf apache-dolphinscheduler-"${DOLPHINSCHEDULER_VERSION}"-src.tar.gz
  3. # Mac Linux 用户
  4. cd apache-dolphinscheduler-"${DOLPHINSCHEDULER_VERSION}"-src/deploy/docker
  5. #  Windows 用户, `cd apache-dolphinscheduler-"${DOLPHINSCHEDULER_VERSION}"-src\deploy\docker`
  6. # 如果需要初始化或者升级数据库结构,需要指定profile为schema
  7. docker-compose --profile schema up -d
  8. # 启动dolphinscheduler所有服务,指定profile为all
  9. docker-compose --profile all up -d
复制代码
提醒:通过 docker-compose 启动服务时,除了会启动 DolphinScheduler 对应的服务外,还会启动须要依赖服务,如数据库 PostgreSQL(用户 root, 密码 root, 数据库 dolphinscheduler) 和 服务发现 ZooKeeper。
沿用已有的 PostgreSQL 和 ZooKeeper 服务

使用 docker-compose 启动服务会新启动数据库,以及 ZooKeeper 服务。
如果你已经有在运行中的数据库,大概 ZooKeeper 且不想启动新的服务,可以使用这个方式分别启动 DolphinScheduler 容器。
  1. DOLPHINSCHEDULER_VERSION=3.1.5
  2. # 初始化数据库,其确保数据库 <DATABASE> 已经存在
  3. docker run -d --name dolphinscheduler-tools \
  4.     -e DATABASE="postgresql" \
  5.     -e SPRING_DATASOURCE_URL="jdbc:postgresql://localhost:5432/<DATABASE>" \
  6.     -e SPRING_DATASOURCE_USERNAME="<USER>" \
  7.     -e SPRING_DATASOURCE_PASSWORD="<PASSWORD>" \
  8.     --net host \
  9.     apache/dolphinscheduler-tools:"${DOLPHINSCHEDULER_VERSION}" tools/bin/upgrade-schema.sh
  10. # 启动 DolphinScheduler 对应的服务
  11. docker run -d --name dolphinscheduler-master \
  12.     -e DATABASE="postgresql" \
  13.     -e SPRING_DATASOURCE_URL="jdbc:postgresql://localhost:5432/dolphinscheduler" \
  14.     -e SPRING_DATASOURCE_USERNAME="<USER>" \
  15.     -e SPRING_DATASOURCE_PASSWORD="<PASSWORD>" \
  16.     -e REGISTRY_ZOOKEEPER_CONNECT_STRING="localhost:2181" \
  17.     --net host \
  18.     -d apache/dolphinscheduler-master:"${DOLPHINSCHEDULER_VERSION}"
  19. docker run -d --name dolphinscheduler-worker \
  20.     -e DATABASE="postgresql" \
  21.     -e SPRING_DATASOURCE_URL="jdbc:postgresql://localhost:5432/dolphinscheduler" \
  22.     -e SPRING_DATASOURCE_USERNAME="<USER>" \
  23.     -e SPRING_DATASOURCE_PASSWORD="<PASSWORD>" \
  24.     -e REGISTRY_ZOOKEEPER_CONNECT_STRING="localhost:2181" \
  25.     --net host \
  26.     -d apache/dolphinscheduler-worker:"${DOLPHINSCHEDULER_VERSION}"
  27. docker run -d --name dolphinscheduler-api \
  28.     -e DATABASE="postgresql" \
  29.     -e SPRING_DATASOURCE_URL="jdbc:postgresql://localhost:5432/dolphinscheduler" \
  30.     -e SPRING_DATASOURCE_USERNAME="<USER>" \
  31.     -e SPRING_DATASOURCE_PASSWORD="<PASSWORD>" \
  32.     -e REGISTRY_ZOOKEEPER_CONNECT_STRING="localhost:2181" \
  33.     --net host \
  34.     -d apache/dolphinscheduler-api:"${DOLPHINSCHEDULER_VERSION}"
  35. docker run -d --name dolphinscheduler-alert-server \
  36.     -e DATABASE="postgresql" \
  37.     -e SPRING_DATASOURCE_URL="jdbc:postgresql://localhost:5432/dolphinscheduler" \
  38.     -e SPRING_DATASOURCE_USERNAME="<USER>" \
  39.     -e SPRING_DATASOURCE_PASSWORD="<PASSWORD>" \
  40.     -e REGISTRY_ZOOKEEPER_CONNECT_STRING="localhost:2181" \
  41.     --net host \
  42.     -d apache/dolphinscheduler-alert-server:"${DOLPHINSCHEDULER_VERSION}"
复制代码
注意:如果你本地还没有对应的数据库和 ZooKeeper 服务,但是想要实验这个启动方式,可以先安装并启动 PostgreSQL(8.2.15+) 以及 ZooKeeper(3.8.0)
本文完!
本文由 白鲸开源 提供发布支持!

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

忿忿的泥巴坨

论坛元老
这个人很懒什么都没写!
快速回复 返回顶部 返回列表