加入收藏 | 设为首页 | 会员中心 | 我要投稿 河北网 (https://www.hebeiwang.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 建站 > 正文

怎么做大数据工作流调度系统?大厂架构师一语点破!

发布时间:2019-04-30 22:46:25 所属栏目:建站 来源:架构文摘
导读:编者说:文章先容了EasyScheduler的架构计划,以及每个组件事变的方法。假如你的事变中碰着必要大数据事变流的场景可以实行行使这个架构。因为文章较量长提议先保藏再阅读。 Easy Scheduler 大数据事变流调治体系已经开源,下载地点:https://github.com/a
副问题[/!--empirenews.page--]

编者说:文章先容了EasyScheduler的架构计划,以及每个组件事变的方法。假如你的事变中碰着必要大数据事变流的场景可以实行行使这个架构。因为文章较量长提议先保藏再阅读。

Easy Scheduler 大数据事变流调治体系已经开源,下载地点:https://github.com/analysys/

在对换治体系架构声名之前,我们先来熟悉一下调治体系常用的名词。

名词表明

  • DAG:全称Directed Acyclic Graph,简称DAG。事变流中的Task使命以有向无环图的情势组装起来,从入度为零的节点举办拓扑遍历,直到无后继节点为止。举譬喻下图
怎么做大数据事变流调治体系?大厂架构师一语点破!
  • 流程界说:通过拖拽使命节点并成立使命节点的关联所形成的可视化 DAG
  • 流程实例:流程实例是流程界说的实例化,可以通过手动启动或按时调治天生
  • 使命实例:使命实例是流程界说中使命节点的实例化,标识着详细的使命执行状态
  • 使命范例:今朝支持有SHELL、SQL、SUB_PROCESS、PROCEDURE、MR、SPARK、PYTHON、DEPENDENT,同时打算支持动态插件扩展,留意:个中子 SUB_PROCESS 也是一个单独的流程界说,是可以单独启动执行的
  • 调治方法:体系支持基于cron表达式的按时调治和手动调治。呼吁范例支持:启动事变流、从当前节点开始执行、规复被容错的事变流、规复停息流程、从失败节点开始执行、补数、调治、重跑、停息、遏制、规复守候线程。个中 规复被容错的事变流 和 规复守候线程 两种呼吁范例是由调治内部节制行使,外部无法挪用
  • 按时调治:体系回收 quartz 漫衍式调治器,并同时支持cron表达式可视化的天生
  • 依靠:体系不光单支持 DAG 简朴的前驱和后继节点之间的依靠,同时还提供 使命依靠 节点,支持 流程间的自界说使命依靠
  • 优先级:支持流程实例和使命实例的优先级,假如流程实例和使命实例的优先级不配置,则默认是先辈先出
  • 邮件告警:支持 SQL使命 查询功效邮件发送,流程实例运行功效邮件告警及容错告警关照
  • 失败计策:对付并行运行的使命,假若有使命失败,提供两种失败计策处理赏罚方法, 继承 是指不管并行运利用命的状态,直到流程失败竣事。竣事 是指一旦发明失败使命,则同时Kill掉正在运行的并利用命,流程失败竣事
  • 补数:补汗青数据,支持 区间并行和串行 两种补数方法

体系架构

架构声名

MasterServer

MasterServer回收漫衍式无中心计划理念,MasterServer首要认真DAG 使命切分、使命提交监控,并同时监听其余MasterServer和WorkerServer的康健状态。MasterServer处事启动时向Zookeeper注册姑且节点,通过监听Zookeeper姑且节点变革来举办容错处理赏罚。

该处事内首要包括:

  • Distributed Quartz漫衍式调治组件,首要认真按时使命的启停操纵,当quartz调起使命后,Master内部会有线程池详细认真处理赏罚使命的后续操纵
  • MasterSchedulerThread是一个扫描线程,按时扫描数据库中的 command 表,按照差异的 呼吁范例 举办差异的营业操纵
  • MasterExecThread首要是认真DAG使命切分、使命提交监控、各类差异呼吁范例的逻辑处理赏罚
  • MasterTaskExecThread首要认真使命的耐久化

WorkerServer

WorkerServer也回收漫衍式无中心计划理念,WorkerServer首要认真使命的执行和提供日记处事。WorkerServer处事启动时向Zookeeper注册姑且节点,并维持心跳。

该处事包括:

  • FetchTaskThread首要认真不绝从 Task Queue 中领取使命,并按照差异使命范例挪用 TaskScheduleThread 对应执行器。
  • LoggerServer是一个RPC处事,提供日记分片查察、革新和下载等成果

ZooKeeper

ZooKeeper处事,体系中的MasterServer和WorkerServer节点都通过ZooKeeper来举办集群打点和容错。其它体系还基于ZooKeeper举办变乱监听和漫衍式锁。我们也曾经基于Redis实现过行列,不外我们但愿EasyScheduler依靠到的组件只管地少,以是最后照旧去掉了Redis实现。

Task Queue

提供使命行列的操纵,今朝行列也是基于Zookeeper来实现。因为行列中存的信息较少,不必担忧行列里数据过多的环境,现实上我们压测过百万级数据存行列,对体系不变性和机能没影响。

Alert

提供告警相干接口,接口首要包罗 告警 两种范例的告警数据的存储、查询和关照成果。个中关照成果又有 邮件关照 和**SNMP(暂未实现)**两种。

API

API接口层,首要认真处理赏罚前端UI层的哀求。该处事同一提供RESTful api向外部提供哀求处事。接口包罗事变流的建设、界说、查询、修改、宣布、下线、手工启动、遏制、停息、规复、从该节点开始执行等等。

UI

体系的前端页面,提供体系的各类可视化操纵界面,详见**体系行使手册**部门。

  • 架构计划头脑
  • 去中心化vs中心化
  • 中心化头脑

中心化的计划理念较量简朴,漫衍式集群中的节点凭证脚色分工,概略上分为两种脚色:

Master的脚色首要认真使命分发并监视Slave的康健状态,可以动态的将使命平衡到Slave上,甚至Slave节点不至于“忙死”或”闲死”的状态。

Worker的脚色首要认真使命的执行事变并维护和Master的心跳,以便Master可以分派使命给Slave。

中心化头脑计划存在的题目:

  • 一旦Master呈现了题目,则群龙无首,整个集群就会瓦解。为了办理这个题目,大大都Master/Slave架构模式都回收了主备Master的计划方案,可所以热备可能冷备,也可所以自动切换或手动切换,并且越来越多的新体系都开始具备自动推举切换Master的手段,以晋升体系的可用性。
  • 其它一个题目是假如Scheduler在Master上,固然可以支持一个DAG中差异的使命运行在差异的呆板上,可是会发生Master的过负载。假如Scheduler在Slave上,则一个DAG中全部的使命都只能在某一台呆板长举办功课提交,则并利用命较量多的时辰,Slave的压力也许会较量大。

(编辑:河北网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读