数仓面试还不懂什么是基线管理?
作为数据开发人员,我们日常工作的一部分就是夜间值班。”夜间值班“对于没有实际工作经验的同学来说可能比较陌生。今天amber我就以阿里为例,跟小伙伴们聊聊这个问题。
所谓夜间值班,主要是为了保证数据可以在我们的对外承诺时间前产出。而由于日常生产任务依赖关系异常复杂,上游任务的任何延迟、失败都会影响到我们的数据能否在预期时间内产出,因此就有了基线监控。智能基线可以及时捕捉到任何影响基线任务按时产出的事件,并提前进行预警,保障复杂场景下重要数据也可以在预期时间内顺利产出。
阿里在国内被称为互联网技术的半壁江山是有道理的,包括大数据数仓建设这块国内一线大厂几乎都是参考阿里构建的。校招同学面试的时候,尤其面大厂,尤其面我们阿里经常会被问一个问题,什么是基线,基线管理等。
“基线可以形象的理解为在高速公路上的应急车道。用户将重要的任务添加到基线上后,相对于普通的任务,在基线上的任务具备更高的运行优先级,并且可以预先设置保障产出时间,系统将根据任务运行情况计算基线任务的预计完成时间。当系统判断基线任务可能无法在承诺时间前完成,系统将发出告警。”
首先了解几个概念:
承诺时间:任务运行成功的最晚时间点。
预警时间:即承诺时间-预警余量。
基线任务:被添加到基线上的任务。
基线实例:系统使用基线实例计算任务每次运行的预计完成时间。基线实例的状态包括:安全、预警、破线。
安全:预计完成时间<预警时间。
预警:预警时间<预计完成时间<承诺时间。
破线:预计完成时间>承诺时间。
关键路径:影响基线任务的多条路径中,运行耗时最长的路径。
事件:基线任务及其上游任务出错,或关键路径上的任务变慢时,会产生事件。事件会影响基线任务的按时完成。
以阿里巴巴dataworks为例。将重要任务添加到基线上后,DataWorks将根据基线的优先级保障基线任务的资源,并根据基线任务的上下游依赖关系确定监控范围,根据该监控范围内任务的运行情况触发基线报警或事件报警。
如图所示,任务G添加为基线保障对象,若上游任务E出错,则首先给E任务owner告警,只有当E任务所在链路成为当前基线最长路径,且预测的执行完成时间比预警时间晚时,才会给基线值班同学告警。而如果E任务及时被修复,那么就不会给基线值班人员告警。
首先有一个大前提,如果有基线告警,我们首先要进行的是问题的解决,及时解决问题,不影响基线的正常产出,当前问题解决之后再去看后续的一些保障措施。关于基线告警的处理,这里可以简单分为几种类型:
上游任务引起:如果是上游任务引起的告警,那么需要联系上游任务Owner进行解决,如果对方不是数据开发同学,可能需要我们协助他进行问题的排查与处理。
个人任务引起:如果是我们自己的任务引起的告警,我们就需要查看具体引起告警任务的日志,排查定位解决问题。如果是任务执行变慢,可以优先进行参数优化,在线上执行一个相同的任务,让两个任务赛跑。这里一定要避免直接杀掉线上正在执行的任务。
夜间任何问题的处理,都需要在白天持续跟进,确保问题及时解决,避免第二天再次引起报警。
涤生大数据往期精彩推荐
8.SQL之优化篇:一文搞懂如何优化线上任务性能,增效降本!
10.基于FlinkSQL +Hbase在O2O场景营销域实时数仓的实践
12.涤生大数据实战:基于Flink+ODPS历史累计计算项目分析与优化(一)
13.涤生大数据实战:基于Flink+ODPS历史累计计算项目分析与优化(二)
14.5分钟了解实时车联网,车联网(IoV)OLAP 解决方案是怎样的?
15.企业级Apache Kafka集群策略:Kakfa最佳实践总结
20.大数据实战:基于Flink+ODPS进行最近N天实时标签构建