当前位置:   article > 正文

大数据调度DolphonScheduler

大数据调度

文章原地址:http://bokexie.com/articles/62

一、DolphonScheduler简介

1.1 DolphonScheduler概述

什么是DolphonScheduler?最权威的介绍就是查看官网:DolphinScheduler官网 ,通过官网介绍,我们知道 DolphinScheduler 是一个分布式、 易扩展的可视化 DAG 工作流任务调度平台。致力于解决数据处理流程中错综复杂的依赖关系,使调度系统在数据处理流程中开箱即用。

image.png

1.2 DolphonScheduler架构

从上图或者下图中,我们可以看出DolphinScheduler 的主要角色如下:

  1. MasterServer 采用分布式无中心设计理念, MasterServer 主要负责 DAG 任务切分、任务提交、任务监控,并同时监听其它 MasterServer 和 WorkerServer 的健康状态。
  2. WorkerServer 也采用分布式无中心设计理念, WorkerServer 主要负责任务的执行和提供日志服务。
  3. ZooKeeper 服务,系统中的 MasterServer 和 WorkerServer 节点都通过 ZooKeeper 来进行集群管理和容错。
  4. Alert 服务, 提供告警相关服务。
  5. API 接口层,主要负责处理前端 UI 层的请求。
  6. UI, 系统的前端页面,提供系统的各种可视化操作界面。

image.png

二、DolphinScheduler 部署说明

2.1 软硬件环境要求

2.1.1 操作系统版本要求

根据官网要求,系统版本(以CentOS为例)需要7.0版本及以上,本虚拟机为Centos7.9版本

2.1.2 服务硬件要求

根据官网要求,系统需要4核8G,3个阶段就是24G,本电脑内存有限,给2核6G做演示,更详细配置请查看官网

image.png

2.2、DolphinScheduler 部署模式

DolphinScheduler 主要分为3种部署方式,分别是单机模式(Standalone)、 伪集群模式(PseudoCluster) 、集群模式(Cluster)等。

2.2.1 单机模式

单机模式(standalone) 模式下,所有服务均集中于一个 StandaloneServer 进程中,并且其中内置了注册中心 Zookeeper 和数据库 H2。 只需配置 JDK 环境,就可一键启动DolphinScheduler,快速体验其功能。

2.2.2 伪集群模式

伪集群模式(Pseudo-Cluster) 是在单台机器部署 DolphinScheduler 各项服务,该模式下 master、 worker、 api server、 logger server 等服务都只在同一台机器上。 Zookeeper 和数据库需单独安装并进行相应配置。

2.2.3 集群模式

集群模式(Cluster) 与伪集群模式的区别就是在多台机器部署 DolphinScheduler 各项服务,并且 Master、 Worker 等服务可配置多个 ,更详细说明请参考官网,生产多以集群方式部署,本次演示3节点集群搭建。

image.png

三、DolphinScheduler 集群部署

3.1 集群规划

集群模式下,可配置多个 Master 及多个 Worker。 通常可配置 2~3 个 Master, 若干个Worker。 由于集群资源有限(本机器16G内存), 此处配置一个 Master, 三个 Worker,集群规划如下

节点名称IP角色
zk01192.168.87.201master worker
zk02192.168.87.202worker
zk03192.168.87.203worker

3.2 前置准备工作

  1. 三台节点均需部署 JDK(1.8+), 并配置相关环境变量。
  2. 需部署数据库,支持 MySQL(5.7+)
  3. 需部署 Zookeeper(3.6.3+) 。
  4. 三台节点均需安装进程树分析工具 psmisc。

image.png

3.3 解压 DolphinScheduler 安装包

(1)上传 DolphinScheduler 安装包到 hadoop102 节点的/root 目录下

(2)解压安装包到当前目录

tar -zxvf apache-dolphinscheduler-2.0.5-bin.tar.gz 
  • 1

3.4 创建元数据库及用户

DolphinScheduler 元数据存储在关系型数据库(MySQL)中,故需创建相应的数据库和用户。
(1) 创建数据库

create database dolphinscheduler default character set utf8 default collate utf8_general_ci;
  • 1

(2) 创建用户

create user 'dolphinscheduler'@'%' identified by 'dolphinscheduler';
  • 1

在高版本MySQL中,可能会报如下错误,说密码太简单,是由于高版本密码级别较高,设置低一级即可

Your password does not satisfy the current policy requirements

set global validate_password_policy=0;
set global validate_password_length=4;
grant all privileges on dolphinscheduler.* to 'dolphinscheduler'@'%';
flush privileges;
  • 1
  • 2
  • 3
  • 4

3.5 配置一键部署脚本

自行去官网下载对应版本即可,我使用的是2.0.5版本的包

image.png

修改解压目录下的 conf/config 目录下的 install_config.conf 文件。 我的机器配置如下,可以参考着配置

# Example for hostnames: ips="ds1,ds2,ds3,ds4,ds5", Example for IPs: ips="192.168.8.1,192.168.8.2,192.168.8.3,192.168.8.4,192.168.8.5"
ips="zk01,zk02,zk03"

# Port of SSH protocol, default value is 22. For now we only support same port in all `ips` machine
# modify it if you use different ssh port
sshPort="22"

# A comma separated list of machine hostname or IP would be installed Master server, it
# must be a subset of configuration `ips`.
# Example for hostnames: masters="ds1,ds2", Example for IPs: masters="192.168.8.1,192.168.8.2"
masters="zk01"

# A comma separated list of machine <hostname>:<workerGroup> or <IP>:<workerGroup>.All hostname or IP must be a
# subset of configuration `ips`, And workerGroup have default value as `default`, but we recommend you declare behind the hosts
# Example for hostnames: workers="ds1:default,ds2:default,ds3:default", Example for IPs: workers="192.168.8.1:default,192.168.8.2:default,192.168.8.3:default"
workers="zk01:default,zk02:default,zk03:default"

# A comma separated list of machine hostname or IP would be installed Alert server, it
# must be a subset of configuration `ips`.
# Example for hostname: alertServer="ds3", Example for IP: alertServer="192.168.8.3"
alertServer="zk01"

# A comma separated list of machine hostname or IP would be installed API server, it
# must be a subset of configuration `ips`.
# Example for hostname: apiServers="ds1", Example for IP: apiServers="192.168.8.1"
apiServers="zk01"

# A comma separated list of machine hostname or IP would be installed Python gateway server, it
# must be a subset of configuration `ips`.
# Example for hostname: pythonGatewayServers="ds1", Example for IP: pythonGatewayServers="192.168.8.1"
pythonGatewayServers="192.168.87.2"

# The directory to install DolphinScheduler for all machine we config above. It will automatically be created by `install.sh` script if not exists.
# Do not set this configuration same as the current path (pwd)
installPath="/apps/dolphinscheduler"

# The user to deploy DolphinScheduler for all machine we config above. For now user must create by yourself before running `install.sh`
# script. The user needs to have sudo privileges and permissions to operate hdfs. If hdfs is enabled than the root directory needs
# to be created by this user
deployUser="root"

# The directory to store local data for all machine we config above. Make sure user `deployUser` have permissions to read and write this directory.
dataBasedirPath="/tmp/dolphinscheduler"

# JAVA_HOME, we recommend use same JAVA_HOME in all machine you going to install DolphinScheduler
# and this configuration only support one parameter so far.
javaHome="/usr/java/jdk1.8.0_261-amd64"

# DolphinScheduler API service port, also this is your DolphinScheduler UI component's URL port, default value is 12345
apiServerPort="12345"

# The type for the metadata database
# Supported values: ``postgresql``, ``mysql`, `h2``.
DATABASE_TYPE="mysql"

# Spring datasource url, following <HOST>:<PORT>/<database>?<parameter> format, If you using mysql, you could use jdbc
# string jdbc:mysql://127.0.0.1:3306/dolphinscheduler?useUnicode=true&characterEncoding=UTF-8 as example
SPRING_DATASOURCE_URL="jdbc:mysql://192.168.87.201:3306/dolphinscheduler?useUnicode=true&characterEncoding=UTF-8"

# Spring datasource username
SPRING_DATASOURCE_USERNAME="dolphinscheduler"

# Spring datasource password
SPRING_DATASOURCE_PASSWORD="dolphinscheduler"

# Registry Server plugin name, should be a substring of `registryPluginDir`, DolphinScheduler use this for verifying configuration consistency
registryPluginName="zookeeper"

# Registry Server address.
registryServers="zk01:2181,zk02:2181,zk03:2181"

# Registry Namespace
registryNamespace="dolphinscheduler"

# Worker Task Server plugin dir. DolphinScheduler will find and load the worker task plugin jar package from this dir.
taskPluginDir="lib/plugin/task"

# resource storage type: HDFS, S3, NONE
resourceStorageType="HDFS"

# resource store on HDFS/S3 path, resource file will store to this hdfs path, self configuration, please make sure the directory exists on hdfs and has read write permissions. "/dolphinscheduler" is recommended
resourceUploadPath="/dolphinscheduler"

# 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
defaultFS="hdfs://zk01:9000"

# resourcemanager port, the default value is 8088 if not specified
resourceManagerHttpAddressPort="8088"

# if resourcemanager HA is enabled, please set the HA IPs; if resourcemanager is single node, keep this value empty
yarnHaIps="192.168.xx.xx,192.168.xx.xx"

# if resourcemanager HA is enabled or not use resourcemanager, please keep the default value; If resourcemanager is single node, you only need to replace 'yarnIp1' to actual resourcemanager hostname
singleYarnIp="zk03"

# who has permission to create directory under HDFS/S3 root path
# Note: if kerberos is enabled, please config hdfsRootUser=
hdfsRootUser="root"

# use sudo or not
sudoEnable="true"

# worker tenant auto create
workerTenantAutoCreate="false"
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66
  • 67
  • 68
  • 69
  • 70
  • 71
  • 72
  • 73
  • 74
  • 75
  • 76
  • 77
  • 78
  • 79
  • 80
  • 81
  • 82
  • 83
  • 84
  • 85
  • 86
  • 87
  • 88
  • 89
  • 90
  • 91
  • 92
  • 93
  • 94
  • 95
  • 96
  • 97
  • 98
  • 99
  • 100
  • 101
  • 102
  • 103
  • 104
  • 105
  • 106

3.6 初始化数据库

(1)拷贝 MySQL 驱动到 DolphinScheduler 的解压目录下的 lib 中,要求使用 MySQL JDBC Driver 8.0.16。

[root@zk01 apache-dolphinscheduler-2.0.5-bin]$ cp /root/mysql-connector-java-8.0.16.jar lib/
  • 1

(2)执行数据库初始化脚本
数 据 库 初 始 化 脚 本 位 于 DolphinScheduler 解 压 目 录 下 的 script 目 录 中 , 即/root/apache-dolphinscheduler-2.0.5-bin/script/。

[root@zk01 apache-dolphinscheduler-2.0.5-bin]$  script/createdolphinscheduler.sh
  • 1

3.7 一键部署 DolphinScheduler

(1)启动 Zookeeper 集群
Zookeeper集群安装及启停止脚本请参考我之前的博客 : Zookeeper集群安装

image.png

(2)一键部署并启动 DolphinScheduler

[root@zk01 apache-dolphinscheduler-2.0.5-bin]$  ./install.sh
  • 1

(3)查看 DolphinScheduler 进程

image.png

(4)访问 DolphinSchedulerUI
DolphinScheduler UI 地址为: http://zk01:12345/dolphinscheduler
用户名及密码 admin/dolphinscheduler123

image.png

登录首页如下图,界面比较简洁

image.png

3.8 DolphinScheduler 启停命令

DolphinScheduler 的启停脚本均位于其安装目录的 bin 目录下。

# 1、一键启停所有服务
./bin/start-all.sh
./bin/stop-all.sh
# 2、启停 Master
./bin/dolphinscheduler-daemon.sh start master-server
./bin/dolphinscheduler-daemon.sh stop master-server
# 3、启停 Worker
./bin/dolphinscheduler-daemon.sh start worker-server
./bin/dolphinscheduler-daemon.sh stop worker-server
# 4、启停 Api
./bin/dolphinscheduler-daemon.sh start api-server
./bin/dolphinscheduler-daemon.sh stop api-server
# 5、启停 Logger
./bin/dolphinscheduler-daemon.sh start logger-server
./bin/dolphinscheduler-daemon.sh stop logger-server 
# 启停 Alert
./bin/dolphinscheduler-daemon.sh start alert-server
./bin/dolphinscheduler-daemon.sh stop alert-server
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18

四、DolphinScheduler 入门

4.1 安全中心配置

安全中心主要有租户管理、用户管理、告警组管理、 告警实例管理、 Worker 分组管理、Yarn 队列管理、 环境管理、 令牌管理等功能。

image.png

4.1.1 Yarn 队列管理

队列是在执行 spark、 mapreduce 等程序,需要用到“队列”参数时使用的。
此处的队列对应的是 Yarn 调度器的资源队列。故队列概念只对跑在 Yarn 上的任务类型有效。此处创建出的队列,可供后续任务进行选择。需要注意的是,**在 DolphinScheduler 中创建队列,并不会影响到 Yarn 调度器的队列配置。**本机并没有启动 Hadoop 集群,因此此处不创建队列,使用默认 default 队列。

image.png

名称: DS 执行任务时可以选择的队列名称。
队列值:与名称相对应的 Yarn 调度队列的名称。

4.1.2 租户管理

租户对应的是 Linux 的用户,用于 worker 提交作业所使用的用户。如果 linux 没有这个用户, 默认情况下会导致任务运行失败。可以通过修改 worker.properties 配置文件中参数worker.tenant.auto.create=true(默认值为 false) 实现当 linux 用户不存在时自动创建该用户。worker.tenant.auto.create=true 参数会要求 worker 可以免密运行 sudo 命令。
此处创建一个 root 租户,如下图。

image.png

租户编码:租户编码是 Linux 上的用户,唯一,不能重复。

队列:该租户提交 Yarn 任务时的默认队列。

4.1.3 用户管理

用户对应的是 DolphinScheduler 的用户,用于登录 DolphinScheduler。 用户分管理员用户和普通用户
管理员有授权和用户管理等权限,没有创建项目和工作流定义的操作的权限。
普通用户可以创建项目和对工作流定义的创建,编辑,执行等操作。
此处创建一个普通用户 root,如下图。

image.png

用户名: DolphinScheduler 登录账户

租户:该用户关联的租户

队列:默认为租户所关联的队列。

邮件、手机号:主要用于告警通知。

4.1.4 告警实例管理与告警组管理

告警实例与告警组用于任务运行成功或者失败之后的告警通知。 一个告警组可包含多个告警实例,一个告警实例,需选择一个告警插件,并配置相应参数,目前支持的告警插件有电子邮件、钉钉、企业微信、飞书等。
此处暂不配置,后面单独搞一章邮件告警配置案例。

4.1.5 Worker 分组管理

一个 Worker 分组由多个 Worker 组成。 在任务执行时, 可以将任务分配给指定 Worker组,由该组中的 Worker 节点执行该任务。 每个 Worker 至少属于一个组,默认为 default 组。Worker 所属分组可以调整,调整方式如下:

(1)方式一

打开要设置分组的 Worker 节点上的 worker.properties 配置文件, 修改 worker.groups 参数,worker.groups 参数的值为该 Worker 节点对应的分组名称,默认为 default, 如果该 worker 节点属于多个分组, 则多个分组名称以逗号隔开。 入:

worker.groups=default,test

(2)方式二

在 Web UI 的安全中心的 Workder 分组管理中修改,如下图所示。

image.png
本机器资源比较少,暂时不做分组处理

4.1.6 环境管理

此处可配置 Worker 运行环境(任务运行时所需的环境变量),默认的运行环境由 Worker节点中, dolphinscheduler 安装目录下的 conf/env/dolphinscheduler_env.sh 决定。创建环境的操作如下图所示,环境创建完毕之后,就可供 Worker 运行任务时选择,此处无Hadoop环境,暂时不做处理

image.png

环境名称:用户自定义名称。

环境配置:与 dolphinscheduler_env.sh 配置格式相同。

详细描述:环境的详细描述,不能为空,否则无法创建

Worker 组:环境所属的 Worker 组。

4.1.7 令牌管理

令牌用于通过接口访问 DolphinScheduler 各项服务时的用户验证。 普通用户通过 UI 页面访问各项服务时,无需使用令牌。 若需将 DolphinScheduler 与第三方服务进行集成, 则需调用其接口,此时需使用令牌。

image.png

4.2 项目管理

4.2.1 切换用户

默认不使用管理员用户操作项目和工作流等,故需先切换到普通用户 root。
(1)admin 用户退出

image.png

(2)使用 root 用户登录

image.png

4.2.2 创建项目

image.png

4.2.3 查看项目

image.png

4.3 工作流基础配置

下图为工作流配置页面(点击项目名称即可进入),共三个模快,分别为工作流定义、工作流实例和任务实例。

  • 工作流定义: 用于定义工作流,包括工作流各节点任务详情及各节点依赖关系等。
  • 工作流实例: 工作流每执行一次就会生成一个工作流实例。 此处可查看正在运行的工作流以及已经完成的工作流。
  • 任务实例:工作流中的一个节点任务,每执行一次就会生成一个任务实例。此处可用于查看正在执行的节点任务以及已经完成的节点任务。

image.png

4.3.1 工作流定义

工作流要求:工作流需包含三个 Shell 类型的任务节点,分别是 A, B, C。三个任务的依赖关系如下所示:

任务A -> 任务B -> 任务C

点击创建工作流,即可进入创建页面,将 SHELL 组件拉入工作流区域,名字为: TASK_SHELL_01,脚本内容:

echo "task 1"
sleep 3
echo "task 1 finished"
  • 1
  • 2
  • 3

image.png

TASK_SHELL_02 TASK_SHELL_03创建方法同TASK_SHELL_01一样,然后将三个作业连线一起,如下图:

image.png

点击 保存 按钮,为工作流取个名字,这里我取的是 TASK_SHELL ,租户为 root,点击添加,如下图:

image.png

4.3.2 执行工作流

(1)上线工作流
工作流须上线之后才能执行。处于上线状态的工作流定义不可修改,如需修改, 须先下线。

image.png

(2)单次运行工作流

image.png

4.3.3 查看工作流实例

(1)查看所有工作流实例

点击工作流示例菜单,即可显示工作流信息,如下图:

image.png

(2)查看工作流执行状态

点击工作流名称,即可查看工作流状态,如下图:

image.png

4.3.4 查看任务实例

(1)查看所有任务实例

点击任务示例菜单,即可显示所有实例信息,如下图:

image.png

(2)查看任务实例日志

点击 查看日志 按钮,即可查看该实例详细日志

image.png

日志详情:

image.png

4.3.5 定时执行工作流

(1)点击定时按钮

image.png

(2)配置定时规则

此处示例为每分钟执行一次

image.png

(3)定时管理

image.png

(4)定时上线

image.png

五、DolphinScheduler 进阶

5.1 工作流传参

5.1.1 本地参数和全局参数

DolphinScheduler 支持对任务节点进行灵活的传参,任务节点可通过${参数名}引用参数值

不行了,电脑太卡了,先到这来,参数应用后续再补充,玩 DolphinScheduler 还是建议电脑配置高一些

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小小林熬夜学编程/article/detail/323632
推荐阅读
相关标签
  

闽ICP备14008679号