一、业务痛点
- “每个客户最近30天的平均消费金额指标需要基于汇总的门店订单表来分析,得等订单表的数据更新了才能运行指标”
- “老板9点就要看报表,这个任务可一定要尽早跑完,优先级要设置成最最最最最高!”
- “怎么又有任务报错了,我可不想一直盯着电脑屏幕呀”
- ......
以上是数据开发和运维人员日常工作中经常会遇到的问题,整个数据研发流程,任务和任务之间存在多种数据上的依赖关系,且不同的数据有各自的更新时效性要求;此外,任务执行需要对应的资源,我们希望给重要的任务优先分配调度资源和运行资源,保证其顺利运行。这些无疑都给开发运维人员增加了工作难度。
Dataphin的统一调度和运维系统,为您的数据建设保驾护航。Dataphin自研的调度系统支持灵活的调度周期、上游依赖、调度类型和参数配置,可适配多样性的数据研发场景。运维中心包括大盘概览、任务运维、实例运维和监控告警配置等功能,为您提供任务操作与运行查看、引擎&资源分析等多方位的运维能力。下面,我们就来具体看看都有哪些厉害的功能吧!
二、功能介绍
1、 如何保障数据有序、正确产出?
创建任务时,首先需要根据任务运行频率和数据产出时效性判断该任务的调度类型,并针对不同类型的任务进行调度规则的配置。其中,周期调度是最常用的调度方式。针对周期任务,我们需要配置如下关键信息:
- 优先级:支持最高、高、中等、低、最低5种优先级,影响调度资源的分配。对于需要重点保障的任务,可以通过设置高优先级配置保证资源优先分配。
- 调度类型:支持正常调度、空跑调度、暂停调度三种方式。空跑调度的任务生成的所有实例直接空跑成功,不会真正运行;暂停调度的任务生成的实例均为暂停运行状态,常用于经常需要暂停某些链路上的数据更新、又不希望频繁下线任务或修改依赖的场景。
- 调度周期:支持分钟、小时、日、周、月调度,不同调度周期对应不同的运行频率,并支持配置每个实例的定时调度时间。如抽数任务,需要每小时从业务库抽取上一小时新增的订单数据,再进行销售总额的合并计算,则需要配置调度周期为“小时”,开始运行时间为每个整点,以保证数据时效性。
- 上游依赖:提供自动依赖解析能力,可以基于SQL详情解析出存在数据依赖的上游任务并自动添加。对于不存在数据依赖关系但是有调度依赖的上游(如用于检查数据变化情况的check任务),可以手动搜索添加。
- 依赖上周期:支持配置依赖任务自身或其他任务的上一周期实例。有时为了防止多个实例同时运行造成的数据冲突或重复,需要保证每个任务同一时间只有一个任务在运行,此时可以配置“自依赖”,如“截止当日销售总额”任务,计算口径为“前一日销售总额+当日销售总额”。另外一些场景下,任务运行完成时间较晚,对于数据时效性要求不严格的下游,可以配置依赖该任务的上周期。
基于上述配置,您可以根据实际业务场景梳理上下游数据的影响,确保数据依赖关系正确;通过给对应的任务配置依赖条件,保证调度依赖关系正确;加之优先级等配置条件,可实现数据有序、正确地产出。
2、 如何及时发现异常?
Dataphin支持给生产环境的任务配置监控告警规则,帮助您及时了解任务运行动态,并监控异常任务,降低对下游业务的影响。
Dataphin支持多种监控能力,包括智能基线监控、离线任务&字段监控及实时任务监控。以离线监控为例,支持以下几种监控场景:
- 完成:任务运行成功后发送通知,可及时同步给下游业务方进行数据调用。
- 出错:可及时发现异常并着手处理,防止风险进一步扩大。
- 运行超时:可结合历史运行情况及可接受的波动范围设置一个阈值,若已运行超过预期时长仍未完成,可及时查看执行日志,是否资源不足或其他异常,降低对下游数据产出的影响。
- 未完成:可根据历史运行完成时间合理估计时间点,到点未完成则发送告警,相当于风险预警,可及时发现异常。
除了监控场景,Dataphin也支持添加多个接收人,可给不同的接收人配置不同的接收方式,以实现区别告警。例如:
- 为值班人员配置电话告警,这样能在第一时间及时接收到告警信息并处理,尽量减少对下游任务的影响。
- 为任务责任人配置短信或邮件告警,这样责任人能了解所负责的任务的运行概况,但是不用第一时间进行处理。
- 为项目管理员配置钉钉群机器人告警,这样项目管理员能通过群消息了解所管理的项目全局任务的整体运行情况,便于后续统计分析。
特殊的,Dataphin特有的逻辑运维能力,支持针对逻辑表任务以字段视角进行监控配置,可通过字段更快捷直观的分析异常任务对下游业务的影响。此外,支持根据任务优先级和运行时间,设置不同的监控时间段、告警频率等,减少运维人员的人工操作成本,实现灵活的自动化告警。
>>更多关于智能基线监控的介绍,请查看《Dataphin智能基线,自动化预警代替人工监控》
3、如何快速定位问题?
介绍完监控告警,我们再来看看如何处理收到的告警任务吧~Dataphin提供了实例运行诊断的能力,从上游依赖、定时时间、限流规则、调度资源及实例执行 5 个阶段分析实例运行过程中可能产生的异常,大大提升了异常分析的效率和准确性。
>>更多关于运行诊断的介绍,请查看《Dataphin运行诊断,提升运行异常分析效率的利器》
4、 如何高效恢复数据?
异常问题分析并处理完成后,如何快速使任务恢复运行呢?面向不同的场景,Dataphin提供灵活、可配置的重跑、强制重跑等功能,并提供基于列表的批量操作能力,可以帮助您快速执行相关操作,大大减少人工操作成本,快速恢复调度。
- 重跑/重跑下游:运行成功或失败状态的实例支持重跑。重跑时会按照最新发布的代码版本执行。对于任务配置问题或网络环境问题导致的的运行失败,可以通过重跑恢复数据。dataphin支持针对单个实例进行重跑、或选中一个起点及其下游,按照依赖关系进行批量重跑(如整条链路计算逻辑修改等场景),以实现全链路数据更新。
- 强制重跑/强制重跑下游:重跑操作要求依赖的所有上游实例运行成功并到达当前实例的定时调度时间,某些场景下,可以忽略上游实例的运行状态(一般是无数据依赖,仅调度依赖,或者对数据实效性要求不高的情况),这时可以使用强制重跑功能来恢复运行。另一种场景,已经运行到中间链路的任务,发现来源数据错误需要及时止损,此时可以使用强制重跑下游功能来解决,系统会先将所有选中的任务批量终止,再从最上游实例按照依赖关系依次向下运行,避免新老代码并存产生的数据错乱。
5、 如何进行有效的并发控制?
当计算引擎出现性能瓶颈、资源分配不足或需控制任务下发时间和顺序等场景时, 通过配置开发或生产环境任务的限流规则,保障系统的稳定性以及业务数据按序及时产出。
Datatphin 支持基于业务视角的调度限流功能,支持根据任务优先级和资源空闲情况,控制不同时间段内不同任务的下发数量。基于限流能力,不仅可以减少对底层计算引擎和上下游数据源的并发压力,保证高优任务优先分配调度及计算资源,任务能按序产出;同时也能实现故障异常场景下的快速止血,避免产生因为无法干预或介入较晚而产生严重的问题,增强整体稳定性。
如:更换底层引擎的场景下,我们可以通过配置全局限流来阻断任务的下发;迁移完成后,需要优先对核心任务进行补数据操作,再逐步恢复对日常任务的运行,则可以通过“所属项目”圈选出日常任务并将其并发度设置为 1 而核心任务不设置并发限制,来保障资源优先分配给核心任务。
>>更多关于调度限流的介绍,请查看《千呼万唤的调度限流配置功能终于上线了!》
三、结语
运维中心是维护生产任务有序、正确运行,数据能正常产出的守卫者,是整个研发链路最重要的一道保障,敬请期待更多新功能!
Dataphin官网介绍:https://www.lydaas.com/dataphin
Dataphin公开咨询钉钉群:23381533