国产之光-海豚调度器的入门知识篇

news2024/11/27 14:35:44

目录

概念和定义

核心特性

核心组件

工作流程

环境准备

系统软件方面

硬件方面

部署方式

单机模式

伪集群模式

集群模式

基本配置

工作流定义

调度管理

定时调度

手动调度

监控告警

任务类型扩展

资源管理

权限控制


概念和定义

Apache DolphinScheduler是一个 分布式、去中心化的可视化DAG工作流任务调度系统 ,专为企业级大数据处理场景设计。它采用 DAG (Directed Acyclic Graph) 结构组织任务,有效解决了复杂的数据任务依赖关系问题。DolphinScheduler的核心优势在于其 高可靠性和可扩展性 ,支持多租户和在线资源管理,能够稳定处理每日高达10万次的数据任务。

该系统广泛应用于 数据研发ETL流程 中,特别擅长处理复杂的任务依赖关系,同时提供全面的任务监控和管理功能,如重试、恢复、暂停和终止等操作。DolphinScheduler的这些特性使其成为大数据处理领域的重要工具,尤其适合需要频繁协调大量异构任务的企业环境。

核心特性

Apache DolphinScheduler作为一个强大的大数据任务调度系统,拥有多个关键特性,使其能够在复杂的企业环境中脱颖而出。这些特性不仅体现了系统的灵活性和适应性,还展示了其在大规模数据处理方面的卓越表现:

  1. 高可靠性
    DolphinScheduler采用了 去中心化的多Master和多Worker服务对等架构 ,有效分散了单点压力,提高了整体稳定性。此外,系统内置的 原生HA任务队列 支持过载容错,进一步增强了系统的抗风险能力。这种设计使得DolphinScheduler能够应对突发的高并发场景,确保任务调度的连续性和可靠性。

  2. 简单易用
    系统的 可视化DAG界面 让用户能够直观地通过拖拽方式定义复杂的工作流,大大降低了学习成本。同时,系统的 模块化设计 使开发者能够轻松定制和维护各个功能模块,提高了系统的可维护性和可扩展性。

  3. 丰富的使用场景
    DolphinScheduler支持多种任务类型,包括Shell、MapReduce、Spark、SQL等十余种常见任务类型。这种多样性使得系统能够灵活应对各种复杂的数据处理需求。值得注意的是,系统还支持 跨语言任务的组合 ,允许在同一工作流中混合使用不同编程语言的任务,极大地提升了系统的适用性。

  4. 高扩展性
    系统的 分布式架构 设计使其能够支持每天高达10万个数据任务的稳定运行。这种高吞吐量的能力使得DolphinScheduler特别适合处理大规模数据处理任务。同时,系统的 多租户支持在线资源管理 功能进一步增强了其在企业级环境中的适应性,能够满足不同部门或项目的资源隔离和共享需求。

  5. 强大的任务管理能力
    DolphinScheduler提供了丰富的任务管理功能,包括 暂停、恢复、终止 等操作。特别是系统的 失败重试机制 ,允许用户灵活配置任务失败后的自动重试次数和间隔,显著提高了任务的成功率和系统的整体效率。这种智能化的设计大大减少了人工干预的需求,同时也增强了系统的鲁棒性。

核心组件

Apache DolphinScheduler的核心架构设计采用了 分布式无中心理念 ,这种设计有效地提高了系统的稳定性和可扩展性。系统主要由以下几个关键组件构成:

  1. MasterServer :作为任务调度的核心,负责DAG任务切分、任务提交和监控。它还监听其他MasterServer和WorkerServer的健康状态,确保系统的整体稳定性。

  2. WorkerServer :负责实际的任务执行和日志服务。它通过不断从Task Queue中领取任务,并根据任务类型调用相应的执行器来完成任务。

  3. ZooKeeper :作为集群管理和容错的关键组件,它不仅用于MasterServer和WorkerServer的注册与发现,还实现了事件监听和分布式锁功能。

  4. API接口层 :处理前端UI层的请求,统一提供RESTful API向外部提供服务。它包括工作流的创建、定义、查询、修改等操作。

  5. UI :提供丰富的可视化操作界面,用户可通过UI直观地创建、管理和监控任务。

这种架构设计使得DolphinScheduler能够有效处理复杂的任务依赖关系,同时保证了系统的高可靠性和可扩展性。通过各组件的协同工作,DolphinScheduler能够满足企业级大数据处理的各种需求。

工作流程

DolphinScheduler的任务调度和执行流程是整个系统的核心,体现了其高效、可靠的特性。这一流程主要包括以下几个关键步骤:

  1. Command分发

当用户发起一个任务执行请求时,API Server将其封装为一个Command对象,并持久化到MySQL数据库的t_ds_command表中。随后,Master Server中的MasterSchedulerBootstrap程序会定期扫描该表,根据预先分配的slot选择属于自己的Command进行处理。

  1. DAG构建与任务提交

对于每个待处理的Command,Master Server会创建一个ProcessInstance对象,并将其插入到t_ds_process_instance表中。同时,系统会生成一个包含必要上下文信息的可执行任务WorkflowExecuteRunnable,并缓存在本地的ProcessInstanceExecCacheManager中。最后,将ProcessInstance对应的WorkflowEventType.START_WORKFLOW事件发布到workflowEventQueue队列中。

  1. 任务调度与执行

WorkflowExecuteThread线程会持续轮询workflowEventQueue队列,获取新的任务事件。对于每个事件,系统会根据DAG结构进行任务拆分和排序,然后将任务提交给TaskDispatcher进行实际的调度。TaskDispatcher会检查TaskUpdateQueue是否已初始化,如果没有则先进行初始化,然后将任务封装为TaskPriority对象放入队列中。

  1. 任务执行

TaskPriorityQueueConsumer会不断轮询TaskUpdateQueue,从中取出TaskPriority对象,并通过Client调用WorkerServer的Handler进行任务处理。WorkerServer接收到任务后,会根据任务类型调用相应的Executor进行实际的任务执行。

在整个过程中,DolphinScheduler采用了高效的分布式架构和异步处理机制,确保了任务调度和执行的高性能和可靠性。系统通过ZooKeeper实现了Master和Worker的集群管理和容错,进一步增强了系统的稳定性和可扩展性。

环境准备

在开始部署DolphinScheduler之前,我们需要做好充分的环境准备工作。以下是系统所需的软硬件要求:

系统软件方面
  • 支持的操作系统包括Red Hat Enterprise Linux 7.0及以上、CentOS 7.0及以上、Oracle Enterprise Linux 7.0及以上以及Ubuntu LTS 16.04及以上版本。

  • 此外,还需要安装Java Development Kit (JDK) 1.8或更高版本,以及MySQL数据库和ZooKeeper服务。

硬件方面
  • 推荐配置至少4核CPU、8GB内存和SAS硬盘,网络方面则需要千兆网卡。

  • 对于集群部署,建议配置2至3个Master节点和多个Worker节点,以实现负载均衡和提高系统性能。

这些要求旨在确保DolphinScheduler能够平稳运行并充分发挥其性能优势。

部署方式

Apache DolphinScheduler提供了三种灵活的部署方式,以适应不同规模和需求的用户环境。这些部署方式包括单机模式、伪集群模式和集群模式,每种模式都有其特定的应用场景和优势。

单机模式

单机模式(Standalone)是最简单的部署方式,适合快速体验DolphinScheduler的基本功能。在这种模式下,所有服务都运行在一个名为StandaloneServer的单一进程中。它内置了注册中心Zookeeper和基于内存的数据库H2,因此只需配置好JDK环境,就可以一键启动DolphinScheduler。

伪集群模式

伪集群模式(Pseudo-Cluster)是一种折衷方案,在单台机器上模拟集群环境。这种模式下,master、worker、api server和logger server都在同一台机器上运行。虽然不是真正的分布式部署,但它能够更好地模拟集群行为,适合开发和测试阶段使用。

集群模式

集群模式(Cluster)是DolphinScheduler最强大和常用的部署方式。它能在多台机器上分布运行,充分利用计算资源,支持大规模任务调度。这种模式需要额外配置Zookeeper集群作为注册中心,以实现服务发现和容错功能。

无论选择哪种部署方式,DolphinScheduler都提供了完善的文档和支持,确保用户能够顺利部署并快速上手。这种多样化的部署选项使得DolphinScheduler能够适应从小型开发环境到大规模生产环境的各种需求,展现了其高度的灵活性和适应性。

基本配置

在完成DolphinScheduler的部署后,我们需要进行一些基本的配置调整以优化系统的性能和功能。以下是几个关键的配置项及其作用:

配置项

示例值

作用

data.basedir.path

/opt/dolphinscheduler

设置系统的基础目录路径

storage.type

HDFS

指定资源存储类型

fs.defaultFS

hdfs://ns:8020

配置HDFS的默认名称节点地址

yarn.resourcemanager.ha.rm.ids

bigdata1,bigdata2

配置YARNResourceManager的高可用设置

这些配置项直接影响着DolphinScheduler的资源管理和任务执行效率。合理设置这些参数可以帮助系统更好地利用底层基础设施,提升整体性能。例如,通过设置storage.type为HDFS,我们可以充分利用分布式文件系统的优势,提高大文件的处理速度和系统的可扩展性。

工作流定义

在Apache DolphinScheduler中,工作流定义是整个系统的核心功能之一。通过直观的DAG(有向无环图)界面,用户可以轻松创建和管理复杂的数据处理流程。这种可视化的操作方式大大降低了学习曲线,使得即使是非技术人员也能快速上手。

DolphinScheduler支持多种任务类型,包括但不限于:

  • Shell:执行shell命令

  • MapReduce:Hadoop MapReduce作业

  • Spark:Spark作业

  • SQL:数据库查询

  • Python:Python脚本执行

这些丰富多样的任务类型能够满足大多数数据处理场景的需求。

在定义工作流时,用户可以通过简单的拖拽操作来创建任务节点,并使用箭头连接它们以表示依赖关系。系统会自动检测循环依赖,防止出现无法执行的情况。这种直观的操作方式使得即使面对复杂的任务依赖关系,也能轻松构建出清晰明了的工作流结构。

除了基本的任务定义,DolphinScheduler还提供了高级功能来增强工作流的灵活性和可控性:

  1. 任务参数传递 :允许在任务间传递参数,实现更复杂的数据处理逻辑。

  2. 任务优先级设置 :通过设置任务的优先级,可以控制任务的执行顺序,确保关键任务得到优先执行。

  3. 任务重试机制 :支持配置任务失败后的自动重试次数和间隔,提高任务成功率。

  4. 超时设置 :可以为任务设置执行时限,超出时限可自动触发失败或警告。

这些功能共同构成了DolphinScheduler强大的工作流定义能力,使得用户能够精确控制和管理复杂的数据处理流程。通过这些特性,DolphinScheduler不仅能够满足基本的数据处理需求,还能应对各种复杂的业务场景,为企业级用户提供了一个全面而灵活的任务调度解决方案。

调度管理

在Apache DolphinScheduler中,调度管理是核心功能之一,提供了灵活多样的任务执行方式。系统支持两种主要的调度方式: 定时调度手动调度 。这两种方式结合在一起,能够满足各种复杂的数据处理需求。

定时调度

定时调度使用 Cron表达式 来定义任务的执行频率。Cron表达式是一种标准的时间格式,允许用户精确指定任务的执行周期。例如,以下Cron表达式表示每天凌晨1点执行任务:

0 1 * * *

DolphinScheduler的一个独特之处在于它支持 Cron表达式的可视化生成 。这意味着用户不必记住复杂的Cron语法,而是可以通过友好的界面选择所需的时间间隔,系统会自动生成相应的Cron表达式。这种方法大大简化了定时任务的配置过程,降低了使用门槛。

手动调度

手动调度允许用户即时启动工作流或特定的任务实例。这对于调试和临时执行任务非常有用。用户可以通过DolphinScheduler的Web界面或API接口来触发手动调度。

除了基本的调度功能,DolphinScheduler还提供了丰富的调度命令,增强了任务管理的灵活性:

  • 启动工作流 :立即执行整个工作流

  • 从当前节点开始执行 :从选定节点开始执行后续任务

  • 恢复被容错的工作流 :重新执行失败的任务

  • 恢复暂停流程 :继续执行暂停的任务

  • 从失败节点开始执行 :重新执行失败的任务及其后续任务

这些命令为用户提供了精细控制任务执行流程的能力,特别是在处理复杂的工作流时非常有用。

DolphinScheduler的调度管理功能还包括 任务优先级设置 。用户可以为工作流实例和任务实例设置优先级,系统会根据优先级决定任务的执行顺序。如果不设置优先级,默认采用先进先出的原则。这种机制使得关键任务能够得到优先执行,有助于优化资源利用率和提高整体工作效率。

监控告警

在DolphinScheduler中,监控告警功能是任务管理的核心组成部分。系统提供了 实时的任务监控和告警机制 ,允许用户及时发现和处理任务执行中的异常情况。为了实现有效的监控,DolphinScheduler集成了 邮件通知功能 ,用户可以配置接收任务状态更新的邮件。

通过DolphinScheduler的Web界面,管理员可以轻松设置 邮件服务器参数 ,包括SMTP服务器地址、端口、用户名和密码等。一旦配置完成,系统会在任务执行失败或其他预设条件触发时自动发送邮件通知。这种机制确保了任务执行状态的及时传达,提高了系统的响应能力和运维效率。通过这种方式,用户可以随时随地掌握任务执行情况,迅速采取行动解决问题,从而最大限度地减少潜在的数据处理中断风险。

任务类型扩展

在DolphinScheduler中,任务类型的扩展是一项重要功能,允许用户根据特定需求自定义任务执行逻辑。通过继承现有的任务执行器类,开发者可以轻松创建新的任务类型。系统设计采用了插件化架构,使得新任务类型的集成变得简单直观。

以Apache SeaTunnel为例,DolphinScheduler支持多种启动脚本,包括Flink和Spark引擎的不同版本。用户可以在任务参数中指定运行模型、部署方式等细节,实现灵活的任务配置。这种开放性的设计不仅增强了系统的适应性,还为用户提供了高度的定制化空间,满足了多样化的大数据处理需求。

资源管理

DolphinScheduler的资源管理功能是其核心特性之一,为用户提供了灵活的文件和UDF管理选项。系统支持多种存储类型,如HDFS、S3和OSS,用户可根据需求选择最适合的存储方式。通过配置common.properties文件,可以轻松设置存储类型和上传基础路径。这种设计不仅提高了系统的适应性,还为大规模数据处理提供了便利。特别值得一提的是,资源中心支持管理Hive SQL文件和自定义UDF函数JAR包,进一步增强了系统的灵活性和扩展性。

权限控制

在DolphinScheduler的安全管理框架中,权限控制系统扮演着至关重要的角色。该系统采用了 多租户架构 ,允许管理员为不同的团队或项目分配独立的资源和访问权限。这种设计不仅提高了系统的安全性,还增强了其在企业环境中的实用性。

权限管理的核心功能包括:

  • 用户认证:确保只有授权用户才能访问系统

  • 角色分配:基于角色的访问控制,实现精细化权限管理

  • 资源访问控制:限制用户对特定资源的访问和操作权限

通过这些功能,DolphinScheduler能够有效保护敏感数据和关键任务流程,同时为不同级别的用户提供适当的操作权限,确保系统的安全性和灵活性。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2233574.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

使用Netty实现一个简单的聊天服务器

✅作者简介:热爱Java后端开发的一名学习者,大家可以跟我一起讨论各种问题喔。 🍎个人主页:Hhzzy99 🍊个人信条:坚持就是胜利! 💞当前专栏:Netty 🥭本文内容&a…

新世联科技:NG2-A-7在DAC空气捕集提取CO2的应用

一、DAC空气捕集提取CO2的介绍 直接空气碳捕获(Direct Air Capture,简称DAC)是一种直接从大气中提取二氧化碳的技术。 二、DAC空气捕集提取CO2的前景 从大气中提取的这种二氧化碳可以作为循环经济的一部分以各种不同方式使用。未来&#xf…

ISUP协议视频平台EasyCVR视频融合平台接入各类摄像机的方法

安防视频监控ISUP协议视频平台EasyCVR兼容性强、支持灵活拓展,平台可提供视频远程监控、录像、存储与回放、视频转码、视频快照、告警、云台控制、语音对讲、平台级联等视频能力。 想要将摄像机顺利接入EasyCVR平台,实现视频监控的集中管理和分发&#x…

(五)Spark大数据开发实战:灵活运用PySpark常用DataFrame API

目录 一、PySpark 二、数据介绍 三、PySpark大数据开发实战 1、数据文件上传HDFS 2、导入模块及数据 3、数据统计与分析 ①、计算演员参演电影数 ②、依次罗列电影番位前十的演员 ③、按照番位计算演员参演电影数 ④、求每位演员所有参演电影中的最早、最晚上映时间及…

达梦数据库宕机问题分析及处理

官方宕机原因排查 官方故障诊断排除 相关概念 达梦数据库宕机往往会产生core文件,解读core文件是分析宕机原因的主要手段,类似oracle的diag.trc或system dump转储文件,记录数据库线程状态、sql语句等。 首选的排查方向可以从内存溢出、磁盘…

spring ai 入门 之 结构化输出 - 把大模型llm返回的内容转换成java bean

目录 ​编辑 将AI非结构化文本转换为特定格式数据的应用场景说明 Spring AI 介绍 :为Java开发者打造的AI应用开发框架 Qwen 介绍 : 一个国内领先的开源大模型 Spring AI Alibaba框架介绍 : 一个国内最好的spring ai实现 使用spring ai …

HbuildderX运行到手机或模拟器的Android App基座识别不到设备 mac

寻找模拟器 背景: 运行的是h5,模拟器是网易MuMu。 首先检查一下是否配置dab环境,adb version 配置一下hbuilderX的adb: 将命令输出的路径配置到hbuilderx里面去,然后重启下HbuilderX。 开始安装基座…一直安装不…

使用Docker Compose构建多容器应用

💓 博客主页:瑕疵的CSDN主页 📝 Gitee主页:瑕疵的gitee主页 ⏩ 文章专栏:《热点资讯》 使用Docker Compose构建多容器应用 引言 Docker Compose 简介 安装 Docker Compose 创建基本配置 运行多容器应用 查看服务状态 …

react-router与react-router-dom的区别

写法上的区别: 写法1: import {Swtich, Route, Router, HashHistory, Link} from react-router-dom;写法2: import {Switch, Route, Router} from react-router; import {HashHistory, Link} from react-router-dom;react-router实现了路由的核心功能 react-router-…

Python 字符串类型中 ``split(“\n“)`` 与 ``splitlines()`` 方法的一些区别

最近在以 self.__print("#" * 20 "\n") 调用自己写的 __print 接口时发现打印的时候 "\n" 没有打出来,进而发现了 split("\n") 与 splitlines() 方法的一些区别。 一个是参数上,split 需要传递一个字符串作为…

Java Iterator 实现杨辉三角

一、问题描述 杨辉三角定义如下: 1/ \1 1/ \ / \1 2 1/ \ / \ / \1 3 3 1/ \ / \ / \ / \1 4 6 4 1/ \ / \ / \ / \ / \ 1 5 10 10 5 1 把每一行看做一个list,试写一个 Iterator,不断输出下一行的 list&#xf…

Spark 的介绍与搭建:从理论到实践

目录 一、分布式的思想 (一)存储 (二)计算 二、Spark 简介 (一)发展历程 (二)Spark 能做什么? (三)spark 的组成部分 (四&…

Linux操作系统 ------(3.文本编译器Vim)

目录 1.前言 2.本章学习目标 3.vim的三种工作模式 3.1一般模式‌ 3.2编辑模式‌ 3.3命令行模式‌ 4.运行vim 5.vim 不同工作模式下的常见命令 6.一般模式下的功能键 6.1移动光标类 6.2删除、复制和粘贴类 6.3查找替换类 7.从一般模式进入编辑模式 8.命令行模式下的…

RocketMQ的消息类型

RocketMQ的消息类型 文章目录 RocketMQ的消息类型一、顺序消息二、广播消息应用场景:示例代码:实现思路:注意点: 三、延时消息应用场景:核心方法: 四、批量消息应用场景:示例代码:注…

Selective Generation for Language Models 语言模型的选择性生成

生成式语言模型(Generative Language Models, GLMs)在文本生成任务中取得了显著进展。然而,生成内容的“幻觉”现象,即生成内容与事实或真实语义不符的问题,仍是GLMs在实际应用中的一个重大挑战。为了解决这一问题&…

git clone,用https还是ssh

前言 在使用Git去克隆项目时,会遇到https和ssh等形式,这两种又有何种区别呢,本文将重点讨论在具体使用中的问题。 注:第一次使用Git 时,需要先设置全局用户名和邮箱,否则后续使用命令时会报错,也是提醒先添…

最新整理:Selenium自动化测试面试题

1.selenium中如何判断元素是否存在? find_elements查找到的元素个数为0,find_element报错意味着元素不存在 2.如何判断元素是否出现? 判断元素是否出现,存在两种情况,一种是该元素压根就没有,自然不会出现;另外一种是有这样的…

业绩代码查询实战——php

一、一级代码显示职员 foreach($data_职员信息 as $key > $value){//$where_查询分类$where_查询通用;//$dat分类one $业绩提成->where($where_查询分类)->order("CreateDate desc")->select();if($value[haschildname]0 && $value[key] !"…

如何彻底删除gitbash中所有的命令记录、以及彻底删除Windows powerShell或者cmd中的所有命令记录

文章目录 1. 文章引言2. 彻底删除gitbash中所有的命令记录3. 彻底删除Windows powerShell或者cmd中的所有命令记录1. 文章引言 有时,我们使用外部电脑从gitbash中下载代码,假设使用history -c命令: 可以清除当前弹框的历史记录,但也无法彻底删除命令记录。打开gitbash后,通…

工作管理实战指南:利用Jira、Confluence等Atlassian工具打破信息孤岛,增强团队协作【含免费指南】

如果工作场所存在超级反派,其中之一可能会被命名为“信息孤岛”,因为它们能够对公司的生产力和协作造成严重破坏。当公司决定使用太多互不关联的工具来完成工作时,“信息孤岛”就会出现,导致团队需要耗费大量时间才能就某件事情达…