当前位置:网站首页>阿里超大规模 Flink 集群运维体系介绍
阿里超大规模 Flink 集群运维体系介绍
2022-04-21 14:54:00 【Apache Flink】
摘要:本文整理自阿里云实时计算高级运维专家王华 (尚付) 在 Flink Forward Asia 2021 生产实践专场的演讲。主要内容包括:
-
演进历史和运维挑战 -
集群运维 Flink Cluster -
应用运维 Flink Job
一、演进历史和运维挑战

阿里的实时计算经历了近 10 年的快速发展,总体来说可以分成三大时代:
-
1.0 时代:2013 年到 2017 年,三大实时计算引擎并存。大家熟悉的 Jstorm 和 Blink 当时都还叫做流式计算。
-
2.0 时代:2017 年集团合并了三大实时计算引擎,Blink 凭借着出色的性能、高效的吞吐成为唯一的实时计算引擎,实现了大一统。在接下来的 4 年里,集团所有实时计算业务全部迁移到 Blink,阿里的实时计算业务经历了最飞速的增长,平台规模体量也从千级别增长到万级别,实时计算 all on Blink。
-
3.0 时代:随着前两年阿里收购了德国 Flink 母公司,阿里中国和德国团队联手打造了基于云原生新底座、搭载 Flink 开源新引擎的 VVP 新平台。在 2021 年双 11,VVP 新平台以大幅度的性能提升平稳支撑了双 11,宣告着阿里实时计算进入了全新的 3.0 时代。

-
第一阶段是平台运维,核心是帮助 SRE 解决超大规模体量的平台运维,也就是 Flink Cluster 集群运维的难题;
-
第二阶段是应用运维,核心是帮助集群上大量的实时计算用户解决应用侧 Flink 作业运维复杂的难题;
-
第三阶段是随着 3.0 时代的到来,集群底座全面云原生化,全域数据也随着云原生而标准化,运维能力如何向云原生和智能化快速演进和提升,成为我们新的挑战。
二、集群运维 Flink Cluster

-
一方面,Flink 平台上运行着一个非常典型的业务,就是双 11 大促当天 GMV 媒体成交翻牌器,也就是家喻户晓的成交额大屏,这个业务对于稳定性要求非常高。除了 GMV 翻牌器,Flink 还承载了阿里内部全部重要的实时计算业务,包括阿里妈妈、广告计量计费、搜索推荐、机器学习平台等核心电商业务的实时场景。这些实时场景既重要又实时敏感,稳定性是第一大挑战。
-
另一方面,由于平台规模体量巨大,涉及到几万台独享机器,多地域的部署,平台体量增长带来的平台复杂部署度的增加,所以局部异常又会成为常态,这是对稳定性的第二大挑战。


-
一类是由于用户侧自身作业行为导致的,通知用户去更改相应的作业,比如资源配置不合理导致 OOM、作业反压导致延迟等;
-
另一类异常是由于平台侧问题版本导致的,平台侧会进行大规模的主动升级来消灭这些问题版本。

-
第一,是往哪里切,实时计算对于网络的要求都是毫秒级,跨城有几十个毫秒肯定无法满足实时的要求。所以在平台侧部署架构上做了计算同城双机房部署,两两容灾,互为主备切流布局,解决了故障场景有地方可切。
-
第二,资源容量是有限的,平台这么大的体量不可能有容灾资源做预算,所以就需要做取舍。取高优先级的业务舍低优先级的业务,如何区分优先级?平台根据业务的场景建立了一套 Flink 作业的优先级标准,并配套着从申请到治理到整改,降级推出全过程的自动化管理体系,在业务侧精细化地区分优先级,确保真正高优业务的质和量。在资源有限的条件下,重保高优业务,以实现资源换资源。
-
最后一步是最复杂的,如何透明切走作业。核心的思路是复用存储,保证计算透明切换来确保业务的无感。


-
第一块压测指的是压测平台,首先提供给用户将生产到影子作业一键克隆的能力,其次还会提供大量大规模精准的造压、控压、稳压能力,并提供作业自动化性能的调优,以及最后一步生产一键上线全自动化的一站式压测解决方案。
-
第二块降级指的是降级平台,因为在大促 0 点峰值,需要将低优先级的业务快速降级来实现水位的合理控制。
-
第三块限流,还有一部分中优或高优业务,在大促状态不允许降级,但是能接受短时间的延迟,所以平台还基于 Linux 内核的 Cgroup 实现了作业 Pod 资源的隔离和限制,从而达到作业粒度计算精准限流的效果。
-
第四块是热点机器,也是大促最复杂的点。从集群层面看,集群卖出的资源和用户使用的资源是存在差异的,比如 1 个 Flink 作业申请了 10 个 CPU,而实际使用了 5 个 CPU,还有波峰波谷会导致集群层面水位不均衡。


-
第一步是发现热点机器,包括热点机器的 CPU、内存、网络、磁盘,难点在于热点机器的阈值是来自 SRE 线上丰富的经验。
-
第二步是分析,我们做了一系列的机器诊断工具来定位热点的进程,包括 CPU 到进程、IO 到进程,难点在于要求用户对于 Linux 整个系统的原理有深入的理解和分析。
-
第三步是业务的决策和策略,从热点机器进程关联到业务的数据做决策,不同的优先级能接受的策略是不一样的。
-
最后一步,才是真正的解决热点机器,低优先级通过降级或均衡,中高优先级则通过径流来实现热点机器的下降。



三、应用运维 Flink Job



-
事前部分,通过作业的运行指标和系统的全域事件来做预测,提前发现风险隐患,达到预防的效果,比如有作业发现的 failover 或者版本有问题等,这些异常还没有真正影响作业,通过体检能够发现这些问题。
-
事中部分,针对作业运行的全生命周期做诊断,包括启停类的问题,比如启动报错、启动慢、停止报错等,还包括运行起来性能不足、延时以及运行过程报错、数据一致性、准确性等问题。
-
事后部分,支持用户对于历史作业做全量的回溯。比如说想看昨天半夜 failover 的原因。

-
第一个是作业全生命周期状态检查,一个作业从控制台提交到资源分配,再到运行环境、依赖下载,再到 Top 的创建,到上下游的加载,最后数据处理,整个链路是一个非常复杂的流程,Adviser 就是把关键节点的耗时和全量的事件统一收集起来进行分析,最终能够做到在作业任何状态做异常诊断和定位。
-
第二个是作业运行态性能类的问题,主要针对各类实时监控指标做异常检测,或通过经验值、域值的判断来发现和分析异常。比如作业延时了,那就通过节点找到反压所在的节点,再找到 TM 所在的节点,然后分析机器异常,最后发现可能是某台机器 load 高。以此形成整个链路证据链的推导,做到关联下钻分析,定位到真实的根因。
-
第三个就是最高频的问题,作业在运行过程中有报错。核心的思路是收集各个组件的日志,比如提交的日志、调度的日志、failover 和有 JM 和 TM 的日志,将这些海量的异常日志通过日志聚类的算法,包括自然语言处理和实际提取,来将一些非结构化的日志变成结构化的数据,再合并同类项进行压缩,最后由 SRE 和研发来进行原因标注和建议,形成一套完善的专家经验。

-
第一种能力是升级,对作业问题版本进行透明升级以及配置的热更新,来解决作业在代码和配置等稳定性方面的隐患和异常。
-
第二种能力是优化,基于阿里内部的 Autopilot 来对作业进行性能的配置调优,从而帮助用户作业解决性能和成本的问题。
-
第三种能力是迁移,作业通过跨集群透明迁移,主要帮助用户在大规模作业场景下达到作业的高效管理。
-
最后一种是自愈修复,根据 Adviser 诊断出的各种风险和规则,配套有一键修复的自愈能力。

往期精选
戳我,查看原文视频 & 演讲PDF~
版权声明
本文为[Apache Flink]所创,转载请带上原文链接,感谢
https://toutiao.io/k/gooqgyf
边栏推荐
- 手动调整slf4j的日志等级
- DeFi 需要什么才能成为主流?
- C语言预处理问题
- android.database.sqlite.SQLiteException: Can't downgrade database from version 2 to 1
- How to insert a file into excel? What is the difference between excel insert object and attachment? (the inserted object can directly display the content, but I didn't display it?)
- vs2019中libmysql.lib乱码
- 数字化时代,SaaS软件如何成为国产化替代的轻骑兵?
- Alibaba cloud R & D collaboration service related agreement terms | cloud efficiency
- scala安装及环境配置
- 虫子 偶像稚晖君,向神看齐
猜你喜欢

It's been 2 years since the career change test. Give some advice to girls who are still hesitating

Mysql8. Method for resetting initial password above 0

MYSQL 第1章 数据库简介

Mysql数据库(3)

How to apply for a free SSL certificate? Pagoda panel SSL certificate installation and deployment complete tutorial

LNK2001 - unresolved external symbol in PCL test program

回归预测 | MATLAB实现Bayes-GRU(贝叶斯优化门控循环单元)多输入单输出

Mysql 执行流程

Amazon evaluates the autotrophic number. What should sellers do if they want to get a review?

元宇宙发展现状分析
随机推荐
Minimum steps of manufacturing letter ectopic words - C language solution
VMware Horizon 8 2111 部署系列(十三)创建应用程序池
如何解决MySQL中的死锁问题?
Golang Gorm框架初始化的优美解决方案
In the digital age, how can SaaS software become a light cavalry replaced by localization?
软件测试(三)p51-p104 软件测试用例方法、缺陷
智慧党建系统开发,智慧组工党员信息管理平台建设
浅谈NFT的注意力经济
想请问一下如何从数据库中找到软件注册码
Reproduction of paper -- Libra r-cnn: rewards balanced learning for object detection
你会“卖”SQL?
android. database. sqlite. SQLiteException: Can't downgrade database from version 2 to 1
请问这是什么原因,有关于MYSQL安装的
阿里云云效研发协同服务相关协议条款 |云效
Mysql数据库(2)
QT network and communication (TCP chat room)
另一视角看元宇宙:元宇宙文化正悄然改变世界
Insect makefile
Mysql8.0以上重置初始密码的方法
虫子 12864


