关键字:【DolphinScheduler 安装 、DolphinScheduler 部署、DolphinScheduler 集群、DolphinScheduler 搭建】
它可以做什么?
相信使用过 CDH
中 oozie
的朋友一定不会对它陌生,它是一个工作流调度框架,可以通过 WEB-UI
页面帮助我们完成一些工作流调度任务(HDFS、MapReduce、Java、Shell、SSH、Pig、Hive)的定义和发布
今天介绍的 Apache DolphinScheduler
是 2019 年中国易观公司开源的一个调度系统,相比之下,它的功能更加强大,易用
① 操作简单
通过拖拽以 DAG 图的方式将 Task 按照任务的依赖关系关联起来,可实时可视化监控任务的运行状态
② 任务类型丰富
Shell,MR,Flink,SQL(mysql,postgresql,hive,sparksql),Python,Sub_Process,Procedure 等
③ 操作丰富
支持工作流定时调度、依赖调度、手动调度、手动暂停/停止/恢复,同时支持失败重试/告警、从指定节点恢复失败、Kill 任务等操作
话不多说,一张图就能说明一切,他们都在用
安装准备
环境准备
3 台腾讯云服务器 + 1 台云 mysql 中间件
节点 | node1 | node2 | node3 |
---|---|---|---|
配置 | 2C - 8G - 50G | 2C - 4G - 50G | 2C - 4G - 50G |
服务 | node01 | node02 | node03 |
---|---|---|---|
MasterServer | √ | √ | |
WorkerServer | √ | ||
LoggerServer | √ | ||
ApiApplicationServer | √ | ||
AlertServer | √ |
基础组件准备
① PostgreSQL (8.2.15+) 或者 MySQL (5.7系列)
Linux 安装 Mysql
两者任选其一即可,如 MySQL 则需要 JDBC Driver 5.1.47+
② JDK1.8+ 必装
Linux 安装 JDK
安装好后在 /etc/profile
下配置 JAVA_HOME
及 PATH
变量
③ ZooKeeper (3.4.6+):必装
④ Hadoop (2.6+) 或者 MinIO 选装
Hadoop 介绍及集群搭建
如果需要用到资源上传功能,可以选择上传到 Hadoop 或者 MinIO 上
⑤ 下载安装包
Apache Download dolphinscheduler 1.3.5
本篇博客使用的是 1.3.5
版本
安装配置
官方参考文档:cluster-deployment (apache.org)
注意:本篇博客在 node3
配置和安装,安装的时候会将文件发送给 node1
和 node2
,因此安装配置环节均在 node3
操作即可
① 上传解压
# 只在 node3 操作即可
# 解压
cd /opt/server
tar -zxvf apache-dolphinscheduler-incubating-1.3.5-dolphinscheduler-bin.tar.gz
# 配置软连接
mv apache-dolphinscheduler-incubating-1.3.5-dolphinscheduler-bin dolphinscheduler
② 增加 mysql
驱动
# mysql 驱动,5.x 版本的都行
mysql-connector-java-5.1.49.jar
# 添加到如下目录
/opt/server/dolphinscheduler/lib
③ 增加 dolphinscheduler
数据库
-- 创建数据库
CREATE DATABASE dolphinscheduler DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
-- 增加权限
GRANT ALL PRIVILEGES ON dolphinscheduler.* TO 'root'@'%' IDENTIFIED BY '123456';
-- 刷新权限
flush privileges;
④ 修改 datasource.properties
配置文件
cd /opt/server/dolphinscheduler/conf
vim datasource.properties
# 编辑以下内容
# 注意:如果使用 mysql,需要注释掉 postgresql 的内容
# postgresql
#spring.datasource.driver-class-name=com.mysql.jdbc.Driver
#spring.datasource.url=jdbc:mysql://192.168.88.161:3306/dolphinscheduler?characterEncoding=UTF-8&allowMultiQueries=true
#spring.datasource.username=root
#spring.datasource.password=123456
# mysql
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
spring.datasource.url=jdbc:mysql://177.126.54.63:3306/dolphinscheduler?characterEncoding=UTF-8&allowMultiQueries=true
spring.datasource.username=root
spring.datasource.password=123456
⑤ 执行初始化脚本
cd /opt/server/dolphinscheduler/script/
sh create-dolphinscheduler.sh
修改参数
① 修改 dolphinscheduler_env.sh
配置文件
cd /opt/server/dolphinscheduler/conf/env
vim dolphinscheduler_env.sh
# 编辑以下内容,用到什么组件就修改什么组件
export HADOOP_HOME=/opt/server/hadoop-2.7.5
export HADOOP_CONF_DIR=/opt/server/hadoop-2.7.5/etc/hadoop
#export SPARK_HOME1=/opt/soft/spark1
#export SPARK_HOME2=/opt/soft/spark2
export PYTHON_HOME=/usr/bin/python
export JAVA_HOME=/usr/lib/jdk1.8.0_172
export HIVE_HOME=/opt/server/hive-2.1.0
#export FLINK_HOME=/opt/soft/flink
#export DATAX_HOME=/opt/soft/datax/bin/datax.py
export SQOOP_HOME=/opt/server/sqoop
export PATH=$HADOOP_HOME/bin:$PYTHON_HOME:$JAVA_HOME/bin:$HIVE_HOME/bin:$SQOOP_HOME/bin:$PATH
② 修改 install_config.conf
配置文件
# 这里填 mysql or postgresql
dbtype="mysql"
# 数据库连接地址
dbhost="177.126.54.63:3306"
# 数据库名
dbname="dolphinscheduler"
# 数据库用户名,此处需要修改为上面设置的{user}具体值
username=" root"
# 数据库密码, 如果有特殊字符,请使用\转义,需要修改为上面设置的{password}具体值
password="123456"
#Zookeeper地址,单机本机是localhost:2181,记得把2181端口带上
zkQuorum="node1:2181,node2:2181,node3:2181"
#将DS安装到哪个目录,如: /opt/soft/dolphinscheduler,不同于现在的目录
installPath="/opt/server/dolphinscheduler_install"
#使用哪个用户部署,使用第3节创建的用户
deployUser="root"
# alert config(没有用到,所以这是)
# mail server host
# mailServerHost="smtp.exmail.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.
# mailServerPort="25"
# sender
# mailSender="xxxxxxxxxx"
# user
# mailUser="xxxxxxxxxx"
# sender password
# note: The mail.passwd is email service authorization code, not the email login password.
# mailPassword="xxxxxxxxxx"
# TLS mail protocol support
# starttlsEnable="true"
# SSL mail protocol support
# only one of TLS and SSL can be in the true state.
# sslEnable="false"
#note: sslTrust is the same as mailServerHost
# sslTrust="smtp.exmail.qq.com"
# 业务用到的比如sql等资源文件上传到哪里,可以设置:HDFS,S3,NONE,单机如果想使用本地文件系统,请配置为HDFS,因为HDFS支持本地文件系统;如果不需要资源上传功能请选择NONE。强调一点:使用本地文件系统不需要部署hadoop
resourceStorageType="HDFS"
# 这里以保存到本地文件系统为例
#注:但是如果你想上传到HDFS的话,NameNode启用了HA,则需要将hadoop的配置文件core-site.xml和hdfs-site.xml放到conf目录下,本例即是放到/opt/dolphinscheduler/conf下面,并配置namenode cluster名称;如果NameNode不是HA,则修改为具体的ip或者主机名即可
defaultFS="hdfs://node1:8020" #hdfs://{具体的ip/主机名}:8020
# 如果没有使用到Yarn,保持以下默认值即可;如果ResourceManager是HA,则配置为ResourceManager节点的主备ip或者hostname,比如"192.168.xx.xx,192.168.xx.xx";如果是单ResourceManager请配置yarnHaIps=""即可
# yarnHaIps="192.168.xx.xx,192.168.xx.xx"
# 如果ResourceManager是HA或者没有使用到Yarn保持默认值即可;如果是单ResourceManager,请配置真实的ResourceManager主机名或者ip
singleYarnIp="node1"
# 资源上传根路径,支持HDFS和S3,由于hdfs支持本地文件系统,需要确保本地文件夹存在且有读写权限
resourceUploadPath="/dolphinscheduler"
# 具备权限创建resourceUploadPath的用户
# hdfsRootUser="hdfs"
# 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 服务端口(默认)
apiServerPort="12345"
#在哪些机器上部署DS服务,本机选localhost
ips="node1,node2,node3"
#ssh端口,默认22
sshPort="22"
#master服务部署在哪台机器上
masters="node1,node2"
#worker服务部署在哪台机器上,并指定此worker属于哪一个worker组,下面示例的default即为组名
workers="node3"
#报警服务部署在哪台机器上
alertServer="node3"
#后端api服务部署在在哪台机器上
apiServers="node1"
③ 修改 application-api.properties
配置文件(看下就行,没什么要改的)
server.port=12345
server.servlet.session.timeout=7200
server.servlet.context-path=/dolphinscheduler/
spring.servlet.multipart.max-file-size=1024MB
spring.servlet.multipart.max-request-size=1024MB
server.compression.enabled=true
server.compression.mime-types=text/html,text/xml,text/plain,text/css,text/javascript,application/javascript,application/json,application/xml
# post content
server.jetty.max-http-post-size=5000000
spring.messages.encoding=UTF-8
#i18n classpath folder , file prefix messages, if have many files, use "," seperator
spring.messages.basename=i18n/messages
# Authentication types (supported types: PASSWORD)
security.authentication.type=PASSWORD
一键部署
① 一键部署
注意:在执行前最好备份下配置好的文件目录
# 备份
cd /opt/server/dolphinscheduler
tar -cvf dolphinscheduler.tar.gz ./dolphinscheduler
# 在 node3 执行
cd /opt/server/dolphinscheduler
sh install.sh
② 检查目录是否完整
注意:如果发生如下报错,说明 node3 给 node1 和 node2 分发文件成功,但是node 3 自己的文件缺失,按照如下步骤执行
cd /opt/server
rm -rf dolphinscheduler
tar -xvf dolphinscheduler.tar.gz
③ 启动
# 在任意一台上执行即可
# 一次性启动整个集群
cd /opt/server/dolphinscheduler
sh ./bin/start-all.sh
④ 查看进程
# 查看进程
jps
⑤ 登陆
http://node1:12345/dolphinscheduler
用户名:admin
密码:dolphinscheduler123
⑥ 集群的其它操作命令
# 停止整个集群
cd /opt/server/dolphinscheduler
sh ./bin/stop-all.sh
# 启动/停止 单个服务
cd /opt/server/dolphinscheduler
sh ./bin/dolphinscheduler-daemon.sh start master-server
sh ./bin/dolphinscheduler-daemon.sh stop master-server
sh ./bin/dolphinscheduler-daemon.sh start worker-server
sh ./bin/dolphinscheduler-daemon.sh stop worker-server
sh ./bin/dolphinscheduler-daemon.sh start api-server
sh ./bin/dolphinscheduler-daemon.sh stop api-server
sh ./bin/dolphinscheduler-daemon.sh start logger-server
sh ./bin/dolphinscheduler-daemon.sh stop logger-server
sh ./bin/dolphinscheduler-daemon.sh start alert-server
sh ./bin/dolphinscheduler-daemon.sh stop alert-server