🙂🙂小编本身使用过开源的各种调度系统,从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