Dolphin Scheduler 2.x版本部署篇

Posted 爱学习的老冰棍

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Dolphin Scheduler 2.x版本部署篇相关的知识,希望对你有一定的参考价值。

🙂🙂小编本身使用过开源的各种调度系统,从Azkaban、Airflow、DolphinScheduler,最舒服、方便快捷的还是DS。算是DS最开始的一批使用者,从1.x到2.x,最新的3.x还没有使用,小编推荐大家使用1.3.8版本。

前置准备工作

  • JDK:下载JDK (1.8+),并将 JAVA_HOME 配置到以及 PATH 变量中。如果你的环境中已存在,可以跳过这步。
  • 二进制包:在下载页面下载 DolphinScheduler 二进制包
  • 数据库:PostgreSQL (8.2.15+) 或者 mysql (5.7+),两者任选其一即可。这里小编选择的是mysql,另外 MySQL 则需要 JDBC Driver 8.0.16,1.x版本使用driver版本低,2.x版本必须使用高版本的driver,要不后面在配置数据源中心mysql的时候,创建会失败
  • 注册中心:ZooKeeper (3.4.6+),下载地址
  • 进程树分析(这里小编并没有使用这个
    • macOS安装pstree
    • Fedora/Red/Hat/CentOS/Ubuntu/Debian安装psmisc

环境是第一步,大家无论安装什么软件时一定要保证自己的环境是可以使用的

准备DolphinScheduler 启动环境

配置用户免密及权限

创建部署用户,并且一定要配置 sudo 免密。以创建 dolphinscheduler 用户为例(这里小编是以dolphinscheduler用户部署的)

# 创建用户需使用 root 登录
useradd dolphinscheduler

# 添加密码
echo "dolphinscheduler" | passwd --stdin dolphinscheduler

# 配置 sudo 免密
sed -i '$adolphinscheduler  ALL=(ALL)  NOPASSWD: NOPASSWD: ALL' /etc/sudoers
sed -i 's/Defaults    requirett/#Defaults    requirett/g' /etc/sudoers

# 修改目录权限,使得部署用户对二进制包解压后的 apache-dolphinscheduler-*-bin 目录有操作权限
chown -R dolphinscheduler:dolphinscheduler apache-dolphinscheduler-*-bin
  • 因为任务执行服务是以 sudo -u linux-user 切换不同 linux 用户的方式来实现多租户运行作业,所以部署用户需要有 sudo 权限,而且是免密的。
  • 如果发现 /etc/sudoers 文件中有 “Defaults requirett” 这行,也请注释掉

配置机器SSH免密登陆

由于安装的时候需要向不同机器发送资源(DS安装集群模式是分布式,它会向不同的节点去创建DS目录、资源),所以要求各台机器间能实现SSH免密登陆。

su dolphinscheduler

ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
chmod 600 ~/.ssh/authorized_keys

启动ZK

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

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

修改相关配置

完成了基础环境的准备后,在运行部署钱,还需要根据环境修改配置文件。配置文件在路径conf/config/install_config.conf下,一般部署只需要修改INSTALL MACHINE、DolphinScheduler ENV、Database、Registry Server部分即可完成部署,下面对必须修改参数进行说明。这里小编会把伪集群部署和集群部署的安装文件都贴出来

  • 伪集群部署
ips="localhost"
sshPort="22"
masters="localhost"
workers="localhost:default"

alertServer="localhost"

apiServers="localhost"

pythonGatewayServers="localhost"
#ds会创建一个新的目录来执行调度的工作
installPath="/opt/dolphinscheduler"
#部署用户
deployUser="dolphinscheduler"
#资源存储位置
dataBasedirPath="/data/dolphinscheduler"

javaHome="/etc/alternatives/jre"

apiServerPort="12345"
#元数据库类型
DATABASE_TYPE="mysql"
#元数据url
SPRING_DATASOURCE_URL="jdbc:mysql://mysql的ip:3306/dolphinscheduler?characterEncoding=UTF-8&allowMultiQueries=true"
#mysql的账户
SPRING_DATASOURCE_USERNAME="账户"
#mysql的密码
SPRING_DATASOURCE_PASSWORD="密码"

registryPluginName="zookeeper"
#注册中心的zk的ip
registryServers="zk的ip:2181"

registryNamespace="dolphinscheduler"


taskPluginDir="lib/plugin/task"
#资源中心的文件类型,伪集群、集群部署一定要选HDFS
resourceStorageType="HDFS"
#资源中心的地址,这里选择是本地目录
resourceUploadPath="/data/dolphinscheduler"
#资源中心的本地目录
defaultFS="file:///data/dolphinscheduler"

s3Endpoint="http://192.168.xx.xx:9010"
s3AccessKey="xxxxxxxxxx"
s3SecretKey="xxxxxxxxxx"

resourceManagerHttpAddressPort="8088"
#HA的yarn话填高可用的yarn地址
yarnHaIps=""
#yarn的ip,伪集群模式一般是单节点的yarn
singleYarnIp="yarn的ip"

hdfsRootUser="hdfs"

kerberosStartUp="false"
krb5ConfPath="$installPath/conf/krb5.conf"
keytabUserName="hdfs-mycluster\\\\@ESZ.COM"
keytabPath="$installPath/conf/hdfs.headless.keytab"
kerberosExpireTime="2"

sudoEnable="true"

workerTenantAutoCreate="false"

  • 集群模式
ips="172.19.106.23,172.19.106.24,172.19.106.25"
sshPort="22"
#DS高可用模式,支持多masters
masters="172.19.106.23,172.19.106.24"
#工作节点
workers="172.19.106.23:default,172.19.106.24:default,172.19.106.25:default"
alertServer="172.19.106.25"
apiServers="172.19.106.25"
pythonGatewayServers="172.19.106.24"
#ds会创建一个新的目录来执行调度的工作
installPath="/opt/dolphinscheduler"
#部署用户
deployUser="dolphinscheduler"
#资源存储位置
dataBasedirPath="/data/dolphinscheduler"
javaHome="/etc/alternatives/jre"
apiServerPort="12345"
#元数据库类型
DATABASE_TYPE="mysql"
#元数据url
SPRING_DATASOURCE_URL="jdbc:mysql://mysql的ip:3306/dolphinscheduler?characterEncoding=UTF-8&allowMultiQueries=true"
#mysql的账户
SPRING_DATASOURCE_USERNAME="账户"
#mysql的密码
SPRING_DATASOURCE_PASSWORD="密码"
registryPluginName="zookeeper"
#注册中心的ip
registryServers="172.19.106.23:2181,172.19.106.24:2181,172.19.106.25:2181"
registryNamespace="dolphinscheduler"
taskPluginDir="lib/plugin/task"
#资源中心的文件类型,伪集群、集群部署一定要选HDFS
resourceStorageType="HDFS"
#资源中心上传到HDFS的目录
resourceUploadPath="hdfs://172.19.106.23/dolphinscheduler"
#资源中心hdfs的地址
defaultFS="hdfs://172.19.106.23"
s3Endpoint="http://192.168.xx.xx:9010"
s3AccessKey="xxxxxxxxxx"
s3SecretKey="xxxxxxxxxx"
resourceManagerHttpAddressPort="8088"
#集群下yarn是高可用的
yarnHaIps="172.19.106.23,172.19.106.24,172.19.106.25"
singleYarnIp="yarnIp1"
#hdfs的用户
hdfsRootUser="hdfs"
kerberosStartUp="false"
krb5ConfPath="$installPath/conf/krb5.conf"
keytabUserName="hdfs-mycluster\\\\@ESZ.COM"
keytabPath="$installPath/conf/hdfs.headless.keytab"
kerberosExpireTime="2"
sudoEnable="true"
workerTenantAutoCreate="false"
  • 运行环境配置在2.x版本有两种方式,一个是去修改/opt/dolphinscheduler/conf/env目录下的dolphinscheduler_env.sh,也可以去安全中心那里去配置(如下图)

初始化数据库

DolphinScheduler 元数据存储在关系型数据库中,目前支持 PostgreSQL 和 MySQL,如果使用 MySQL 则需要手动下载mysql-connector-java 驱动 (8.0.16)(这里一定要使用高版本的,低版本的会出现bug,导致数据源中心的mysql创建不了) 并移动到 DolphinScheduler 的 lib目录下。下面以 MySQL 为例,说明如何初始化数据库(这里创建的账号密码就是配置在install_config.conf中的

mysql -uroot -p

mysql> CREATE DATABASE dolphinscheduler DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;

# 修改 user 和 password 为你希望的用户名和密码
mysql> GRANT ALL PRIVILEGES ON dolphinscheduler.* TO 'user'@'%' IDENTIFIED BY 'password';
mysql> GRANT ALL PRIVILEGES ON dolphinscheduler.* TO 'user'@'localhost' IDENTIFIED BY 'password';

mysql> flush privileges;

完成上述步骤后,您已经为 DolphinScheduler 创建一个新数据库,现在你可以通过快速的 Shell 脚本来初始化数据库

sh script/create-dolphinscheduler.sh

启动DolphinScheduler

sh install.sh

登录DolphinScheduler

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

以上是关于Dolphin Scheduler 2.x版本部署篇的主要内容,如果未能解决你的问题,请参考以下文章

浅析RxJava 1.x&2.x版本区别及原理:1.x 版本 Scheduler调度线程变换及subscribeOnobserveOn方法源码解析

浅析RxJava 1.x&2.x版本区别及原理:1.x 版本 Scheduler调度线程变换及subscribeOnobserveOn方法源码解析

浅析RxJava 1.x&2.x版本区别及原理:1.x 版本 Scheduler调度线程变换及subscribeOnobserveOn方法源码解析

Quartz与Spring Boot集成使用

KDE 的 Dolphin 文件管理器的便携版

06-4.部署高可用 kube-scheduler 集群