1、为什么选用apachedolphinscheduler

轻松管理复杂任务工程
支持项目和跨工作流程任务依赖
支持Kill、暂停和恢复操作
任务支持租户、Worker分组组和环境隔离运行
每个任务可以修改输出参数,并将其传递给后续任务

在一分钟创建你的工作流程
通过拖拉拽的工作创建方式提高效率
支持Python、Yaml和Open Api方式生成工作
支持将一个工作流作为另一个工作流的子流程执行

并发、高吞吐量、低延迟稳定执行百万个量级任务
多Master、多Worker设计
自动缓存任务队列中的任务,以避免任务过多时服务器堵塞
Master和Worker支持在线离线状态

强大的数据回填和工作流版本控制
根据计划时间特殊日期范围特殊日期列表批量执行任务
串行并行模式批量运行任务
在不影响工作流模板的情况下,工作流实例支持修改回滚和重新运行
 

2、四大特性

可靠性
中心化的多Master和多Worker服务对等架构, 避免单Master压力过大,另外采用任务缓冲队列来避免过载

简单易用
DAG监控界面,所有流程定义都是可视化,通过拖拽任务完成定制DAG,通过API方式第三方系统集成, 一键部署

丰富的使用场景
支持多租户,支持暂停恢复操作. 紧密贴合大数据生态,提供Spark, Hive, M/R, Python, Sub_process, Shell等近20种任务类型

扩展性
支持自定义任务类型调度器使用分布式调度调度能力随集群线性增长,Master和Worker支持动态上下线

3、功能

以DAG图的方式将Task按照任务的依赖关系关联起来,可实时可视化监控任务的运行状态
支持丰富的任务类型:Shell、MR、Spark、SQL(mysqlpostgresqlhivesparksql),Python,Sub_Process、Procedure
支持工作流定时调度依赖调度、手动调度、手动暂停/停止/恢复,同时支持失败重试/告警、从指定节点恢复失败、Kill任务等操作
支持工作流优先级、任务优先级及任务的故障转移及任务超时告警/失败
支持工作流全局参数节点自定义参数设置
支持资源文件在线上传/下载管理等,支持在线文件创建编辑
支持任务日志在线查看滚动、在线下载日志
实现集群HA,通过Zookeeper实现Master集群和Worker集群中心化
支持对Master/Worker cpu loadmemorycpu在线查看
支持工作流运行历史树形/甘特图展示、支持任务状态统计流程状态统计
支持补数
支持多租户
支持国际化

4、地址

官网地址https://dolphinscheduler.apache.org/zh-cn

源码地址https://gitee.com/caoes/DolphinScheduler/

5、环境准备

配置主机名关闭SELINUX、关闭防火墙安装jdk安装mysql数据库、安装zookeeper,这些步骤请参考我之前的文章

Cloudera Manager6.3.2详细安装教程,部署使用手册-CSDN博客

linux centos下载安装mysql详细教程(5.6.41和5.7.25)_linux版mysql5.6下载-CSDN博客

mysql配置详解(端口号、连接数、数据和日志目录)-CSDN博客

这里不一一赘述

6、集群部署

解压安装包

[root@ennhadoopcm easyScheduler]$ tar -zxvf apachedolphinscheduler-3.2.0-bin.tar.gz

创建dolphinscheduler用户

[root@ennhadoopcm easyScheduler]$ useradd dolphinscheduler

设置dolphinscheduler用户密码

[root@ennhadoop-cm easyScheduler]$ echo “这里写dolphinscheduler用户的密码” | passwdstdin dolphinscheduler

给dolphinscheduler用户配置sudo免密权限

[root@ennhadoop-cm easyScheduler]$ sedi ‘$adolphinscheduler  ALL=(ALL)  NOPASSWD: NOPASSWD: ALL’ /etc/sudoers

[root@ennhadoop-cm easyScheduler]$ sed -i ‘s/Defaults    requirett/#Defaults    requirett/g‘ /etc/sudoers

修改目录权限

[root@ennhadoop-cm easyScheduler]$ chown -R dolphinscheduler:dolphinscheduleapache-dolphinscheduler-3.2.0-bin/

切换到dolphinscheduler用户

[root@ennhadoop-cm easyScheduler]$ su – dolphinscheduler

对dolphinscheduler用户配置ssh免密

输入命令,按三次回车生成密钥

[dolphinscheduler@ennhadoop-cm easyScheduler]$ sshkeygen -t rsa

分发到其他四台服务器

[dolphinscheduler@ennhadoop-cm easyScheduler]$ sshcopyid ennhadoopmysqlserve

[dolphinscheduler@enn-hadoop-cm easyScheduler]$ sshcopyid enn-kafka-01

[dolphinscheduler@enn-hadoop-cm easyScheduler]$ sshcopy-id enn-kafka-02

[dolphinscheduler@enn-hadoop-cm easyScheduler]$ sshcopy-id enn-kafka-03 

修改配置文件

[dolphinscheduler@enn-hadoop-cm easyScheduler]$ cd apache-dolphinscheduler-3.2.0-bin/bin/env/

配置jdkmysqlzookeeper
[dolphinscheduler@enn-hadoop-cm env]$ vim dolphinscheduler_env.sh

配置各个服务节点

[dolphinscheduler@enn-hadoop-cm env]$ vim install_env.sh 

模块说明

master模块,提供工作流管理编排服务
worker模块,提供任务执行管理服务
alert 告警模块,提供 AlertServer 服务
api web应用模块,提供 ApiServer 服务
common 通用的常量枚举工具类、数据结构或者基类
dao 提供数据库访问操作
remote 基于 netty客户端服务端
service service模块包含Quartz、Zookeeper、日志客户端访问服务,便于server模块和api模块调用
ui UI界面模块

下载mysql连接器 mysqlconnectorjava-8.0.24.jar

分发各个模块下的libs目录

[dolphinscheduler@enn-hadoop-cm env]$ cp /data/software/mysqlconnectorjava-8.0.24.jar /data/easyScheduler/apache-dolphinscheduler-3.2.0-bin/apiserver/libs

[dolphinscheduler@enn-hadoop-cm env]$ cp /data/software/mysqlconnectorjava-8.0.24.jar /data/easyScheduler/apache-dolphinscheduler-3.2.0-bin/alertserver/libs

[dolphinscheduler@enn-hadoop-cm env]$ cp /data/software/mysqlconnectorjava-8.0.24.jar /data/easyScheduler/apache-dolphinscheduler-3.2.0-bin/master-server/libs

[dolphinscheduler@enn-hadoop-cm env]$ cp /data/software/mysqlconnectorjava-8.0.24.jar /data/easyScheduler/apache-dolphinscheduler-3.2.0-bin/workerserver/libs

[dolphinscheduler@enn-hadoop-cm env]$ cp /data/software/mysqlconnectorjava-8.0.24.jar /data/easyScheduler/apache-dolphinscheduler-3.2.0-bin/tools/libs

连接mysql初始化dolphinscheduler数据库

[dolphinscheduler@enn-hadoop-cm env]$ mysql -uroot -p

创建数据库

mysql> CREATE DATABASE dolphinscheduler DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;

设置数据库权限

mysql> GRANT ALL PRIVILEGES ON dolphinscheduler.* TO ‘dolphinscheduler’@’%’;

立即生效

mysql> FLUSH PRIVILEGES;

mysql> exit;

[dolphinscheduler@enn-hadoop-cm env]$ cd /data/easyScheduler/apache-dolphinscheduler-3.2.0-bin/tools/bin

初始化dolphinscheduler数据库生成dolphinscheduler所需要的各种表。

[dolphinscheduler@enn-hadoop-cm bin] bash  upgradeschema.sh

查看生成的表

[dolphinscheduler@enn-hadoop-cm bin]$ mysql -uroot -p

mysql> use dolphinscheduler;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Database changed
mysql> show tables;
+—————————————-+
| Tables_in_dolphinscheduler             |
+—————————————-+
| QRTZ_BLOB_TRIGGERS                     |
| QRTZ_CALENDARS                         |
| QRTZ_CRON_TRIGGERS                     |
| QRTZ_FIRED_TRIGGERS                    |
| QRTZ_JOB_DETAILS                       |
| QRTZ_LOCKS                             |
| QRTZ_PAUSED_TRIGGER_GRPS               |
| QRTZ_SCHEDULER_STATE                   |
| QRTZ_SIMPLE_TRIGGERS                   |
| QRTZ_SIMPROP_TRIGGERS                  |
| QRTZ_TRIGGERS                          |
| t_ds_access_token                      |
| t_ds_alert                             |
| t_ds_alert_plugin_instance             |
| t_ds_alert_send_status                 |
| t_ds_alertgroup                        |
| t_ds_audit_log                         |
| t_ds_cluster                           |
| t_ds_command                           |
| t_ds_datasource                        |
| t_ds_dq_comparison_type                |
| t_ds_dq_execute_result                 |
| t_ds_dq_rule                           |
| t_ds_dq_rule_execute_sql               |
| t_ds_dq_rule_input_entry               |
| t_ds_dq_task_statistics_value          |
| t_ds_environment                       |
| t_ds_environment_worker_group_relation |
| t_ds_error_command                     |
| t_ds_fav_task                          |
| t_ds_k8s                               |
| t_ds_k8s_namespace                     |
| t_ds_plugin_define                     |
| t_ds_process_definition                |
| t_ds_process_definition_log            |
| t_ds_process_instance                  |
| t_ds_process_task_relation             |
| t_ds_process_task_relation_log         |
| t_ds_project                           |
| t_ds_project_parameter                 |
| t_ds_project_preference                |
| t_ds_queue                             |
| t_ds_relation_datasource_user          |
| t_ds_relation_namespace_user           |
| t_ds_relation_process_instance         |
| t_ds_relation_project_user             |
| t_ds_relation_resources_user           |
| t_ds_relation_rule_execute_sql         |
| t_ds_relation_rule_input_entry         |
| t_ds_relation_sub_workflow             |
| t_ds_relation_udfs_user                |
| t_ds_resources                         |
| t_ds_schedules                         |
| t_ds_session                           |
| t_ds_task_definition                   |
| t_ds_task_definition_log               |
| t_ds_task_group                        |
| t_ds_task_group_queue                  |
| t_ds_task_instance                     |
| t_ds_tenant                            |
| t_ds_trigger_relation                  |
| t_ds_udfs                              |
| t_ds_user                              |
| t_ds_version                           |
| t_ds_worker_group                      |
+—————————————-+
65 rows in set (0.00 sec)
 

查看dolphinscheduler版本

mysql> select * from t_ds_version;
+—-+———+
| id | version |
+—-+———+
|  1 | 3.2.0   |
+—-+———+
1 row in set (0.00 sec)
mysql> exit;

修改dolphinscheduler的ui端口号

[dolphinscheduler@enn-hadoop-cm env]$ cd /data/easyScheduler/apache-dolphinscheduler-3.2.0-bin/apiserver/conf

[dolphinscheduler@enn-hadoop-cm env]$ vim application.yaml

默认的12345改为其他的

执行安装部署dolphinscheduler命令

[dolphinscheduler@enn-hadoop-cm env]$ cd /data/easyScheduler/apache-dolphinscheduler-3.2.0-bin/bin/

[dolphinscheduler@enn-hadoop-cm env]$ sh ./install.sh

这个步骤会将cm服务器下的apache-dolphinscheduler-3.2.0-bin目录分发到其他四台服务器

安装完成之后,可以看到五台服务器角色

1.dolphinscheduler server node config hosts:[  enn-hadoop-cm,enn-hadoop-mysql-server,enn-kafka-01  ]
2.master server node config hosts:[  enn-hadoop-cm,enn-hadoop-mysql-server,enn-kafka-01,enn-kafka-02,enn-kafka-03  ]
3.worker server node config hosts:[  enn-hadoop-cm:default,enn-hadoop-mysql-server:default,enn-kafka-01:default  ]
4.alert server node config hosts:[  enn-hadoop-mysql-server  ]
5.api server node config hosts:[  enn-hadoop-mysql-server  ]

访问ui地址默认地址

http://ip地址:刚刚配置的端口号/dolphinscheduler/ui

7、需要注意的问题

由于cdh收费免费版本只能安装到cdh6.3.2,而安装这个版本cdh默认zookeeper是3.4.5,而我们安装的dolphinscheduler3.2.0,最开始启动安装部署的时候报错,要求的zookeeper的版本是3.8.0。市面上可以下载到3.8.1并且是chd版本的zookeeperjar包,为:zookeeper-3.8.1.7.1.9.0-387.jar。但是实测之后,zookeeper无法启动。除了3.8.1之外,就只能用3.5.5,经过测试之后,zookeeper正常启动。运行dolphinscheduler的安装部署,也正常启动。经实测,dolphinscheduler功能正常。但是关于版本一致性问题,实在是比较棘手的。

在此列一下CDH支持的组件版本对照关系:

个人感觉cdh6.3.2可能不支持zookeeper3.8.0及以上版本,因为Apache ZooKeeper 3.4.10之前版本、3.5.0-alpha版本至3.5.5-beta版本,在身份验证/授权检测实现存在安全漏洞,可使任意端点加入群集,修改内容。而在3.8.0之后,官方补上了这个漏洞,所以不能随意添加到CDH6.3.2,强行添加,会报错,不能识别zookeeper。

各位大佬,如果有好的解决办法,欢迎留言指教。

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注