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

前置准备工作

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

准备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"

初始化数据库

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版本部署篇