海豚调度DolphinScheduler入门学习

DS简介:

     DolphinScheduler 是一款分布式的、易扩展的、高可用的数据处理平台,主要包含调度中心、元数据管理、任务编排、任务调度、任务执行和告警等模块。其技术架构基于 Spring Boot 和 Spring Cloud 技术栈,采用了分布式锁、分布式任务队列等技术确保任务高可用性。部署灵活,支持单机部署、分布式部署、容器化部署等方式。应用场景广泛,可用于大数据处理、定时任务和流程管理等领域。具有易扩展性、高可用性、多语言支持、易用性和活跃的开发社区等技术优势。支持二次开发和插件机制,可以与其他大数据处理框架无缝集成。已被阿里巴巴、腾讯、美团、京东等大型互联网公司广泛使用,市场前景广阔,未来发展可期。可为BI和AI应用提供数据支持。

一、系统架构

        

        

        DolphinScheduler 是一款分布式的、易扩展的、高可用的数据处理平台。它主要包含了调度中心、元数据管理、任务编排、任务调度、任务执行和告警等模块。

        其中,调度中心是 DolphinScheduler 的核心模块,提供了用户操作界面,支持 DAG 编排任务,同时也是任务调度的控制中心,负责任务的调度、监控和告警。元数据管理模块是         DolphinScheduler 的元数据存储引擎,负责存储和管理任务的元数据信息,以及提供元数据查询 API 接口。

        任务编排模块提供了 DAG 图编辑器,支持图形化的 DAG 编排,让任务编排更加直观。

        任务调度模块是 DolphinScheduler 的核心模块,负责任务的调度,同时也支持手动调度和定时调度。

        任务执行模块是负责执行任务的模块,支持多种不同的任务类型,包括 Hadoop、Spark、Flink 等大数据处理框架。

        告警模块是 DolphinScheduler 支持的一个重要特性,可以在任务出现异常或者发生故障时进行告警。

二、技术架构

        

        DolphinScheduler 的技术架构主要由以下几个模块组成:

  1. Master Server(调度中心): Master Server 是 DolphinScheduler 的核心模块,负责整个系统的调度和控制。它管理任务的调度逻辑,监控任务的执行情况,并负责任务的告警和监控。Master Server 采用分布式架构,能够实现横向扩展,保证了系统的高可用性和可靠性。

  2. ZooKeeper(元数据管理): DolphinScheduler 使用 ZooKeeper 作为元数据管理模块,用于存储和管理任务的元数据信息,以及提供元数据查询 API 接口。ZooKeeper 提供了分布式协调服务,用于实现分布式锁、选举等功能,保证了系统的一致性和可靠性。

  3. API Server(任务编排与调度): API Server 提供了任务编排和任务调度的接口服务,用户可以通过 API Server 提供的接口进行 DAG 编排、任务调度等操作。API Server 还负责将用户提交的任务请求转发给 Master Server 进行处理,并返回执行结果给用户。

  4. Alert Server(告警模块): Alert Server 负责系统告警功能,当任务出现异常或者发生故障时,Alert Server 会发送告警通知给相关人员或系统,以便及时处理。

  5. Worker Server(任务执行): Worker Server 负责执行任务的模块,支持多种不同的任务类型,包括 Hadoop、Spark、Flink 等大数据处理框架。Worker Server 接收来自 Master Server 的任务调度请求,执行具体的任务逻辑,并将执行结果返回给 Master Server。

        这些模块共同组成了 DolphinScheduler 的技术架构,实现了任务的调度、编排、执行和监控,保证了系统的高可用性和可靠性。

        DolphinScheduler 的技术架构采用了分布式架构,基于 Spring Boot 和 Spring Cloud 技术栈构建而成,同时还采用了一些开源技术,包括 ZooKeeper、MySQL、Redis、Elasticsearch 等。DolphinScheduler 使用了分布式锁、分布式任务队列等技术,保证了任务的高可用性和可靠性。

        DolphinScheduler 还支持多种数据源,包括 MySQL、Oracle、PostgreSQL 等关系型数据库,以及 Hadoop、Hive、Spark、Flink 等大数据处理框架。

三、部署架构

        

        DolphinScheduler 的部署架构非常灵活,支持单机部署、分布式部署、容器化部署等多种方式。在单机部署中,可以通过 Docker 镜像或者二进制包的方式进行部署;在分布式部署中,可以通过 Kubernetes 或者 Mesos 等容器编排技术进行部署。

四、应用场景

        

        DolphinScheduler 主要应用于大数据处理领域,可以支持 Hadoop、Hive、Spark、Flink 等多种数据处理框架。它可以帮助企业实现数据处理的自动化,并提高数据处理的效率和准确性。除此之外,DolphinScheduler 还可以应用于各种定时任务和流程管理。

        五、技术优势

DolphinScheduler 具有以下几个技术优势:

  1. 易扩展性:DolphinScheduler 的分布式架构可以轻松实现扩展,根据实际业务需求进行灵活配置。

  2. 高可用性:DolphinScheduler 采用了分布式锁、分布式任务队列等技术,保证了任务的高可用性和可靠性。

  3. 多语言支持:DolphinScheduler 支持多种编程语言,包括 Java、Python、Scala 等,可以方便地集成到不同的应用场景中。

  4. 易用性:DolphinScheduler 提供了友好的 Web UI 用户界面,支持图形化的 DAG 编排,让任务编排更加直观。

  5. 社区活跃度:DolphinScheduler 的开发团队十分活跃,社区贡献者众多,社区版本更新迅速,能够及时解决用户反馈的问题,并提供新的功能特性。

六、功能模块

DolphinScheduler 主要包含以下功能模块:

  1. 调度中心:提供了用户操作界面,支持 DAG 编排任务,是任务调度的控制中心,负责任务的调度、监控和告警。

  2. 元数据管理:存储和管理任务的元数据信息,提供元数据查询 API 接口。

  3. 任务编排:提供了 DAG 图编辑器,支持图形化的 DAG 编排,让任务编排更加直观。

  4. 任务调度:负责任务的调度,同时也支持手动调度和定时调度。

  5. 任务执行:负责执行任务的模块,支持多种不同的任务类型,包括 Hadoop、Spark、Flink 等大数据处理框架。

  6. 告警模块:在任务出现异常或者发生故障时进行告警。

七、部署方式

DolphinScheduler 的部署方式包括以下几种:

  1. 单机部署:可以通过 Docker 镜像或者二进制包的方式进行部署。

  2. 分布式部署:可以通过 Kubernetes 或者 Mesos 等容器编排技术进行部署。

  3. 容器化部署:支持 Docker 容器化部署,方便快捷。

八、二次开发

        DolphinScheduler 支持二次开发,用户可以根据自己的业务需求进行扩展和定制。DolphinScheduler 提供了完善的开发文档和 API 接口,方便用户进行二次开发。此外,DolphinScheduler 还提供了插件机制,用户可以根据自己的需求自定义插件,并且方便地集成到 DolphinScheduler 中。

九、集成方式

        

        DolphinScheduler 支持多种集成方式,可以与其他大数据处理框架进行无缝集成。例如,可以与 Hadoop、Hive、Spark、Flink 等数据处理框架进行集成,实现数据的自动化处理和调度。

十、社区活跃度

        DolphinScheduler 的开发团队十分活跃,社区贡献者众多,社区版本更新迅速,能够及时解决用户反馈的问题,并提供新的功能特性。此外,DolphinScheduler 还有一个非常活跃的社区,用户可以在社区中交流经验、分享资源、解决问题。

十一、哪些大公司在使用

        

        DolphinScheduler 目前已经得到了国内外很多大型互联网公司的广泛应用,包括阿里巴巴、腾讯、美团、京东、滴滴等。

十二、市场前景

        随着大数据技术的不断发展,企业对于数据处理的需求也越来越高。DolphinScheduler 作为一款分布式的、易扩展的、高可用的数据处理平台,具备很强的市场竞争力。据市场研究机构预测,未来几年大数据处理领域的市场规模将会持续扩大,DolphinScheduler 有望成为该领域的重要参与者。

十三、未来发展

        

        未来,DolphinScheduler 将继续保持活跃的开发态势,不断增加新的功能特性,提高系统的稳定性和可靠性。同时,DolphinScheduler 还将继续推进对更多数据处理框架的支持,以及更加灵活的部署方式和集成方式,为用户提供更加优秀的产品体验。

十四、BI与AI应用

        DolphinScheduler 可以作为大数据处理平台的一部分,为 BI(商业智能)和 AI(人工智能)应用提供支持。通过 DolphinScheduler,企业可以将数据处理自动化,提高数据处理效率,进而为 BI 和 AI 应用提供更加准确、可靠的数据支持。

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

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

相关文章

vue3 实现 el-pagination页面分页组件的封装以及调用

示例图 一、组件代码 <template><el-config-provider :locale"zhCn"><el-pagination background class"lj-paging" layout"prev, pager, next, jumper" :pager-count"5" :total"total":current-page"p…

深度学习基础(四)医疗影像分析实战

之前的章节我们初步介绍了卷积神经网络&#xff08;CNN&#xff09;和循环神经网络&#xff08;RNN&#xff09;&#xff1a; 深度学习基础&#xff08;三&#xff09;循环神经网络&#xff08;RNN&#xff09;-CSDN博客文章浏览阅读1.2k次&#xff0c;点赞17次&#xff0c;收…

机器学习基础(六)TensorFlow与PyTorch

导语&#xff1a;上一节我们详细探索了监督与非监督学习的结合使用。&#xff0c;详情可见&#xff1a; 机器学习基础&#xff08;五&#xff09;监督与非监督学习的结合-CSDN博客文章浏览阅读4次。将监督学习和非监督学习结合起来&#xff0c;就像将两种不同的艺术形式融合&a…

1298 - 摘花生问题

题目描述 Hello Kitty 想摘点花生送给她喜欢的米老鼠。她来到一片有网格状道路的矩形花生地(如下图)&#xff0c;从西北角进去&#xff0c;东南角出来。地里每个道路的交叉点上都有种着一株花生苗&#xff0c;上面有若干颗花生&#xff0c;经过一株花生苗就能摘走该它上面所有…

刷题第四天

代码随想录刷题第四天 | 24. 两两交换链表中的节点 19.删除链表的倒数第N个节点 面试题 02.07. 链表相交 142.环形链表II 24. 两两交换链表中的节点 有一个点学到了 while循环那里的cur->next!nullptr&&cur->next->next!nullptr 顺序不要错了 /*** Definit…

ROS下控制无人机任任意方向下往机头方向飞行

引言&#xff1a;再一些比赛或者其他应用场景下&#xff0c;无人机需要程序设置按照机头方向正前方飞行。由于ROS下采用ENU坐标系&#xff0c;PX4采用NED坐标系&#xff0c;因此我们在写程序代码的时候&#xff0c;往往需要现根据角度和距离算出X,Y坐标位置才能让无人机到达准确…

消息中间件篇之RabbitMQ-消息重复消费

一、导致重复消费的情况 1. 网络抖动。 2. 消费者挂了。 消费者消费消息后&#xff0c;当确认消息还没有发送到MQ时&#xff0c;就发生网络抖动或者消费者宕机。那当消费者恢复后&#xff0c;由于MQ没有收到消息&#xff0c;而且消费者有重试机制&#xff0c;消费者就会再一次消…

留给2024年2月26日的自己

亲爱的北航追梦人&#xff1a; 你好&#xff01; 初试成绩已经出来了&#xff0c;现在的你&#xff0c;究竟心情如何&#xff1f;可能会很失落&#xff0c;悔恨当初自己的不努力&#xff1b;可能会庆幸自己也许能够擦线进入面试&#xff0c;为了接下来繁重的面试而努力&#xf…

python print 格式化输出详解

print 输出字符串和数字 以下实例中列举了print打印各种类型的示例 示例如下, print("qayrup") # 直接输出字符串print(100) # 输出数字str qayrup print(str) # 输出变量L [1,2,a] # 输出列表类型变量 print(L) t (1,2,a…

Folx GO+ 5.27 Mac上优秀好用的下载工具

Folx Pro 5 for Mac是Mac平台上公认的最好的下载工具&#xff0c;功能可以与迅雷相媲美。目前Folx Pro 5 特别版正式上线&#xff0c;新版的Folx整体界面更加简洁漂亮&#xff0c;支持HTTP FTP下载&#xff0c;torrent种子下载&#xff0c;高速下载&#xff0c;定时下载&#x…

C语言中strstr函数的使用!

strstr函数的作用是什么&#xff1f; 查找子字符串 具体直接看下面的这段代码我相信你必明白 #define _CRT_SECURE_NO_WARNINGS 1 #include<stdio.h> int main() { char *p1 "abcdefghijklmnopqrstuvwxyz"; char* p2 "abc"; char* r…

我与软件...

从2020年毕业到现在&#xff0c;回首接触软件开发&#xff0c;接触前端已经第四个年头。说我算是科班&#xff0c;其实也就在学校学了点皮毛吧。 当初选软件专业&#xff0c;也是当年偶然认识的一个朋友推荐。刚巧年前也有机会和老大哥一起吃了顿饭。感慨时光真快啊。想想当初…

Open CASCADE学习|提取面的内外环线

在Open CASCADE中&#xff0c;区分内环和外环主要基于面的参数域内环线方向的定义。具体来说&#xff0c;在面的参数域内&#xff0c;沿着环线正方向前进时&#xff0c;如果左侧为面内、右侧为面外&#xff0c;那么该环线被视为外环&#xff1b;反之&#xff0c;如果左侧为面外…

access数据库泄露与IIS短文件名利用

access数据库 Microsoft Office Access是微软把 数据库引擎 的图形用户界面和 软件开发工具 结合在一起的一个 数据库管理系统 它的数据库是没有库名的&#xff0c;都是表名。 (借用别的up的图)是不是感觉有点像excel access数据库的后缀是.mdb access数据库泄露漏洞 如果…

PHATGOOSE:使用LoRA Experts创建低成本混合专家模型实现零样本泛化

这篇2月的新论文介绍了Post-Hoc Adaptive Tokenwise Gating Over an Ocean of Specialized Experts (PHATGOOSE)&#xff0c;这是一种通过利用一组专门的PEFT模块(如LoRA)实现零样本泛化的新方法 这个方法冻结整个模型&#xff0c;包括PEFT模块&#xff0c;并为每个模块训练一…

2024牛客寒假算法基础集训营6

文章目录 A-宇宙的终结B-爱恨的纠葛C-心绪的解剖D-友谊的套路E-未来的预言F-命运的抉择I-时空的交织J-绝妙的平衡 A-宇宙的终结 用试除法分解质因数&#xff0c;判断是否刚好分解为三个不同的质数 #include<bits/stdc.h> #define endl \n #define int long long using …

golang 函数式编程库samber/mo使用: Option

golang 函数式编程库samber/mo使用&#xff1a; Option 1. samber/mo 是什么&#xff1f; samber/mo是一个Go语言库&#xff0c;它提供了一组函数式编程&#xff08;FP&#xff09;的抽象&#xff0c;包括Monad。这些抽象可以帮助你更好地组织和处理你的代码&#xff0c;尤其…

力扣随笔之移除元素(简单27)

思路&#xff1a;定义一个指针left&#xff0c;使该指针及该指针左边的数全部都不等于val&#xff0c;定义一个遍历指针i&#xff0c;若nums[i] val&#xff0c;则i自加&#xff0c;若nums[i] ! val&#xff0c;则将left&#xff0c;并将nums[i]的值赋给nums[left]&#xff0c…

MySQL引擎对决:深入解析MyISAM和InnoDB的区别

欢迎来到我的博客&#xff0c;代码的世界里&#xff0c;每一行都是一个故事 MySQL引擎对决&#xff1a;深入解析MyISAM和InnoDB的区别 前言引擎概述MyISAM&#xff1a;InnoDB&#xff1a; 使用场景使用 MyISAM 的最佳实践&#xff1a;使用 InnoDB 的最佳实践&#xff1a;可能的…

Qt/Slot与Signal /信号与信号连接/信号与槽的关系

一个信号可以绑定多个槽 signalObject* sg1 new signalObject():slotObject* sl1 new slotObject();QPushButton* btn new QPushButton(); connect(sg1, &slotObject::signal1(), sl1, &signalObject::slot1());connect(sg1, &slotObject::signal1(), sl1, …