赞
踩
文章原地址:http://bokexie.com/articles/62
什么是DolphonScheduler?最权威的介绍就是查看官网:DolphinScheduler官网 ,通过官网介绍,我们知道 DolphinScheduler 是一个分布式、 易扩展的可视化 DAG 工作流任务调度平台。致力于解决数据处理流程中错综复杂的依赖关系,使调度系统在数据处理流程中开箱即用。
从上图或者下图中,我们可以看出DolphinScheduler 的主要角色如下:
根据官网要求,系统版本(以CentOS为例)需要7.0版本及以上,本虚拟机为Centos7.9版本
根据官网要求,系统需要4核8G,3个阶段就是24G,本电脑内存有限,给2核6G做演示,更详细配置请查看官网
DolphinScheduler 主要分为3种部署方式,分别是单机模式(Standalone)、 伪集群模式(PseudoCluster) 、集群模式(Cluster)等。
单机模式(standalone) 模式下,所有服务均集中于一个 StandaloneServer 进程中,并且其中内置了注册中心 Zookeeper 和数据库 H2。 只需配置 JDK 环境,就可一键启动DolphinScheduler,快速体验其功能。
伪集群模式(Pseudo-Cluster) 是在单台机器部署 DolphinScheduler 各项服务,该模式下 master、 worker、 api server、 logger server 等服务都只在同一台机器上。 Zookeeper 和数据库需单独安装并进行相应配置。
集群模式(Cluster) 与伪集群模式的区别就是在多台机器部署 DolphinScheduler 各项服务,并且 Master、 Worker 等服务可配置多个 ,更详细说明请参考官网,生产多以集群方式部署,本次演示3节点集群搭建。
集群模式下,可配置多个 Master 及多个 Worker。 通常可配置 2~3 个 Master, 若干个Worker。 由于集群资源有限(本机器16G内存), 此处配置一个 Master, 三个 Worker,集群规划如下
节点名称 | IP | 角色 |
---|---|---|
zk01 | 192.168.87.201 | master worker |
zk02 | 192.168.87.202 | worker |
zk03 | 192.168.87.203 | worker |
(1)上传 DolphinScheduler 安装包到 hadoop102 节点的/root 目录下
(2)解压安装包到当前目录
tar -zxvf apache-dolphinscheduler-2.0.5-bin.tar.gz
DolphinScheduler 元数据存储在关系型数据库(MySQL)中,故需创建相应的数据库和用户。
(1) 创建数据库
create database dolphinscheduler default character set utf8 default collate utf8_general_ci;
(2) 创建用户
create user 'dolphinscheduler'@'%' identified by 'dolphinscheduler';
在高版本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;
自行去官网下载对应版本即可,我使用的是2.0.5版本的包
修改解压目录下的 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)拷贝 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/
(2)执行数据库初始化脚本
数 据 库 初 始 化 脚 本 位 于 DolphinScheduler 解 压 目 录 下 的 script 目 录 中 , 即/root/apache-dolphinscheduler-2.0.5-bin/script/。
[root@zk01 apache-dolphinscheduler-2.0.5-bin]$ script/createdolphinscheduler.sh
(1)启动 Zookeeper 集群
Zookeeper集群安装及启停止脚本请参考我之前的博客 : Zookeeper集群安装
(2)一键部署并启动 DolphinScheduler
[root@zk01 apache-dolphinscheduler-2.0.5-bin]$ ./install.sh
(3)查看 DolphinScheduler 进程
(4)访问 DolphinSchedulerUI
DolphinScheduler UI 地址为: http://zk01:12345/dolphinscheduler
用户名及密码 admin/dolphinscheduler123
登录首页如下图,界面比较简洁
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
安全中心主要有租户管理、用户管理、告警组管理、 告警实例管理、 Worker 分组管理、Yarn 队列管理、 环境管理、 令牌管理等功能。
队列是在执行 spark、 mapreduce 等程序,需要用到“队列”参数时使用的。
此处的队列对应的是 Yarn 调度器的资源队列。故队列概念只对跑在 Yarn 上的任务类型有效。此处创建出的队列,可供后续任务进行选择。需要注意的是,**在 DolphinScheduler 中创建队列,并不会影响到 Yarn 调度器的队列配置。**本机并没有启动 Hadoop 集群,因此此处不创建队列,使用默认 default 队列。
名称: DS 执行任务时可以选择的队列名称。
队列值:与名称相对应的 Yarn 调度队列的名称。
租户对应的是 Linux 的用户,用于 worker 提交作业所使用的用户。如果 linux 没有这个用户, 默认情况下会导致任务运行失败。可以通过修改 worker.properties 配置文件中参数worker.tenant.auto.create=true(默认值为 false) 实现当 linux 用户不存在时自动创建该用户。worker.tenant.auto.create=true 参数会要求 worker 可以免密运行 sudo 命令。
此处创建一个 root 租户,如下图。
租户编码:租户编码是 Linux 上的用户,唯一,不能重复。
队列:该租户提交 Yarn 任务时的默认队列。
用户对应的是 DolphinScheduler 的用户,用于登录 DolphinScheduler。 用户分管理员用户和普通用户
管理员有授权和用户管理等权限,没有创建项目和工作流定义的操作的权限。
普通用户可以创建项目和对工作流定义的创建,编辑,执行等操作。
此处创建一个普通用户 root,如下图。
用户名: DolphinScheduler 登录账户
租户:该用户关联的租户
队列:默认为租户所关联的队列。
邮件、手机号:主要用于告警通知。
告警实例与告警组用于任务运行成功或者失败之后的告警通知。 一个告警组可包含多个告警实例,一个告警实例,需选择一个告警插件,并配置相应参数,目前支持的告警插件有电子邮件、钉钉、企业微信、飞书等。
此处暂不配置,后面单独搞一章邮件告警配置案例。
一个 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 分组管理中修改,如下图所示。
本机器资源比较少,暂时不做分组处理
此处可配置 Worker 运行环境(任务运行时所需的环境变量),默认的运行环境由 Worker节点中, dolphinscheduler 安装目录下的 conf/env/dolphinscheduler_env.sh 决定。创建环境的操作如下图所示,环境创建完毕之后,就可供 Worker 运行任务时选择,此处无Hadoop环境,暂时不做处理
环境名称:用户自定义名称。
环境配置:与 dolphinscheduler_env.sh 配置格式相同。
详细描述:环境的详细描述,不能为空,否则无法创建
Worker 组:环境所属的 Worker 组。
令牌用于通过接口访问 DolphinScheduler 各项服务时的用户验证。 普通用户通过 UI 页面访问各项服务时,无需使用令牌。 若需将 DolphinScheduler 与第三方服务进行集成, 则需调用其接口,此时需使用令牌。
默认不使用管理员用户操作项目和工作流等,故需先切换到普通用户 root。
(1)admin 用户退出
(2)使用 root 用户登录
下图为工作流配置页面(点击项目名称即可进入),共三个模快,分别为工作流定义、工作流实例和任务实例。
工作流要求:工作流需包含三个 Shell 类型的任务节点,分别是 A, B, C。三个任务的依赖关系如下所示:
任务A -> 任务B -> 任务C
点击创建工作流,即可进入创建页面,将 SHELL 组件拉入工作流区域,名字为: TASK_SHELL_01,脚本内容:
echo "task 1"
sleep 3
echo "task 1 finished"
TASK_SHELL_02 TASK_SHELL_03创建方法同TASK_SHELL_01一样,然后将三个作业连线一起,如下图:
点击 保存 按钮,为工作流取个名字,这里我取的是 TASK_SHELL ,租户为 root,点击添加,如下图:
(1)上线工作流
工作流须上线之后才能执行。处于上线状态的工作流定义不可修改,如需修改, 须先下线。
(2)单次运行工作流
(1)查看所有工作流实例
点击工作流示例菜单,即可显示工作流信息,如下图:
(2)查看工作流执行状态
点击工作流名称,即可查看工作流状态,如下图:
(1)查看所有任务实例
点击任务示例菜单,即可显示所有实例信息,如下图:
(2)查看任务实例日志
点击 查看日志 按钮,即可查看该实例详细日志
日志详情:
(1)点击定时按钮
(2)配置定时规则
此处示例为每分钟执行一次
(3)定时管理
(4)定时上线
DolphinScheduler 支持对任务节点进行灵活的传参,任务节点可通过${参数名}引用参数值
不行了,电脑太卡了,先到这来,参数应用后续再补充,玩 DolphinScheduler 还是建议电脑配置高一些
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。