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安装,请勿操作,版本不符合官网要求,咱尽量与官网一致)

jdk安装,解压配置环境即可

mysql5.6或5.7系列操作(任选其一即可,这里小编选的是5.7)

mysql5.6,这里是hive的安装,但是装hive前是mysql5.6安装,按步骤弄好即可mysql5.7,这里博客不是小编自己的,如后期找不到,可以找小编要相应文档,评论区联系

hadoop安装(这里安装的hadoop高可用)
zookeeper 安装

zookeeper安装,配有时间同步,如有需要可以参考

正式安装dolphinscheduler集群(以三台机器为例)

注意 因为dolphinscheduler软件安装包有点特殊,他的tar.gz包解压了之后仍然是一个安装包,这点需要注意。

上传安装包,解压出安装包放入相应位置(每台机器都要上传,下面的操作三台也都要操作)

  • 创建一个文件夹专门放置各种软件tar包等mkdir install,下载好的安装包一开始就放在这里面
  • 创建一个放置dolphinscheduler解压后的安装包文件夹mkdir -p /lyqds/software
  • 创建一个dolphinscheduler软件安装位置mkdir -p /lyqds/app
  • 解压安装包放到/lyqds/software文件夹中
    cd installtar -xzvf apache-dolphinscheduler-incubating-1.3.2-dolphinscheduler-bin.tar.gz -C /lyqds/software/
  • 进入/lyqds/software文件夹中,创建软连接,也可以直接使用mv命令改名字,一般来说开发环境使用软连接
    cd /lyqds/softwareln -s apache-dolphinscheduler-incubating-1.3.2-dolphinscheduler-bin dolphinscheduler-bin
  • DolphinScheduler对接java dolphin group_mysql


创建部署用户和hosts映射(每台都要操作)

  • 设置用户名,请自行修改,后面以dolphinscheduler为例 useradd dolphinscheduler;
  • 设置用户密码,请自行修改,后面以dolphinscheduler123为例 echo "dolphinscheduler123" | passwd --stdin dolphinscheduler
  • 配置sudo免密
    echo 'dolphinscheduler ALL=(ALL) NOPASSWD: NOPASSWD: ALL' >> /etc/sudoerssed -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
  • DolphinScheduler对接java dolphin group_mysql_02


数据库初始化(这里只需要对首台机器操作即可)

  • 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