伪集群部署

伪集群部署目的是在单台机器部署 DolphinScheduler 服务,该模式下master、worker、api server、logger server都在同一台机器上

如果你是新手,想要体验 DolphinScheduler 的功能,推荐使用Standalone方式体检。如果你想体验更完整的功能,或者更大的任务量,推荐使用伪集群部署。如果你是在生产中使用,推荐使用集群部署或者kubernetes

前置准备工作

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

  • JDK:下载JDK (1.8+),并将 JAVA_HOME 配置到以及 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,但如果你运行的任务需要依赖他们,就需要有对应的环境支持

准备 DolphinScheduler 启动环境

配置用户免密及权限

创建部署用户,并且一定要配置 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. # 修改目录权限,使得部署用户对 dolphinscheduler-bin 目录有操作权限
  9. chown -R dolphinscheduler:dolphinscheduler dolphinscheduler-bin

注意:

  • 因为任务执行服务是以 sudo -u {linux-user} 切换不同 linux 用户的方式来实现多租户运行作业,所以部署用户需要有 sudo 权限,而且是免密的。初学习者不理解的话,完全可以暂时忽略这一点
  • 如果发现 /etc/sudoers 文件中有 “Defaults requirett” 这行,也请注释掉

配置机器SSH免密登陆

由于安装的时候需要向不同机器发送资源,所以要求各台机器间能实现SSH免密登陆。配置免密登陆的步骤如下

  1. su dolphinscheduler
  2. ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa
  3. cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
  4. chmod 600 ~/.ssh/authorized_keys

注意: 配置完成后,可以通过运行命令 ssh localhost 判断是否成功,如果不需要输入密码就能ssh登陆则证明成功

启动zookeeper

进入 zookeeper 的安装目录,将 zoo_sample.cfg 配置文件复制到 conf/zoo.cfg,并将 conf/zoo.cfg 中 dataDir 中的值改成 dataDir=./tmp/zookeeper

  1. # 启动 zookeeper
  2. ./bin/zkServer.sh start

初始化数据库

DolphinScheduler 元数据存储在关系型数据库中,目前支持 PostgreSQL 和 MySQL,如果使用 MySQL 则需要手动下载 mysql-connector-java 驱动 (5.1.47+) 并移动到 DolphinScheduler 的 lib目录下。下面以 MySQL 为例,说明如何初始化数据库

  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;

运行对应数据库的最新定义文件,位置在 dolphinscheduler/dolphinscheduler-dao/src/main/resources/sql/dolphinscheduler_*.sql 。例如你是 MySQL ,运行 dolphinscheduler/dolphinscheduler-dao/src/main/resources/sql/dolphinscheduler_mysql.sql ,是 PostgreSQL 则运行 dolphinscheduler/dolphinscheduler-dao/src/main/resources/sql/dolphinscheduler_postgre.sql

NOTICE: 最新版本目前通过运行命令 sh script/create-dolphinscheduler.sh 初始化数据库的方式暂不可用,我们创建了一个issue-6597 去追踪并修复这个问题。

修改相关配置

完成了基础环境的准备后,在运行部署命令前,还需要根据环境修改配置文件。配置文件在路径在conf/config/install_config.conf下,一般部署只需要修改INSTALL MACHINE、DolphinScheduler ENV、Database、Registry Server部分即可完成部署,下面对必须修改参数进行说明

  1. # ---------------------------------------------------------
  2. # INSTALL MACHINE
  3. # ---------------------------------------------------------
  4. # 因为是在单节点上部署master、worker、API server,所以服务器的IP均为机器IP或者localhost
  5. ips="localhost"
  6. masters="localhost"
  7. workers="localhost:default"
  8. alertServer="localhost"
  9. apiServers="localhost"
  10. # DolphinScheduler安装路径,如果不存在会创建
  11. installPath="~/dolphinscheduler"
  12. # 部署用户,填写在 **配置用户免密及权限** 中创建的用户
  13. deployUser="dolphinscheduler"
  14. # ---------------------------------------------------------
  15. # DolphinScheduler ENV
  16. # ---------------------------------------------------------
  17. # JAVA_HOME 的路径,是在 **前置准备工作** 安装的JDK中 JAVA_HOME 所在的位置
  18. javaHome="/your/java/home/here"
  19. # ---------------------------------------------------------
  20. # Database
  21. # ---------------------------------------------------------
  22. # 数据库的类型,用户名,密码,IP,端口,元数据库db。其中dbtype目前支持 mysql 和 postgresql
  23. dbtype="mysql"
  24. dbhost="localhost:3306"
  25. # 如果你不是以 dolphinscheduler/dolphinscheduler 作为用户名和密码的,需要进行修改
  26. username="dolphinscheduler"
  27. password="dolphinscheduler"
  28. dbname="dolphinscheduler"
  29. # ---------------------------------------------------------
  30. # Registry Server
  31. # ---------------------------------------------------------
  32. # 注册中心地址,zookeeper服务的地址
  33. registryServers="localhost:2181"

启动 DolphinScheduler

使用部署用户运行一下命令完成部署,部署后的运行日志将存放在 logs 文件夹内

  1. sh install.sh

注意: 第一次部署的话,可能出现 5 次sh: bin/dolphinscheduler-daemon.sh: No such file or directory相关信息,次为非重要信息直接忽略即可

登录 DolphinScheduler

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

启停服务

  1. # 一键停止集群所有服务
  2. sh ./bin/stop-all.sh
  3. # 一键开启集群所有服务
  4. sh ./bin/start-all.sh
  5. # 启停 Master
  6. sh ./bin/dolphinscheduler-daemon.sh stop master-server
  7. sh ./bin/dolphinscheduler-daemon.sh start master-server
  8. # 启停 Worker
  9. sh ./bin/dolphinscheduler-daemon.sh start worker-server
  10. sh ./bin/dolphinscheduler-daemon.sh stop worker-server
  11. # 启停 Api
  12. sh ./bin/dolphinscheduler-daemon.sh start api-server
  13. sh ./bin/dolphinscheduler-daemon.sh stop api-server
  14. # 启停 Logger
  15. sh ./bin/dolphinscheduler-daemon.sh start logger-server
  16. sh ./bin/dolphinscheduler-daemon.sh stop logger-server
  17. # 启停 Alert
  18. sh ./bin/dolphinscheduler-daemon.sh start alert-server
  19. sh ./bin/dolphinscheduler-daemon.sh stop alert-server

注意::服务用途请具体参见《系统架构设计》小节