数据平台工具系统之调度系统

数据平台工具系统概述

谈到大数据平台,在当今大数据备受关注的时代,大家首先想到会是HDFS、YARN、Hbase、Spark、Hive之类著名开源组件,当然目前基于开源解决方案的大数据平台建设一般也是围绕着它们作为底层支持的,我司也是采用这种开源方案,那么是否我们将这些组件配置好参数搭建run起来,就可以称之为我们已经有了大数据平台了呢?这个回答当然是否定的。

目前从业界来看,如果是基于PasS层做数据平台建设的(本文也是基于PasS层平台建设做讨论),基本都需要在这些Hadoop生态基础组件之上研发衍生出工具系统层,那工具系统层的主要的作用是什么,我认为主要有以下几点:

1、基础服务封装,满足业务需求:如数据采集系统每天从业务系统抽取几千张表的数据存储到HDFS中,数据仓库团队后续基于存储在HDFS上的数据进行数据仓库的建设。

2、减少使用门槛和学习成本:Hadoop生态系统的周边组件的使用有技术使用门槛,一般操作接口都是Linux命令或需要编程对接的API程序接口。

3、安全性:Hadoop生态周边组件的安全性提供的一般相对比较薄弱,需要严格控制,需要在工具系统层面做统一收口,也就是说将业务同事的操作由工具系统代理提交给Hadoop生态,工具系统就可以控制操作的安全性,数据的安全性,当然我们讨论的基于PasS层做数据平台建设,如果基于SasS层做数据平台建设,一般可考虑使用Kerberos做安全性控制,但是细粒度的数据权限还是很难控制的。

回到本文正题,大数据平台工具系统之任务调度系统。从业界各大互联网公司以及我司的任务调度系统在数据平台的作用来看,像点样子的大数据平台,基本都有调度系统的存在。

调度系统的类别

从技术实现和功能层面结合来划分,市场上目前有两类的调度系统

1、基于时间维度的

基于时间维度的这类调度系统最根本的功能就是将任务在指定的时间计划下,正确及时的运行起来,比如我希望一个任务在每周三的下午14点运行起来,Linux的crontab、quartz、cron4j、当当网的elastic-job都属于这类,当当网的elastic-job在高可用、集群化、失败转移、分片化执行任务方面做的更加的完善,这里不做深入讨论。

2、基于DAG关系维度(也可结合时间维度)

这类调度系统主要的目标是基于DAG图,将任务在指定的逻辑关系下正确执行,也可以结合时间维度,我司的调度系统目前也是采用DAG关系维度方向。

举2个例子:

A任务执行完才可以执行A任务下的B任务。

A任务12点执行,A执行完下面的B任务才可以执行。

上面的例子比较简单,现实场景可能涉及到几百个任务相互关联依赖,以及任务执行之间的延迟策略,周期性执行策略都需要考虑。

目前这类开源调度系统比较出名的有Azkaban、oozie。

选择自研还是开源直接使用

针对自研还是使用开源版本直接使用,我们选择的是自研方向,主要有以下几点原因:

使用开源有学习成本:如果想用好开源产品,遇到问题及时解决,必须在功能和代码实现级别都非常熟悉,需要有一定的学习时间。

兼容性:我们数据平台的工具系统层的其它工具系统都是自研,如果中间有一个开源的,这样对后续的产品交互通信和功能层面都需要进行衔接,可能还需要二次开发。

功能不满足:开源产品的功能不一定满足自身的业务场景。

当然事情不是绝对的,需要根据自身的资源和实际情况做考虑。

我们自研调度系统实现了哪些功能

任务配置管理:支持添加任务基本信息,同一个界面支持配置关系维度、时间维度,以及关系维度和时间维度的混合配置方式。界面化操作配置,无需像oozie配置任务工作流需要编写XML文件后加载。

任务触发机制:支持时间维度、时间和关系维度结合触发任务执行机制,下图举出三种示例:

任务触发机制

任务延迟执行策略:任务延时执行策略的使用一般发生时间和关系结合的场景,目前我们系统采用的延迟即刻恢复策略,那先来说说什么叫延迟即刻恢复策略,我们先来看一下如下图示两个场景:

任务延迟执行策略

我们先来分析一下场景1的情况,A任务1点半开始运行,B任务依赖A任务2点运行,假设A任务1点半开始运行后,运行了半个小时到2点还没有运行完,这个时候到了B任务2点启动的时间发现A任务没有运行完,程序这时就会将任务B标记为父任务延迟状态,那假设A任务在2点20的时候执行完成了,应用延迟即刻恢复策略,就会马上将B任务带起了运行。

我们再来看一下场景2的稍微复杂一点的情况,A任务每小时运行一次,B任务依赖A任务每天的2点运行一次,假设A任务1点开始执行,但是执行到2点还没有运行完,大家注意到了2点A任务的下一个执行周期也到了,并且B任务也需要在2点执行,那遇到这种情况,我们处理逻辑是这样做的,将A任务标记为自延迟状态并且在2点的时候不执行,将B任务标记为父任务延迟状态并且在2点的时候也不执行,如果A任务在2点20执行完成,则将B任务应用延迟即刻恢复策略马上执行起来。不知道大家有没有疑问就是A任务目前也是自延迟状态,它会应用延迟即刻恢复策略马上运行起来吗?答案是不能的,因为A任务如果马上运行起来,状态就是开始状态,B任务运行起来后看见A任务是开始状态则必然失败,所以此处需要增加一个逻辑就是自延迟状态的任务在恢复阶段,需要检查这个任务下面是否有父任务延迟状态的任务,如果有,优先将这个任务下处于父任务延迟状态的子任务恢复。

上面两个场景的描述都是针对延迟即刻恢复的策略说明,我们可能还需要考虑一种情况就是延迟忽略恢复策略,也就是针对上面的场景1和场景2,当B任务到达触发时间需要执行,但是发现依赖的父任务没有执行成功的,这时候就应用延迟忽略恢复策略,忽略B任务的本次执行。

任务基础信息和关系信息实时变更:任务基本信息以及上、下游依赖关系的变更都能立刻生效。

这里需要注意的是,实时生效再技术层面需要数据的强一致性保证,所以在业务功能方面要将影响任务信息状态变化的操作梳理出来。例如任务的增、删、改以及任务运行中的状态变化,手动触发等场景都可能涉及。所以针对这些操作要使用锁进行互斥处理,分布式环境下需要使用分布式锁。

任务手动触发执行策略:支持手动触发任务,目前有三种触发模式,触发当前任务、触发当前任务及下游子孙,触发当前任务的下游和子孙但是不包含当前任务。

任务手动触发执行策略

特殊情况流程处理机制:人工标注失败或状态恢复重置功能,调度系统的任务类型有很多种,例如一个数据抽取任务依赖于业务数据库的稳定性,我们不能保证依赖环境都完全高效可用,遇到特殊情况可以将任务重置状态,重新进行全新的生命周期恢复执行至关重要,此功能都是在实践中吸取的经验:),大家懂的~。

任务手动停止资源释放:任务停止并不是简单的设置一下状态,如果任务是MR、Sqoop、Hive等类型,需要将对应在YARN上的任务停止释放。

报警通知机制:任务失败报警、超时报警、支持用户指定时间查看任务运行状态的订阅功能。

任务运行历史日志和实时日志可视化:日志是观察任务执行情况和排查问题的重要信息,需要提供给用户便捷的日志浏览功能,跟踪任务执行进度状态。

任务信息可视化展现:任务的状态信息、上下游关系方便查看。

调度系统 3.0预告

我们不断优化迭代调度系统的功能和技术架构,目前调度系统3.0已经开始研发,主要的改进涉及如下方面:

调度系统多租户方面:目前调度系统主要针对我们自身的数据仓库团队使用,其它的业务团队也有需求和意愿进行使用,我们将会用一个迭代针对业务数据的隔离,基础数据隔离,业务功能操作隔离,资源使用隔离方面进行研发演进,实现多租户的使用体系。

任务执行策略方面:上面再介绍现有功能的时候,介绍了任务延迟策略几种情况、后续我们会根据业务需求,针对这方面做更多的策略支持,并且实现界面化的可选择配置,这样业务同事根据业务场景可以自行选择。

技术架构不断优化:调度系统 3.0此次迭代会将后台公用组件模块化,无状态化,以实现高可用,负载均衡等。

总结

任务调度系统是大数据平台工具系统核心组件,本文也将我们自身实现的一些功能特性做了相关描述,后续我们会针对我们自身的大数据平台,从工具系统层、核心组件层,在功能和技术实现方面持续介绍。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 202,905评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,140评论 2 379
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 149,791评论 0 335
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,483评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,476评论 5 364
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,516评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,905评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,560评论 0 256
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,778评论 1 296
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,557评论 2 319
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,635评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,338评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,925评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,898评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,142评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,818评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,347评论 2 342

推荐阅读更多精彩内容

  • 1、通过CocoaPods安装项目名称项目信息 AFNetworking网络请求组件 FMDB本地数据库组件 SD...
    阳明先生x阅读 15,967评论 3 119
  • 诗情画意_b0f9阅读 211评论 0 0
  • 从出生开始,便一直都是和叔叔家生活在一起,所以,我们的关系很好,在我们那片地区可以当作模范,我从没发现有哪家的关系...
    红蘑菇TT阅读 149评论 0 0
  • 你是不是也认为“猫狗”大战,只会让你从中获得更多的网购优惠呢? 你是不是也认为现在的“拼X多”就是十年前的某宝呢...
    Jenny020阅读 109评论 0 0
  • 我有一个恶心的妹妹。有多恶心呢,讲个故事: 某天她趁我不备吧唧亲了我一大口(就是那种吧唧口水印你脸上的那种),我万...
    水色森森阅读 852评论 1 1