Apache DolphinScheduler系列1-单节点部署及测试报告

文章目录

摘要: Apache DolphinScheduler系列1-单节点部署及测试报告

关键词: Apache DolphinScheduler、单节点部署、测试报告

整体说明

从部署环境的简介,到部署方案的介绍,以及实际的部署步骤,到解决具体的常见问题,最后给出简单的测试报告,简单图示如下:

一、部署环境

  • Java版本: 1.8.0_181

  • 操作系统: CentOS Linux release 7.6.1810

  • MySQL库版本: 5.7.22-22-log

  • MySQL驱动程序版本: 8.0.16

二、版本号

三、部署方案

  • 平台只做数据质量监控告警发送不存在高并发相关需求场景,所以采用单机部署

  • 因为该系统需要持续使用,所以要采用配置外部数据库

四、部署步骤

官网部署步骤地址:https://dolphinscheduler.apache.org/zh-cn/docs/3.2.0/guide/installation/standalone

4.1、上传部署包

上传程序到服务目录,apache-dolphinscheduler-3.2.0-bin.tar.gz

解压文件:

shell 复制代码
tar -xvzf apache-dolphinscheduler-3.2.0-bin.tar.gz

4.2、创建外部数据库

创建外部数据库实例、账号,并对账号授权库的全部权限;

备注说明: 其中 user 和 passwd 为自己安装好的数据库的用户名和密码

sql 复制代码
mysql-uroot --p
mysql>CREATE DATABASE dolphinscheduler DEFAULT CHARACTER SET utf8 DEFAULTCOLLATE utf8_general_ci;
mysql>GRANT ALL PRIVILEGES ON dolphinscheduler.* TO '{user}'@'%' IDENTIFIEDBY '{password}';
mysql>GRANT ALL PRIVILEGES ON dolphinscheduler.* TO '{user}'@'localhost'IDENTIFIED BY '{password}';
mysql>flush privileges;

4.3、修改元数据库配置

配置系统的元数据库,使用MySQL存储相关数据,以便持久化使用。需要修改以下配置

主程序运行的脚本程序,

存储位置 .../apache-dolphinscheduler-3.2.0-bin/bin/env/dolphinscheduler_env.sh

备注说明: 修改其中 ip 地址、端口、数据库用户名、密码

特别注意: ${DATABASE} 不需要修改

shell 复制代码
export DATABASE=mysql
export SPRING_PROFILES_ACTIVE=${DATABASE}
export SPRING_DATASOURCE_URL="jdbc:mysql://xxx.xxx.xxx.xxx:23306/dolphinscheduler?useUnicode=true&characterEncoding=UTF-8&useSSL=false&allowPublicKeyRetrieval=true"
export SPRING_DATASOURCE_USERNAME=dolphinscheduler
export SPRING_DATASOURCE_PASSWORD=xxxxxxxxx

4.4、上传MySQLl驱动程序

上传MySQLl驱动程序到如下目录

shell 复制代码
../apache-dolphinscheduler-3.2.0-bin/standalone-server/libs/standalone-server
../apache-dolphinscheduler-3.2.0-bin/api-server/libs
../apache-dolphinscheduler-3.2.0-bin/alert-server/libs
../apache-dolphinscheduler-3.2.0-bin/master-server/libs
../apache-dolphinscheduler-3.2.0-bin/tools/libs
../apache-dolphinscheduler-3.2.0-bin/worker-server/libs

4.5、初始化外部数据库

shell 复制代码
sh ../apache-dolphinscheduler-3.2.0-bin/tools/bin/upgrade-schema.sh

4.6、启停服务

启动单节点

shell 复制代码
sh ../apache-dolphinscheduler-3.2.0-bin/bin/dolphinscheduler-daemon.shstart standalone-server

查看节点状态

shell 复制代码
sh ../apache-dolphinscheduler-3.2.0-bin/bin/dolphinscheduler-daemon.shstatus standalone-server

停止单节点

shell 复制代码
sh ../apache-dolphinscheduler-3.2.0-bin/bin/dolphinscheduler-daemon.shstop standalone-server

4.7、访问页面

http://xxx.xx.xx.xxx:12345/dolphinscheduler

默认账号密码:admin/dolphinscheduler123

五、常见问题及解决方式

5.1、时间不一致

  • 现象: 创建任务后,页面上显示的时间与实际时间不一致。
  • 解决方案: 登录之后右上角选择上海时区,不然任务创建时间、更新时间显示不正确。

5.2、异常终止

  • 现象: 当 standalone-server 因异常(高负载、kill)等终止后,重新启动后,工作流实例中有大量任务处于"执行"状态,无法删除。
  • 解决方案1: 先下线工作流定义,然后重新启动 standalone-server 服务即可。原因为初次进程异常后,未来的调度计划已提交,导致重新启动 standalone-server 服务后,会追溯过去将来态的任务,当调度计划太多,就会整体僵死。以上为临时处理方式,并非彻底解决措施。

  • 解决方案2: 如果处理1依然不可解决,尝试清空 t_ds_task_instance(任务执行记录)、t_ds_process_instance(工作量执行记录)两张表数据,或者删除指定记录行。

5.3、大量日志

  • 现象: dolphinscheduler 运行过程中会生成大量日志

  • 解决方案: 使用 standalone-server 模式启动后,日志会记录在 standalone-server/logs 目录下,需要定期自动化删除,可写一些运维脚本删除。

5.4、数据源中心连接Hive失败

  • 现象: 注册时 报错信息
shell 复制代码
Required field 'client_protocol' is unset! Struct:TOpenSessionReq(client_pro
  • 原因分析: 是因为dolphinscheduler使用hive jdbc的版本和我们使用的HDP的hive版本不一致,

  • 解决方案: 替换驱动程序到如下目录

  1. 把原有的hive jdbc 备份
shell 复制代码
mv  ../apache-dolphinscheduler-3.2.0-bin/api-server/libs/hive-jdbc-2.3.9.jar   ../apache-dolphinscheduler-3.2.0-bin/api-server/libs/hive-jdbc-2.3.9.jar.bak
mv  ../apache-dolphinscheduler-3.2.0-bin/worker-server/libs/hive-jdbc-2.3.9.jar   ../apache-dolphinscheduler-3.2.0-bin/worker-server/libs/hive-jdbc-2.3.9.jar.bak
  1. 上传你的集群Hive 对应的JDBC 版本Jar包,到上面两个路径,对应的Jar包可以在Hive集群上搜索

5.5、SQL脚本使用Hive UDF

  • 现象: 当使用SQL脚本模块 且 使用已经注册号的Hive UDF, 报错信息
shell 复制代码
[ERROR] 2024-02-23 15:36:07.355 +0800 - execute sql error: Error while  compiling statement: FAILED: ParseException line 1:18 missing KW_VIEW at 'temporary' near 'replace' in table name
  • 原因分析:
    • Hive的SQL新建临时函数的语句 不支持 create or replace
    • 因为 dolphinscheduler 版本遗留BUG,没写对这个SQL
  • 解决方案: 修改源码中的语法,并替换对应Jar 包
  1. 把原有的hive jdbc 备份
shell 复制代码
mv  ../apache-dolphinscheduler-3.2.0-bin/api-server/libs/dolphinscheduler-task-sql-3.2.0.jar   ../apache-dolphinscheduler-3.2.0-bin/api-server/libs/dolphinscheduler-task-sql-3.2.0.jar.bak
mv  ../apache-dolphinscheduler-3.2.0-bin/worker-server/libs/dolphinscheduler-task-sql-3.2.0.jar   ../apache-dolphinscheduler-3.2.0-bin/worker-server/libs/dolphinscheduler-task-sql-3.2.0.jar.bak
mv  ../apache-dolphinscheduler-3.2.0-bin/master-server/libs/dolphinscheduler-task-sql-3.2.0.jar   ../apache-dolphinscheduler-3.2.0-bin/master-server/libs/dolphinscheduler-task-sql-3.2.0.jar.bak
  1. 上传jdbc包到上面两个路径

六、测试报告

6.1、 测试结论

当前发布版本为:3.2.0。

3.2.0版本,完成功能、兼容、安全测试,测试通过,可发布上线

序号 功能点 评估结果 补充
1 工作流定义-数据质量:源数据类型、源数据源、源数据库、源数据表、源表过滤条件、源表检测列、源表检测列、校验操作符、阈值、失败策略、期望值类型、规则名称、部署方式、选项参数、自定义参数 通过
2 工作流实例:工作流实例名称、状态、运行类型、操作 通过
3 工作流定时:工作流名称、开始时间、结束时间、Crontab、失败策略 通过
4 任务定义:任务名称、工作流名称、工作流状态、任务类型 通过
5 任务实例:任务名称、工作流实例、执行用户、节点类型、状态 通过
6 UDF管理:资源管理、函数管理、UDF函数 通过
7 任务组管理:任务组配置、任务组队列 通过
8 质量任务结果:任务结果 通过
9 质量规则管理:规则管理 通过
10 源中心:源中心、源名称、所属用户、源类型 通过
11 告警实例管理:告警实例名称、告警插件名称 通过
12 告警组管理:告警组管理 通过

6.2、兼容性要求及评估结果

序号 兼容环境 评估结果
1 java版本:1.8.0_181操作系统:CentOSLinux release 7.6.1810mysql库版本:5.7.22-22-logmysql驱动程序版本:8.0.16 通过

6.3、性能指标及评估

场景编号 场景名称 性能指标 实际结果 结论
1 吞吐量 单位时间内系统处理的任务数量 100个任务同时运行,5分钟内完成 通过
2 响应时间 从提交任务到系统开始执行任务的时间 提交表行数校验质量任务到完成,1分钟内完成 通过
3 并发用户数 同时在线的用户数量 10个用户可同时在线使用,满足需求 通过
4 CPU使用率 系统在运行过程中占用的CPU资源 没有任务运行时,CPU使用率低于5% 通过
5 内存使用率 系统在运行过程中占用的内存资源 没有任务运行时,内存使用率低于5% 通过

6.4、安全指标及评估

6.4.1、测试指标

6.4.2、修复方法

  1. 禁用Actuator

    替换目标文件:apache-dolphinscheduler-3.2.0-bin/standalone-server/conf

  2. 禁用swagger

    增加配置文件:apache-dolphinscheduler-3.2.0-bin/standalone-server/conf

1.验证Actuator是否禁用,输入下面链接没有内容出来

http://${ip}:12345/dolphinscheduler/actuator/metrics

2.验证swagger是否禁用成功

http://${ip}:12345/dolphinscheduler/swagger-ui/index.html

6.4.3、 测试结论

漏洞修复之后,可以发布

相关推荐
闯闯桑2 天前
toDF(columns: _*) 语法
开发语言·前端·spark·scala·apache
A-刘晨阳2 天前
从全球视角到K8s落地的Apache IoTDB实战
kubernetes·apache·iotdb
管家婆客服中心2 天前
管家婆分销ERP A/V系列导出提示加载数据过大的处理方式
linux·服务器·apache
HashData酷克数据2 天前
官宣:Apache Cloudberry (Incubating) 2.0.0 发布!
数据库·开源·apache·cloudberry
XMYX-03 天前
解决 Apache/WAF SSL 证书链不完整导致的 PKIX path building failed 问题
网络协议·apache·ssl
IT·陈寒3 天前
怎么这么多 StringUtils —— Apache、Spring、Hutool 全面对比
java·spring·apache
喂完待续4 天前
【Big Data】云原生与AI时代的存储基石 Apache Ozone 的技术演进路径
云原生·架构·apache·big data·序列晋升
todoitbo5 天前
时序数据库选型指南:Apache IoTDB快速部署与实战应用
apache·时序数据库·iotdb
IDOlaoluo5 天前
apache-jmeter-5.1.1安装部署与使用教程(小白一看就会)
jmeter·apache
倔强的石头1065 天前
时序数据库选型指南:为何Apache IoTDB成为工业物联网首选
apache·时序数据库·iotdb