文章目录

  • 官方文档 | [GitHub源码](https://github.com/apache/dolphinscheduler)
  • 一、从实际需求入手,我们为何要选择使用DolphinSchchedule
  • 二、DolphinSchchedule的背景知识
  • 三、DolphinSchedule的安装及启动
  • 四、DolphinSchedule的功能介绍和基本使用
  • 五、实际案例演示(从一张表读取数据通过DS定时调度写入另外一张表)
  • 六、目前测试环境的实际工作流
  • 总结

官方文档 | GitHub源码

随着大数据存储与分析技术的不断发展,越来越多类型组件需要我们去学习使用,并且通过代码来结合它们,这无疑加大了系统的复杂度和程序员/数据分析师的学习成本,本章将会从实际需求出发,介绍为什么要使用DolphinSchedule,如何使用DolphinSchedule,最后再用DolphinSchedule做一个普通的Demo小案例,希望能帮助到更多入门级的同学更快地上手


提示:以下是本篇文章正文内容,下面案例可供参考

一、从实际需求入手,我们为何要选择使用DolphinSchchedule

在公司的一个重点项目中,有使用到DataX(数据拉取) + Flink(算子链进行数据分析处理) + Mysql(元数据存储)的组合做数据分析,一套很精简的ETL过程。 例如我们想从HBase中拉取数据,根据列族和列名对数据进行解析还原,然后再对还原后的数据做一些筛选过滤,再进行一些分析汇总,最后保存起来,这一整套流程就可以通过上面的组合拳配合编码来实现。 但是,如何把ETL流程变得更好维护,更加直观清晰,无需硬编码就能实现自由组合的ETL? 我们很容易就想到通过做一套拖拉拽的调度工具,用户先输入数据源,然后我们拿着账密和端口和IP域名之类的去尝试着连接一下,数据源配好后,开始让用户自定义FlinkJob,提交Main方法,最后配置输出源,整个流程就完成。


看似简单的背后,还有很多坑要去仔细思考设计,例如:
(1)用户创建的流程执行到一半失败怎么办?
(2)怎样的拖拉拽和流程监控界面交互比较好?
(3)如果我要做一些定时任务怎么办?某个时间段内定时任务多,等待队列怎么设计?任务的优先级设计?
(4)某些数据流执行失败需要有告警?
(5)数据流集群版该怎么设计?怎样事实监控集群服务器的健康状况?
(6)如何设计让不懂编码的数据分析师和管理员也能使用这套工具搭建自己的ETL数据流?
……
这一堆又一堆的问题,做起来会是非常的麻烦,特别是如果项目主线不侧重这一方面,这种辅助的调度管理工具可能就不愿意投入这么大量的人力物力工时去做。
而DolphinSchedule,就是这么一套调度工具,根据它官网的介绍,(加粗)DolphinScheduler是一个分布式去中心化,易扩展的可视化DAG工作流任务调度系统。致力于解决数据处理流程中错综复杂的依赖关系,使调度系统在数据处理流程中开箱即用(加粗)。
它的主要架构图如下:

备注:
ETL:Extract(数据抽取)-Transform(数据转换)-Load(数据加载)
DAG:从一个或者多个节点出发,具有方向性的经过中间每一个节点,且无法回到出发的节点,则称为有向无环图Direct-Acyclic-Graph

二、DolphinSchchedule的背景知识

上面介绍了实际需求中什么情况下会使用到它,这里就介绍一下它的诞生和发展
DolpginSchedule是由易观团队在2017年底开始设计并进行开发,主要目的也是为了解决上述大数据分析平台的复杂的ETL调度关系。并在2019年4月进行开源,同年8月全票通过称为Apache孵化器项目。
据不完全统计,已有400+知名公司都在使用DolphinSchedule作为大数据任务调度工具,例如腾讯,IBM,美团,联想,中国电信,中国联通,猿辅导,360,金山办公等等……我们能想到的坑,可能都有大佬帮忙填好了,社区活跃,也保证了这款产品值得信赖,用于生产更加稳当可靠。

三、DolphinSchedule的安装及启动

上面介绍了它的使用场景和诞生发展,接下来当然就是如何安装体验一下这款功能强大的调度工具,首先是基础环境要求:
(1)Linux服务器操作系统版本与服务器配置


(2) 基础软件
Mysql 5.5+
JDK 1.8+
ZooKeeper 3.4.6+

(3)单机版部署(单机,集群,容器化等部署方式和步骤官方文档都十分齐全,这里不做冗余展开)
https://dolphinscheduler.apache.org/zh-cn/docs/latest/user_doc/standalone-deployment.html
部署完成后执行一键部署脚本 install.sh 后,jsp查看服务进程,如果有以下五个服务,说明启动成功

访问入口
http://192.168.xx.xx(服务器的IP地址或者域名):XXX(自定义的端口号)/dolphinscheduler

输入自己的初始化密码
admin/dolphinscheduler123

安装好之后,下面就开始熟悉它具体有哪些功能。

四、DolphinSchedule的功能介绍和基本使用

(1)首页主要是展示任务状态统计和流程状态统计

(2)项目管理则是把工作流按照不同项目做的一层划分

创建项目JoJo-Test:

然后进入到创建好的JoJo-Test项目中,可以看到首页的任务统计和流程统计,这里的任务和流程状态都是针对当前项目的数据流做的统计,点击工作流定义,开始创建我们的工作流

新增以下简单的shell,让它输出”hello world”

最后点击右上角的保存

点击添加后会自动返回工作流定义列表页,这个时候可以看到刚刚定义好的“测试DAG”,但是这个时候还处于下线状态,可编辑但是不可以运行该数据流

它右边有几个按钮,我们先点击第四个“上线”,上线后的数据流就可以设置“定时执行”或者“手动执行”,但是不可以“编辑”,如果需要“编辑”,则需要“下线”,我们先把“测试DAG”这条数据流“上线”,然后点击“运行”

运行前会要求你设置运行参数,就是一些失败策略,高静策略,该数据流的优先级(优先级高的排队会优先执行),通知组等等信息,通知组和收件人和抄送人可以为空

运行成功后,在工作流实例中可以看到正在执行的工作流

执行完成后,在“任务实例”最右边的“操作”按钮,可以查看该数据流的当前次任务的执行日志

⚠️注意:
注意在删除项目的时候要先删除项目中所有的工作流,而删除工作流就必须先下线

(3)资源中心

这里的资源中心,可以用作保存一些自定义函数,或者FlinkJob,SparkJob的程序包,供工作流对应的节点选择,如下:

(4)数据源中心

主要是配第三方存储服务的数据源的连接,这里配置好的数据源也是供工作流定义输入源节点类型选择的,例如你在数据源中心配置了本地mysql,在工作流就可以直接选择该“数据源”作为“输入源”,也就是说,DolphinSchedule帮助我们通过JDBC做了数据源连接,不需要我们再额外编码或者配置多数据源的方式进行配置。
注意这里的Mysql连接方式,不一定百分百要Mysql数据库,而是可以通过JDBC连接的数据库服务,都可以作为输入源,例如TiDB等都是可以的。

(5)监控中心
这里可以很直观看到调度集群的内存使用情况,CPU使用情况,还有MySql DB的连接数信息,这一部分比较简单,跟其他监控仪表盘差不多(不过这个很像汽车的时速表,我很喜欢哈哈哈)

(6)安全中心
这里是配置登陆用户,授权,租户,调度任务队列管理,告警组,加密令牌等等与安全相关的功能都放在这里(具体就不展开了,可以自己尝试一下)

五、实际案例演示(从一张表读取数据通过DS定时调度写入另外一张表)

(1)新增一个数据源test,作为写入

(2)Test库中建两张表,input负责作为输入源,output作为输出源

CREATE TABLE `output` (`id` int(11) NOT NULL,`total` int(255) DEFAULT NULL,PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

(3)往input输入源随便插两条数据:

(4)定义工作流

注意SQL类型一定要选择非查询,不然会执行executeQuery()只读操作,导致报错。非查询则执行executeUpdate()或者execute()等写操作。

(5)定义完成后返回工作流列表,点击“上线”,再点击“执行”,然后在任务实例这里可以看到执行结果:

点击最右边的查看日志,可以看到执行当前工作流的日志

(6)最后检查数据库的output表,看看是否成功插入(此处自增id不对应是因为隔离级别的问题,详情可以看另外一篇博客,这里不展开):

至此测试成功

(这里需要注意的是,工作流的流式处理之间,是不允许参数传递的,每个算子节点之间相互独立,只不过是逻辑上属于同一条工作流,如果上下两个节点有参数传递关系,要依靠第三方服务来完成,例如第一个节点先把数据从A库写到B库,第二个节点再从B库读取出来做分析,分析结果写入C缓存,第三个节点再处理……不能像Java流式编程,也不能像flinkjob那样流式加算子节点)

六、目前测试环境的实际工作流

目前1000+条工作流稳定运行中,都是数据拉取->筛选清洗->分析转换->保存的ETL过程的工作流,DolphinSchedule大大方便了我们做数据分析的工作,同时减少了硬编码量,使得部分不懂代码的数据分析人员也能上手做一些自己的数据流定义,总的来说使用还是非常简单便捷的。

总结

以上就是我的个人总结,稍后会持续为大家带来关于DolphinSchedule工具的分享,欢迎留言我们一起讨论,喜欢的话别忘了关注➕收藏,谢谢大家

Apache DolphinScheduler征稿 — 小Demo轻松入门DolphinSchedule大数据调度工具相关推荐

  1. 主流大数据调度工具对比(DolphinScheduler特点)

    大数据环境下,调度工具比不可少,离线批任务和准实时任务都需要调度去驱动.下文介绍主流大数据调度工具对比DolphinScheduler .Azkaban.Airflow.Oozie.Xxl-job A ...

  2. 看小企业如何玩转大数据? 智慧商贸添助力

    7月22日消息,美国有句谚语"除了上帝,任何人都必须用数据说话",从目前来看,我们正处于一个大数据无限发展的时代,就连最热门的巴西世界杯冠军--德国,据传也是利用一款大数据分析&q ...

  3. Apache DolphinScheduler——开源大数据调度器神器

    目 录 1. 简 介 1.1 概 念 1.2 优缺点 1.3 哪些人适合DolphinScheduler(纯属个人观点) 1.4 社区 2. 集群模式安装详解(比官网还细,个人手把手实践避坑) 2.1 ...

  4. 大数据调度系统为什么选型Apache DolphinScheduler ?

    table of contents 一 .背景 二 .定位 三 .案例 四 .竟品对比 五 .DolphinScheduler简介 六 .社区发展 七.性能数据参考 一 .背景 今天跟客户聊天的时候, ...

  5. 大数据任务调度工具 Apache DolphinScheduler

    文章目录 大数据任务调度工具 Apache DolphinScheduler 项目亮点 DolphinScheduler 简介 调度系统选型 为什么大数据要选择 DolphinScheduler Do ...

  6. 一篇入门物联网大数据:TDengine时序数据库

    目录 一.大数据时代 二.TDengine设计思想 三.CAP理论和TDengine的特性 1.CAP理论 2.TDengine特性 四.数据模型 1.数据特点 2.超级表和表 3.数据查询 a. 单 ...

  7. 周末愉快丨读完这10个的小故事,你也想来吐槽大数据?

    约!约!约!友盟全域数据是[友盟+]品牌的微信公众账号之一,我们将持续为您带来第一手资讯与干货! 作者介绍:张玉宏,博士.2012年毕业于电子科技大学,现执教于河南工业大学.中国计算机协会(CCF)会 ...

  8. 玩日志的你不了解 Filebeat ,就像搞结拜不认识关二爷!深度解析 Filebeat 工作原理,轻松玩转大数据!

    文章目录 深度解析 Filebeat 工作原理,轻松玩转大数据! 什么是 Filebeat Filebeat 工作原理 Filebeat 工作流图 Filebeat 组件图 Filebeat Harv ...

  9. 什么是大数据?如何入门学习大数据?

    什么是大数据?在互联网技术快速发展的今天,大量日常生活和经营活动中产生的数据都已经信息化.我们产生的数据量相比以前有了爆炸式的增长,传统的数据处理技术已经无法胜任,需求催生技术,一套用来处理海量数据的 ...

最新文章

  1. ubuntu 14.0 下github 配置
  2. 中交兴路完成7亿元A轮融资,携手蚂蚁金服共建小微物流科技服务生态
  3. 【转】monkeyrunner学习总结二:连接、安装、启动
  4. x86汇编从实模式到保护模式-程序加载器
  5. ECMS系统服务器死机的处理,内存问题服务器死机一例
  6. 复习栈和队列,详解最小栈,栈的弹出压入序列,逆波兰表达式求值
  7. mpvue中使用小程序云开发总结
  8. 下月上市!中兴AXON 10 Pro 5G版通过3C认证 加入5G大战
  9. linux挂载windows上的共享文件夹
  10. 应用安全-软件安全-漏洞CVE整理
  11. C# 读取csv、xls、xlsx表格(读取到datatable、sql查询语句读取)
  12. Vue 组件(二)父组件与子组件传递数据 之props
  13. Flash倒计时+写在自定义类+写在关键帧
  14. 车辆销售系统用例_销售管理系统的UML分析与设计
  15. MikuMikuDance V7.39 汉化版
  16. python教孩子学编程_学编程要从娃娃抓起——教孩子学Python
  17. matlab实现手写数字识别案例,Matlab手写数字识别
  18. Vant(有赞)UI框架爬坑记——图片轮播+预览
  19. Excel2013使用插入特殊符号或复选框功能制作带对号的打钩方框
  20. 将本地代码push到github上

热门文章

  1. 恐怖的ChatGPT!
  2. 电话键盘 电脑键盘与标点符号英文读法
  3. Python数据特征分析1-分布分析(极差,频率直方图等)
  4. 2018广告屏蔽软件
  5. Google Earth Engine(GEE)——美国大陆(CONUS)30米土壤属性概率图数据库
  6. 01 QEMU仿真器-模拟器介绍
  7. Java编程之四大名著
  8. tmux鼠标配置出现错误unknown option: mode-mouse
  9. 5G商用价值到底在哪里,可以赋予哪些能力?
  10. 怕公司的新同事超过你怎么办