2020年初新冠疫情爆发,然后迅速在全球范围内扩散,其蔓延速度之快、后果之严重令人生畏。在大数据领域,也存在着类似的扩散问题(异常数据流向下游),其带来的危害有时也是灾难性的。面对这样的问题,我们又该如何解决?本文就对该问题,说明网易有数大数据平台是如何解决离线开发中的快速阻断和高效恢复。

作者:网易有数

起源:数据开发的灾难不期而遇

2020年4月的某一天凌晨,分析师小易在凌晨3点接到一个电话。在迷迷糊糊中,听到了电话那头传来网易有数电话报警的声音,小易瞬间明白是自己负责的任务出错了(“离线开发”的实例失败电话报警功能)!

于是他迅速起床并打开了电脑,通过“任务运维中心”找到被报警的实例,发现是实例触发了质量监控阻断(“数据质量中心”的强规则阻断实例运行功能),具体的原因是数据量行数波动超过阈值。随后,小易在网易有数大数据平台的“自助分析”模块进行相关数据探查,发现是上游数仓的dwd明细表出现明显地丢失,数据量骤降。于是小易赶紧电话联系数仓值班人员小孙反馈该问题。

小孙挂断电话后,心想:“完蛋了,早知道应该多配置些数据质量监控规则,今天要是真出了问题,那么多下游都已经调度起来,明天一大早,丁三石(丁磊先生花名三石)都要找过来,我三年出任CEO的计划就要泡汤了!” 于是,小孙赶紧起来排查,最终发现是ODS原始层就出现了数据丢失。之后,小孙又联系团队平台组的小徐来定位原因。小徐经过一番排查,发现是团队自研的数据采集工具的设计缺陷,导致特定场景下数据会延迟写入。到目前为止,数据已全部采集完成。

说明一下问题发生的原因:该自研的数据采集工具独立于网易有数大数据平台,没有任务依赖可配置,是采用在有数中启动script脚本,持续去检查文件产出标记,这种设计在数据量过大或挤压到一定量时,就会出错。对于大数据平台的“数据传输”产品,就可以很好地解决上述问题。

至此,数仓团队的负责人老魏也已经起来在了解问题,此时,已经过去了2个小时……大量的下游任务实例在继续调度运行,也有部分因为配置的数据质量监控规则执行异常被终止,其下游暂时未被调起。有不少人也因为实例失败,被电话报警唤起。

故事讲到这,也许已经勾起了有些人的相似经历,沉浸在慢慢长夜人肉处理这种问题的无限痛苦中。确实,故事中数仓团队的老魏和小孙,在当天夜里从5点开始,从出问题的源头任务实例开始,查找下游依赖的任务实例,如果实例已经运行,则手动终止。在人肉遍历期间,小孙也完成了ODS层表的重跑。由于依赖是网状的,下游任务中同一个任务就可能处在不同的深度,因此需要人工去按照最小的深度逐级去重跑。当几千个任务构成的任务依赖DAG图,有几百个任务的实例已经运行成功,想要逐级去重跑是多么费时费力,需要逐个触发重跑,然后等待重跑运行结束,再继续下一层的实例的重跑,直至所有已经运行成功的下游实例都运行成功。最终,花了3天时间才完全把问题解决,而且中间还存在部分未进行重跑的实例。

看完上面这个惨淡的故事,当同样的黑天鹅落在我们身边时,我们该如何应对?下面,我们来看一下网易有数大数据平台是如何解决的。

利器出世:冻结池的登场

在发生上面的事故之后,网易有数大数据平台的产品与该团队的相关人员做了多次沟通。最终,大数据平台的任务运维中心上线了“冻结池”功能。除了上面故事中提到的ods原始层数据异常,也会有任务加工逻辑错误、依赖缺失导致任务提交计算等其他场景导致数据被污染,向下游扩散的情况。此时,都可以使用“冻结池”功能来解决。对于数据污染扩散时的处理,可以总结为以下三步:第一步:停止受影响实例的继续执行;第二步:恢复异常的数据;第三步:重跑受影响的所有实例。

对于“冻结池”而言,主要完成了其中的第一步和第三步。当用户遇到数据异常时,需要先定位到直接受影响的源头离线开发任务集(比如叫任务集G1),接着可以创建一个冻结池任务,通过批量导入方式,将任务集G1添加到冻结池中,这些任务将作为源头任务。之后创建并执行冻结池,系统会自动扫描任务集G1中任务的所有下游依赖任务,并放入冻结池的任务列表中。

生成冻结池后,冻结池中的所有任务将被冻结,所有运行中的实例将被终止,未生成的实例会停止生成。至此,完成扩散处理的第一步——切断污染传播。

第二步,则需要数据开发人员来分析出现问题的原因,制定解决方案,并尽快恢复问题数据。

第三步,对冻结池执行解冻操作,系统会自动从源头任务开始,开始逐个解冻任务。单个任务的解冻过程为:任务会从冻结状态变为解冻中,之后对应的实例(如有)执行重跑,重跑成功后,任务状态变为已解冻。通过基于依赖的重跑,即可实现被污染数据的重刷。如果期间出现重跑失败等,则需要人工介入处理,强制置为成功,任务继续往下解冻,直至所有任务都被解冻。

下面,通过一张图来说明冻结和解冻是如何影响任务实例的。对于下图中的第一个DAG图,包含A、B、C、D和E共计5个任务,依赖关系和对应实例的状态已经标记在节点中。如果管理者发现A任务产出的数据有异常,则管理者可以创建一个冻结池,并把A放入其中,然后执行冻结操作。则系统会把所有潜在受影响的下游B、D和E冻结,将运行中的B和就绪的E的实例终止。当执行解冻时,则会把A、B和E的实例都重跑一次,对于D则直接解冻。在整个过程中,任务解冻后,下游任务没有被解冻的,则实例会正常生成和运行,如下图第三个DAG的C。

此外,冻结池还支持暂停、更新、废弃等功能,应对问题修复过程中出现的多种突发情况。比如,当日解决完数据问题时已经很晚,没办法解冻所有的任务,为避免夜间资源抢占,影响第二天的调度,则可以将冻结池暂停,等第二天白天再来恢复解冻。再比如,开始解冻任务时,发现遗漏了部分任务等,可以执行更新,添加任务再重新生成冻结池。

所以对于拯救被连锁扩散污染的数据,是不是就像把大象放进冰箱需要几步一样简单?“冻结池”帮你打开冰箱门,最后再帮你关上冰箱门,你只需要完成第二步——把大象塞进冰箱(即修复数据)。

结局:1分钟和0介入

2020年的黑天鹅事件特别多,似乎黑天鹅们喜欢在2020年成群结队出现。就在网易有数大数据平台的任务运维中心的“冻结池”功能上线后不久,故事中的团队又出现了一次日志文件重复问题,巧合的是,当天又是小孙值班,虽然在定位问题上花了一些时间,但是系统最终在1分钟之内,把1370多个的任务生成并冻结,及时阻断了异常数据向下游扩散

后来,冻结池解冻,250多个实例自动完成了重跑,并恢复了下游,完全不需要人工介入处理。这对于分秒必争的故障恢复场景,极大的提高了故障恢复的速度。

从业务方使用的效果看,“冻结池”极大程度降低了数据污染扩散时带来的风险,也有效节约了人力处理成本。相信大家也不愿看到 “冻结池”隔三差五就上去力挽狂澜。

目前,网易有数大数据平台还提供了“数据质量中心”、“数据测试中心”、“离线开发的CI/CD流程管控”等辅助企业提升数据质量的利器,为需要提升数据质量的企业提供服务。

海量数据时代,谁能终结污染数据爆发式的扩散?相关推荐

  1. 数据爆发式增长下,CIO不可不知的“数据经济学”

    导读:6月9日,全速重构•2020阿里云线上峰会如期举行.阿里巴巴研究员.阿里云智能存储资深产品总监Alex Chen做了主题为<面向未来,企业CIO该懂的数据经济学>的分享.在分享中,他 ...

  2. 数据爆发时代,英特尔携手腾讯构筑全面的数据长城

    作者 | 贾凯强 出品 | AI科技大本营(ID:rgznai100) 5G到来,边缘需求不断,IoT持续爆棚,数据在爆炸式增长. 在数据增长的过程中, 相应的其处理能力也需要增长,CPU等算力核心也 ...

  3. 胡凌:隐私的终结——大数据时代的个体生活危机

    随着生活世界的数字化,传统隐私及其观念正经历着重大转型,即从物理空间隐私转向信息隐私,隐私和其他个人数据的界限也变得模糊不清.那么随着隐私保护的架构发生了根本变化,我们能否依据传统空间隐私的价值来证明 ...

  4. 《大数据时代》作者维克托·迈尔-舍恩伯格:爆发式创新 云中大数据如何赋能下一轮经济增长...

    5月18日,由中国电子学会主办,ZD至顶网协办的第八届中国云计算大会在北京国家会议中心隆重举办.英国牛津大学教授.<大数据时代>作者Viktor Mayer-Schönberger(维克托 ...

  5. 物联网时代来了,大数据也终于有了用武之地

    物联网时代来了,大数据也终于有了用武之地 通过手势打开车门和家门,行程中可以观察在家的孩子是否安好: 本应无人的房间里,突然有人走动,在外旅行的你立即就会收到消息提醒,报警也只是一个按钮的事情. 如此 ...

  6. AI 时代,还不了解大数据?

    来自:IT人的职场进阶 如果要问最近几年,IT行业哪个技术方向最火?一定属于ABC,即AI + Big Data + Cloud,也就是人工智能.大数据和云计算. 这几年,随着互联网大潮走向低谷,同时 ...

  7. 拥抱时序数据库,构筑IoT时代下智慧康养数据存储底座

    摘要:在HDZ城市行广州站中,来自华为云华为云数据库创新Lab向宇从时序数据库的技术角度,解读一下华为云时序数据库GaussDB(for Influx)如何应用在智慧健康养老行业. 本文分享自华为云社 ...

  8. 【宇麦科技】数据呈现爆发式增长,企业需要怎样的群晖存储解决方案?

    数据存储(Data Governance)是组织中涉及数据使用的一整套管理行为,它是关于如何制定和实施整个企业的业务应用和技术管理的一系列政策和过程. 企业对数据管理需求的背后,是战略政策和业务导致的 ...

  9. #后疫情时代的新思考#让数据能力平民化,助力企业数字化战“疫”丨数据猿公益策划...

    "本文是由作者于揚独家投递数据猿,并参与数据猿推出的<寻找新冠战"疫",中国数据智能产业先锋力量>的公益主题策划活动的征文部分. 大数据产业创新服务媒体 -- ...

最新文章

  1. linux 安装 nslookup
  2. TCP/IP详解--学习笔记(2)-数据链路层
  3. JS动态获取当前时间
  4. 福建2020年3月计算机二级报名时间,福建2020年3月计算机二级考试报名时间安排...
  5. 搭建opencv环境
  6. LinkedHashMap 简介
  7. 【Python】七段数码管绘制问题
  8. redis提示Could not get a resource from the pool(jedis连接池配置)
  9. fritzing导入元件_fritzing元件库下载-fritzing传感器元件库v0.9.3 中文版 - 极光下载站...
  10. 下docfetcher先下Java,DocFetcher ── 以 JAVA 编写的开源桌面本地文件全文搜索工具...
  11. OSError: cannot open resource
  12. 【转发】浅析淘宝网首页信息架构的变迁
  13. MSN与六度分隔理论
  14. 清明五一假期催热周边自驾游 迪庆州应势推出“杜鹃花之旅”
  15. 美国电话号码正则表达式
  16. 史上最全的iOS开源项目分类汇总
  17. Between Us 2 进化的史诗
  18. [2021 蓝帽杯]杰克与肉丝
  19. 相距两千多公里,仅仅数月,从相亲走到结婚 | 2022年复盘日记
  20. 基于truffle-contract库之solidity事件与合约调用完整案例!

热门文章

  1. fifa18怎么改服务器位置,FIFA18键位怎么操作 FIFA18按键设置技巧
  2. Python利用百度AI提取图片中的文字信息
  3. 2017年秋季招生文案/活动
  4. Excel怎么将小数转为分数
  5. 计算机excel操作实训报告,计算机基础实验报告电子表格处理.doc
  6. 用产品组合矩阵平衡您的投资组合
  7. 一个老汉的忠告 (转)
  8. HTML5视频直播及H5直播扫盲
  9. 【STM32】实现长虹空调遥控部分功能(三)加上ESP8266实现手机远程控制
  10. 资深程序员教你,利用python预测NBA比赛结果,太精彩了