dolphinscheculer集群搭建前期铺垫
dolphinscheduler简单介绍
Apache DolphinScheduler是一个分布式去中心化,易扩展的可视化DAG工作流任务调度系统。致力于解决数据处理流程中错综复杂的依赖关系,使调度系统在数据处理流程中开箱即用。
- 高可靠性: 其中新华的多Master和多Worker,自身支持HA功能,采用任务队列来避免过载,不会造成机器卡死。
- 简单易用: DAG监控界面,所有流程定义都是可视化,通过拖拽任务定制DAG,通过API方式与第三方系统对接,一键部署
- 丰富的使用场景: 支持暂停恢复操作,支持多租户,更好的应用大数据的使用场景,支持更多的任务类型,对1.3.2版本的有 spark、hive、mr、python、sub_process,shell、以及ETL工具sqoop、dataX。
- 高扩展性: 支持自定义任务类型,调度器使用分布式调度,调度能力随集群线性增长,Master和Worker支持动态上下线。
结合官网查看搭建文档
基础软件安装要求
- PostgreSQL (8.2.15+) or MySQL (5.6或者5.7系列) : 两者任选其一即可
- JDK (1.8+) : 必装,请安装好后在/etc/profile下配置 JAVA_HOME 及 PATH 变量
- ZooKeeper (3.4.6+) :必装
- Hadoop (2.6+) or MinIO :选装,如果需要用到资源上传功能,可以选择上传到Hadoop or MinIO上
注意: DolphinScheduler本身不依赖Hadoop、Hive、Spark,仅是会调用他们的Client,用于对应任务的提交
这里提供了小编搭建的软件包,亲测可用
dolphinscheduler相关软件安装包
提取码:g7up
jdk安装(这里博客有mysql安装,请勿操作,版本不符合官网要求,咱尽量与官网一致)
mysql5.6或5.7系列操作(任选其一即可,这里小编选的是5.7)
mysql5.6,这里是hive的安装,但是装hive前是mysql5.6安装,按步骤弄好即可
mysql5.7,这里博客不是小编自己的,如后期找不到,可以找小编要相应文档,评论区联系
hadoop安装(这里安装的hadoop高可用)
- hadoop高可用搭建文档(各种配置文件参考下方百度云连接)
hadoop高可用文档,博客借鉴别的博主,若有消失找不到情况,联系小编 - hadoop配置文件参考
hadoop集群相关配置文件,直接下载更改即可
提取码:2t8j
zookeeper 安装
正式安装dolphinscheduler集群(以三台机器为例)
注意 因为dolphinscheduler软件安装包有点特殊,他的tar.gz包解压了之后仍然是一个安装包,这点需要注意。
上传安装包,解压出安装包放入相应位置(每台机器都要上传,下面的操作三台也都要操作)
- 创建一个文件夹专门放置各种软件tar包等
mkdir install
,下载好的安装包一开始就放在这里面 - 创建一个放置dolphinscheduler解压后的安装包文件夹
mkdir -p /lyqds/software
- 创建一个dolphinscheduler软件安装位置
mkdir -p /lyqds/app
- 解压安装包放到/lyqds/software文件夹中
cd install
tar -xzvf apache-dolphinscheduler-incubating-1.3.2-dolphinscheduler-bin.tar.gz -C /lyqds/software/
- 进入/lyqds/software文件夹中,创建软连接,也可以直接使用mv命令改名字,一般来说开发环境使用软连接
cd /lyqds/software
ln -s apache-dolphinscheduler-incubating-1.3.2-dolphinscheduler-bin dolphinscheduler-bin
创建部署用户和hosts映射(每台都要操作)
- 设置用户名,请自行修改,后面以dolphinscheduler为例
useradd dolphinscheduler;
- 设置用户密码,请自行修改,后面以dolphinscheduler123为例
echo "dolphinscheduler123" | passwd --stdin dolphinscheduler
- 配置sudo免密
echo 'dolphinscheduler ALL=(ALL) NOPASSWD: NOPASSWD: ALL' >> /etc/sudoers
sed -i 's/Defaults requirett/#Defaults requirett/g' /etc/sudoers
注意,这时需要看一下官网,有相应需要注意的地方,给大家贴到这里了
注意:
- 因为是以 sudo -u {linux-user} 切换不同linux用户的方式来实现多租户运行作业,所以部署用户需要有 sudo 权限,而且是免密的。
- 如果发现/etc/sudoers文件中有"Default requiretty"这行,也请注释掉
- 如果用到资源上传的话,还需要在`HDFS或者MinIO`上给该部署用户分配读写的权限
配置hosts映射和ssh打通及修改目录权限vi /etc/hosts
(每台都要操作)
最后一行添加如下内容,一般来说hadoop高可用的时候就已经做过相应操作,这时只需要看看检查下即可
192.168.xxx.xxx 相应主机名
192.168.xxx.xxx 相应主机名
192.168.xxx.xxx 相应主机名
192.168.xxx.xxx 相应主机名
对创建的dolphinscheduler用户三台机器进行免密登录(注意这里没有跟官网采用同样的方法,看你们自己喜好)(每台机器都要操作)
- 生成私钥:
ssh-keygen -t rsa -P ""
,输入命令后直接回车,再按回车。 - 输入:
cat /root/.ssh/id_rsa.pub > /root/.ssh/authorized_keys
将密钥变成公钥 - 远程免登录配置:
ssh-copy-id -i .ssh/id_rsa.pub -p22 dolphinscheduler@192.168.56.121
(有n个机器,每台机器就要配n-1次) - 验证免登录:
ssh dolphinscheduler@192.168.xxx.xxx 或 ssh dolphinscheduler@需要登录的主机名
,无需密码验证即当前机器对121机器免登录配置成功(有多少台机器都要验证) - 修改目录权限
sudo chown -R dolphinscheduler:dolphinscheduler /lyqds
- 查看修改目录权限结果
ll /lyqds
数据库初始化(这里只需要对首台机器操作即可)
- mysql-connector-java驱动包到DolphinScheduler的lib目录(这个小编三台都上传了,一台也是可以的,选用jar包为mysql-connector-java-5.1.48-bin.jar)
jar包获取连接
提取码:10zq - 进入dolphinscheduler文件夹上传jar包
cd /lyqds/software/dolphinscheduler-bin/lib/
,拖入jar包即可 - 创建db和用户和赋予权限,进入mysql
设置数据用户 dolphinscheduler 的访问密码为 dolphinscheduler,并且不对访问的 ip 做限制
测试环境将访问设置为所有,如果是生产,可以限制只能子网段的ip才能访问(‘192.168.1.%’)
CREATE DATABASE dolphinscheduler DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
GRANT ALL PRIVILEGES ON dolphinscheduler.* TO 'dolphinscheduler'@'%' IDENTIFIED BY 'dolphinscheduler';
GRANT ALL PRIVILEGES ON dolphinscheduler.* TO 'dolphinscheduler'@'localhost' IDENTIFIED BY 'dolphinscheduler';
flush privileges;
创建表和导入基础数据(首台机器操作就可,执行只需要首台机器上执行)
- 修改datasource.properties中的下列属性
# 进入dolphinscheduler的conf文件夹
cd /lyqds/software/dolphinscheduler-bin/conf
# 打开datasource.properties文件
vi datasource.properties
#修改原本的pgsql配置
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
spring.datasource.url=jdbc:mysql://xxx:3306/dolphinscheduler?useUnicode=true&characterEncoding=UTF-8&allowMultiQueries=true
spring.datasource.username=dolphinscheduler
spring.datasource.password=dolphinscheduler
- 执行 script 目录下的创建表及导入基础数据脚本
sh script/create-dolphinscheduler.sh
修改运行参数(首台机器操作即可)
- 进入dolphinscheduler下的conf/env目录下
cd /lyqds/software/dolphinscheduler-bin/conf/env/
- 打开dolphinscheduler_env.sh文件
vi dolphinscheduler_env.sh
添加如下内容
export HADOOP_HOME=/opt/software/hadoop
export HADOOP_CONF_DIR=/opt/software/hadoop/etc/hadoop
export SPARK_HOME2=/opt/software/spark220
export JAVA_HOME=/opt/software/jdk1.8.0_221
export HIVE_HOME=/opt/software/hive110
export PATH=$HADOOP_HOME/bin:$SPARK_HOME2/bin:$JAVA_HOME/bin:$HIVE_HOME/bin:$PATH
修改一键部署配置文件(首台机器修改就可以)
- 进入配置文件文件夹
/lyqds/software/dolphinscheduler-bin/conf/config
- 修改配置文件
#
# Licensed to the Apache Software Foundation (ASF) under one or more
# contributor license agreements. See the NOTICE file distributed with
# this work for additional information regarding copyright ownership.
# The ASF licenses this file to You under the Apache License, Version 2.0
# (the "License"); you may not use this file except in compliance with
# the License. You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#
# NOTICE : If the following config has special characters in the variable `.*[]^${}\+?|()@#&`, Please escape, for example, `[` escape to `\[`
# postgresql or mysql
#这里填dolphinscheduler元数据存储数据库类型
dbtype="mysql"
# db config
# db address and port
# 数据库连接地址
dbhost="lyqds01:3306"
# db username
# 数据库用户名
username="dolphinscheduler"
# database name
# 数据库名
dbname="dolphinscheduler"
# db passwprd
#数据库密码,如果有特殊字符,请使用\转义,需要修改为上面设置的{passowrd}具体值
# NOTICE: if there are special characters, please use the \ to escape, for example, `[` escape to `\[`
password="dolphinscheduler"
# zk cluster
# Zookeeper地址,单机本机是localhost:2181,记得把2181端口带上
zkQuorum="lyqds01:2181,lyqds02:2181,lyqds03:2181"
# Note: the target installation path for dolphinscheduler, please not config as the same as the current path (pwd)
#将DS安装到哪个目录
installPath="/lyqds/app/dolphinscheduler"
# deployment user
# Note: the deployment user needs to have sudo privileges and permissions to operate hdfs. If hdfs is enabled, the root directory needs to be created by itself
# 使用哪个用户部署,使用之前创建的用户
deployUser="dolphinscheduler"
# alert config
# mail server host
# 邮件配置,以qq邮箱为例
# 邮件协议 如果是企业qq邮箱则不用改动,如果是个人qq邮箱则按下面的方式填写
mailServerHost="smtp.qq.com"
# mail server port
# note: Different protocols and encryption methods correspond to different ports, when SSL/TLS is enabled, make sure the port is correct.
# 邮件服务端口 如果是阿里云服务器则需要改成587,若是自己的则使用25即可
mailServerPort="25"
# 发送者
# sender
mailSender="1469128493@qq.com"
# user
# 发送用户
mailUser="1469128493@qq.com"
# sender password
# 邮箱密码,这里是开启协议后服务商提供的密码
# note: The mail.passwd is email service authorization code, not the email login password.
mailPassword="邮箱授权码如何生成,后面会有说明,看完后面说明将双引号内容改掉即可"
# TLS mail protocol support
# TLS协议的邮箱设置为true,否则设置为false。 这里设置为true
starttlsEnable="true"
# SSL mail protocol support
# only one of TLS and SSL can be in the true state.
# 开启SSL协议的邮箱配置为true,否则为false。注意: starttlsEnable和sslEnable不能同时为true
sslEnable="false"
#note: sslTrust is the same as mailServerHost
# 邮件服务地址值,参考上面 mailServerHost
sslTrust="smtp.qq.com"
# resource storage type:HDFS,S3,NONE
#业务用到的比如sql等资源文件上传到哪里,可以设置:HDFS,S3,NONE,单机如果想使用本地文件系统,请配置为HDFS,因为HDFS支持本地文件系统;如果不需要资源上传功能请选择NONE。强调一点:使用本地文件系统不需要部署hadoop
resourceStorageType="HDFS"
# if resourceStorageType is HDFS,defaultFS write namenode address,HA you need to put core-site.xml and hdfs-site.xml in the conf directory.
# if S3,write S3 address,HA,for example :s3a://dolphinscheduler,
# Note,s3 be sure to create the root directory /dolphinscheduler
# 这里以保存到HDFS为例
#注:但是如果你想上传到HDFS的话,NameNode启用了HA,则需要将hadoop的配置文件core-site.xml和hdfs-site.xml放到conf目录下,并配置namenode cluster名称;如果NameNode不是HA,则修改为具体的ip或者主机名即可
# 本地文件系统:"file:///data/dolphinscheduler" 或 HDFS集群: hdfs://{具体的ip/主机名}:8020
defaultFS="hdfs://mycluster"
# if resourceStorageType is S3, the following three configuration is required, otherwise please ignore
s3Endpoint="http://192.168.xx.xx:9010"
s3AccessKey="xxxxxxxxxx"
s3SecretKey="xxxxxxxxxx"
# if resourcemanager HA enable, please type the HA ips ; if resourcemanager is single, make this value empty
# 如果yarn配置的是高可用则填写yarn所有节点,如果不是则将其注释掉,用下面单点模式,因为我搭的是yarn高可用所以用这个
yarnHaIps="lyqds01,lyqds02"
# if resourcemanager HA enable or not use resourcemanager, please skip this value setting; If resourcemanager is single, you only need to replace yarnIp1 to actual resourcemanager hostname.
# 正因如此所以yarn单点模式我就需要注释掉
#singleYarnIp="yarnIp1"
# resource store on HDFS/S3 path, resource file will store to this hadoop hdfs path, self configuration, please make sure the directory exists on hdfs and have read write permissions。/dolphinscheduler is recommended
resourceUploadPath="/dolphinscheduler"
# who have permissions to create directory under HDFS/S3 root path
# Note: if kerberos is enabled, please config hdfsRootUser=
# 具备权限创建resourceUploadPath的用户,这里用的是Hadoop搭建的用户,我是用的是root用户搭建的。也有人会创建hdfs用户进行搭建。
hdfsRootUser="root"
# kerberos config
# whether kerberos starts, if kerberos starts, following four items need to config, otherwise please ignore
kerberosStartUp="false"
# kdc krb5 config file path
krb5ConfPath="$installPath/conf/krb5.conf"
# keytab username
keytabUserName="hdfs-mycluster@ESZ.COM"
# username keytab path
keytabPath="$installPath/conf/hdfs.headless.keytab"
# api server port
apiServerPort="12345"
# install hosts
# Note: install the scheduled hostname list. If it is pseudo-distributed, just write a pseudo-distributed hostname
# 在哪些机器上部署DS服务,本机选localhost(如下配置为单机配置,需要集群配置,直接参考默认值即可)
ips="lyqds01,lyqds02,lyqds03"
# ssh port, default 22
# Note: if ssh port is not default, modify here
#ssh端口,默认22
sshPort="22"
# run master machine
# Note: list of hosts hostname for deploying master
# master服务部署在哪台机器上
masters="lyqds01,lyqds02"
# run worker machine
# note: need to write the worker group name of each worker, the default value is "default"
# worker服务部署在哪台机器上
workers="lyqds01:default,lyqds02:default,lyqds03:default"
# run alert machine
# note: list of machine hostnames for deploying alert server
#报警服务部署在哪台机器上
alertServer="lyqds01"
# run api machine
# note: list of machine hostnames for deploying api server
# 后端api服务部署在在哪台机器上
apiServers="lyqds01,lyqds02"
- xml文件不要忘记,将hadoop中的hdfs-site.xml和core-site.xml文件软连接或者拷贝到dolphinscheduler的conf目录下。
一键部署
- 进入脚本目录
cd /lyqds/software/dolphinscheduler-bin
- 运行脚本
sh install.sh
登录系统
-
访问前端页面地址,接口ip(自行修改) http://192.168.xx.xx:12345/dolphinscheduler
-
账号:admin
-
密码:dolphinscheduler123