权威详解 | 阿里新一代实时计算引擎 Blink,每秒支持数十亿次计算

作者介绍
王峰,淘宝花名”莫问",2006年毕业后即加入阿里巴巴集团,长期从事搜索和大数据基础技术研发工作,目前在计算平台事业部,负责实时计算北京研发团队。

在阿里巴巴的11年工作期间,持续专注大数据计算与存储技术领域,基于Hadoop开源生态打造的数据基础设施一直服务于搜索、推荐等阿里核心电商业务场景,最近一年带领团队对Apache Flink进行了大量架构改进、功能完善和性能提升,打造出了阿里新一代实时计算引擎: Blink。目前数千台规模的Blink生产集群已经开始在线支持搜索、推荐、广告、蚂蚁金服等核心实时业务场景。

王峰在清华大学演讲
实时计算时代来临
随着互联网应用的普及、智能硬件的发展,数据的种类和规模都呈现了爆炸式的增长,各行各业都希望能够从大数据中发掘出更深层次的信息和知识,并产生实际价值。数据挖掘手段也逐渐从基本的数据统计向更高层次的机器学习和深度学习演变,但这些都需要强大的计算能力作为支撑,因此大数据价值的体现离不开大数据计算平台的发展。

目前大数据业界在计算技术上已经取得了显著的成果,例如:第一代开源的大数据处理技术Hadoop已经可以处理超大规模的数据集合,第二代开源的大数据处理技术Spark更好的利用了内存,并进一步加快了大数据处理的性能。

各大公司也都基于自身业务场景和数据规模定制了自己的大数据计算平台,但这些大数据计算平台大都是批处理系统,虽然具备海量数据处理能力,但在时效性上有明显的滞后。显然,数据的价值不仅体现在空间维度上,同时也在时间维度上进行伸展,很多场景下数据的价值也会随着时间的流逝而逐渐消失。因此,大数据计算平台需要能够尽可能的提升计算的时效性,越快地从数据中挖掘出信息就意味着能够获取到更大的价值。

时效性对数据价值的影响尤其在电子商务领域更加明显。通常人们在不同时刻会有着不同的消费需求和潜在目标。很多时候,这些需求和目标都是临时的(即和历史行为关联度较低),并且从产生到结束之间的时间是非常有限的。这种情况在阿里巴巴双十一大促这样的场景中表现的尤为明显。

大促场景下,用户会由于丰富的促销活动和环境而临时产生更多的购物需求,并且每个购物需求的有效期是有限的。因此,搜索和推荐系统需要及时发现用户的需求变化,在数据有效期内完成模型更新,推荐用户当前感兴趣的商品。此外,阿里巴巴的数据大屏也需要在大促期间实时展示成交额等大家关注的统计信息,而不是大促结束后第二天再让大家看到数据。

其实目前不仅在阿里巴巴,各个行业都对大数据时效性的计算需求在日益增加,因此,阿里巴巴需要研发世界级一流的流式计算引擎,实时处理海量数据,提供在线统计、学习和预测能力,不仅支持阿里巴巴自己的核心电商场景,同时也能通过阿里云向外部中小企业提供流式计算服务,输出实时计算能力,这就是我今天要分享的最新一代阿里巴巴实时计算引擎Blink。

流式计算介绍
显然批量计算模型是无法满足当前大数据实时计算需求的,只有流式计算模型才是实时计算的天然计算模型,因此我先介绍下流式计算的基本思想,尤其是区别于传统批量计算的一些概念。批量计算是对于有限固定的数据集合进行处理,流式计算是对无限数据流的处理,即计算无法确定数据何时会结束。从另一个角度看,批量计算其实也可以认为是流式计算的一种特例,因此批量计算可以看做是一个数据流中的片段,即有明确开始和结束标记的数据流,如下图所示:

完善的流式计算不仅应该提供实时计算能力,还应该支持计算过程中的状态管理,状态主要是指计算过程中需要的数据或者变量,例如:统计计算中的aggregation(sum/min/max…),机器学习中的feature和model,状态管理包括这些数据的存储、备份、恢复,版本管理,提供读写访问API,并保证一致性,如下图所示:

此外,完善的流计算还需要考虑数据的时序问题,因为现实场景中,数据的产生顺序和接收顺序未必一致,因此需要给数据附带时间戳属性,即:event time,计算逻辑可以按照数据的event time来处理,这样可以解决数据的乱序问题,配合watermark机制,可以较好的解决time window计算,如下图所示:


流和批统一的计算引擎

完整的生态系统


状态管理和一致性
Chandy-Lamport算法是Flink支持状态管理和强一致性的核心理论基础,算法基础思想如下图所示:


Chandy-Lamport算法的核心思想就是定期在流式计算任务中插入Barrier,然后触发整个流做一次Checkpoint,即将任务的State做一次Snapshot持久化保存。在下次任务重启的时候,可以基于上次成功的Checkpoint进行恢复,过程如下图所示:

Flink的问题

综上所述,Flink是一套理念和架构设计非常先进的流处理引擎,并几乎支持了流式计算所有的特质,但Flink发展尚在初期,在活跃度和成熟度上稍有欠缺,并且尚未在业内得到大规模生产实践的检验,因此是无法直接应用在阿里巴巴这种级别的生产场景中的,因此我们在2015年下半年启动了Blink项目,目标是扩展、优化、完善Flink,使其能够应用在阿里巴巴大规模实时计算场景,并将此项目命名为Blink,下面我将介绍Blink的设计以及在阿里巴巴的应用。

Blink介绍
Blink产生背景

在2015年,当时我们还是阿里巴巴搜索事业部的数据技术团队,负责阿里巴巴所有商品搜索后台的数据处理,包括淘宝,天猫,B2B等全球商品,面对海量商品的数据处理,我们需要在维护两套数据处理流程,一套是每天晚上的全量流程,同时还要一套白天的实时增量流程,为了降低开发和维护成本,我们开始探索一套流和批统一的计算引擎。

当时我们重点分析对比了Spark和Flink两套技术,最后虽然觉得Spark相对成熟稳定,但Spark是从Batch出发,模拟Streaming,而Flink正好相反是从Streaming出发,认为Batch是Streaming的Special Case,因此我们感觉Flink的设计思想更先进,更适合未来的计算发展方向,更适合我们的需求,因此我们决定选择Flink技术方向。
Blink - Alibaba Flink

虽然Flink具备流计算的各种优势,但Flink在成熟度和活跃度上的不足,使得我们无法在阿里巴巴业务场景中直接使用,因此我们启动了Blink项目,目标就是扩展、优化、完善Flink,使其能够应用在阿里巴巴大规模实时计算场景,并将我们在阿里巴巴对Flink的改进都回馈给开源社区。

最近一年中Blink已经将多项架构、功能和性能改进贡献给Flink社区,例如:

  • Flink架构升级,插件化原生支持不同调度系统,并实现了原生运行在Hadoop YARN上
  • Failover稳定性改进,优化了Task/TaskManager以及JobManager各种组件Fail的场景处理
  • 提出并实现了增量式Checkpoint的架构,使得Flink的Checkpoint/Recovery速度大幅提升,成本明显下降
  • 提出并实现了Async Operator,通过异步方式,让I/O密集型计算节点的性能大幅提升
  • 提出了大量Table API的全新设计,以及流和批在SQL层面的统一概念和方案

Blink在阿里巴巴的现状

Blink实时计算引擎在阿里巴巴内部是运行在Hadoop集群上的,Blink计算任务会根据自己的需求向YARN申请计算资源,运行过程中周期性将计算状态持久化到HDFS上,以方便随时恢复,因此可以看出新型的Blink计算平台也可以很好的leverage成熟的Hadoop生态。

在API层,Blink提供了基础的DataStream/DataSet API,用户可以利用基础API有较高自由度的开发。此外,Blink重点提供了Table API/SQL这种高级语言API,可以降低门槛让更多开发人员以更低成本进行开发,这对于更多更快速的业务接入是非常有价值了,而且在SQL层Flink之前的进展是非常缓慢的,Blink对Flink给与了非常及时的补充和完善。

此外,基于Blink,我们建设出了一套在线机器学习平台Porsche,其为算法人员提供了一套非常丰富的算法插件机制,帮助算法人员快速搭建各种常用的机器学习流程。因此,Porsche完全leverage了Blink的实时计算能力,并释放了Blink在实时在线机器学习领域的力量。

目前Blink已经在阿里巴巴生产环境运行将近一年时间,支持了阿里巴巴多条核心业务线,例如:搜索,推荐,推荐,蚂蚁和安全等,大致的生产运行规模如下所示:

  • 运行的总机器数已经超过3000台
  • 最大的生产集群机器数已经超过1500台
  • 每秒支持数十亿次的实时计算
  • 最大的生产任务已经超过5000个并发,包含10TB级的State,亿级TPS

Blink在去年阿里巴巴双11购物节中完成了第一次正式的挑战,搜索和推荐全实时链路全天稳定运行,不仅保证了淘宝、天猫商品实时更新无延迟,同时基于Blink的在线机器学习平台Porsche由于能够较好的将用户和商品行为实时学习,因此产生了非常好的时效性效果,大幅提升了双11商品成交转化率。

例如:双11当天有很多爆款商品,销售速度非常快,可能很快售罄,如果将用户都引导到这些商品上,会导致用户实际没有成交机会,浪费大量流量,良好的时效性数据可以让在线学习平台较快的预测到这种场景,并将用户流量进行更加合理的分配。因此可以看出,基于实时计算的在线机器学习平台其实已经开始真正走向舞台,并产生巨大价值。

Blink在阿里巴巴的经典案例

实时A/B Test

A/B Test的目标就是通过实时数据分析和统计反馈,不断调整在线系统的算法模型,自动适应到最佳效果, A/B Test数据收集和处理流程大致如下图所示,Blink任务从线上日志实时同步用户行为数据,然后解析、过滤、统计,最终将各项统计指标写入OLAP系统中,让算法或者运营人员可以实时看到线上实际效果,从而合理调整配置各种模型,逐步达到最佳效果。

商品数索引构建流程

淘宝的搜索引擎是用户在淘宝购物的最主要入口,淘宝的商品数据处理和索引构建流程大致如下图所示,淘宝的商品库都存储的阿里巴巴的MySQL集群中,搜索的数据处理流程需要从MySQL将数据同步到搜索引擎后台的HBase存储中(类似:Google都将网页抓取到BigTable中),然后进行各种业务逻辑处理和索引构建,最终将索引推送到在线搜索引擎中提供搜索服务。

由于淘宝的商品搜索引擎需要在每天白天不断进行实时商品更新,同时晚上还需要一套额外的全量商品更新流程,因此基于Blink的统一计算模型,流式计算和批量计算可以使用一套用户逻辑代码完成。

Porsche – 在线机器学习平台

在线机器学习平台利用了Blink强大的实时计算能力,能够实时的对海量用户和商品行为数据进行流式特征提取以及训练学习,并将实时更新的特征和模型实时同步给在线的搜索和推荐引擎,实现个性化搜索和推荐,数据流程如下图所示:

Blink技术架构

从Blink的架构图中可以看出,Blink在内部模块组成上和Flink是有着非常清晰的界限的,绿色部分是和Flink共享的基础核心框架,Blink在这些框架、协议和接口上的改进都会回馈给社区,保证兼容性。

但蓝色部分是扩展层,例如:资源管理,状态存储,运维监控、Debug工具,输入输出层等,Blink都会根据阿里巴巴技术生态和业务场景进行定制开发,使得Blink能够在和Flink共享基础内核和生态的前提下,依然能够灵活支持阿里巴巴自身的场景需求。

这种架构设计,将之前开源技术的开放通用化和企业需要定制需求的矛盾进行了解耦,使得我们既可以和开源社区密切合作,享受开源的红利,同时也可以根据阿里巴巴自身需求进行高度定制和优化,不会受制于外部不可控因素。

Blink的未来

目前Blink已经在阿里巴巴内部达成共识,成为阿里巴巴统一的实时计算引擎,接下来我们将继续加大在Blink技术发展上的投入,并与开源社区更加密切的合作,突进流式计算的发展。应用场景上,一方面会继续扩大计算规模,并提推出内部统一实时计算服务,统一支持阿里内部的所有实时计算业务;另一方面也将会通过阿里云的公有云和专有云渠道向外界输出我们的实时计算能力,让更多行业和用户也都能享受到阿里巴巴实时计算的技术成果。

总之,Blink的实时计算之路刚刚开启,未来必将有更大的挑战和机遇,也非常欢迎各位对实时计算有兴趣的技术爱好者以及高校学子们投身到这件开创新一代计算平台的事情上来。
作者:王峰
原文链接

时间: 2024-09-17 04:45:25

权威详解 | 阿里新一代实时计算引擎 Blink,每秒支持数十亿次计算的相关文章

详解阿里27位合伙人与花名:前台童文红最传奇

如果说2013年,关于创业合伙人最大的话题是创业大片<中国合伙人>,2014年的创业大片一定是可能会成为中国企业最大IPO纪录的阿里巴巴上市,而其昨天披露的27名合伙人名单,更成为世人关注的焦点.不过引起更多注意的是,此次阿里合伙人里有近半数来自小微金服,可以说表面相对独立的小微金服,在整个阿里巴巴集团体系中之至关重要.以下看看浙江日报记者陈树对他最为熟悉的这些阿里合伙人所作详解:6月16日,阿里巴巴向美国证监会递交了招股书更新文件,与首次提交招股书时所披露的不同,此次阿里合伙人名单由28人降

腾讯数十亿广告的秘密武器:利用大数据实时精准推荐

本文是福布斯中文网"数据大玩家"专栏中的一篇文章.接受提问的蒋杰先生,是腾讯数据平台部总经理,在加入腾讯前,他曾经是支付宝的数据经理.提问的车品觉先生,是中国信息协会大数据分会副会长. 在过去几年,你在腾讯做了什么来推动大数据的应用? 过去三年,我一直在坚持一件事:推动大数据的实时应用.现在从国外数据中心的数据,一秒钟可以达到深圳数据中心,这就是腾讯具备的数据能力.有了这个能力,就可以做很多商业化行为的模式. 目前腾讯收集的数据已经超过了1万亿条, 计算机规模已经超过了8千8百台.这么

基于Apache Flink的实时计算引擎Blink在阿里搜索中的应用

阿里巴巴是世界上最大的电子商务零售商. 我们在2015年的年销售额总计3940亿美元,超过eBay和亚马逊之和.阿里巴巴搜索(个性化搜索和推荐平台)是客户的关键入口,并承载了大部分在线收入,因此搜索基础架构团队需要不断探索新技术来改进产品. 在电子商务网站应用场景中,什么能造就一个强大的搜索引擎?答案就是尽可能的为每个用户提供实时相关和准确的结果.同样一个不容忽视的问题就是阿里巴巴的规模,当前很难找到能够适合我们的技术. Apache Flink就是一种这样的技术,阿里巴巴正在使用基于Flink

阿里移动技术Overview,详解阿里云移动云Apsara Mobile前世今生

2017杭州云栖大会阿里移动云峰会暨Apsara Mobile品牌发布会上,阿里资深技术专家天施带来<阿里移动技术Overview>的演讲.本文主要对移动十年进行总结,进而回顾了阿里这几年的移动技术变迁,包括Mobile First & Super APP基本原则.技术创新推动组织升级和阿里云移动云Apsara Mobile整个体系介绍和专有云EMAX服务的开启,最后对移动未来进行了展望.   以下是精彩内容整理: 去年阿里做了一年的Weex开源,业界也有很多声音,一直到今天,大家都说

【百科】详解阿里云技术核心——飞天

飞天(Apsara)是由阿里云自主研发.服务全球的超大规模通用计算操作系统.它可以将遍布全球的百万级服务器连成一台超级计算机,以在线公共服务的方式为社会提供计算能力.  从PC互联网到移动互联网到万物互联网,互联网成为世界新的基础设施.飞天希望解决人类计算的规模.效率和安全问题.飞天的革命性在于将云计算的三个方向整合起来:提供足够强大的计算能力,提供通用的计算能力,提供普惠的计算能力. 飞天诞生于2009年2月,目前为全球200多个国家和地区的创新创业企业.政府.机构等提供服务.   为什么叫飞

是如何做到系统无缝迁移的? 褚霸详解阿里云数据库架构演进和实践

摘要:阿里云数据库从最初的只支持MySQL,到现在支持关系数据库.NoSQL.HTAP.EMR产品体系,在管控系统和数据链路上做了好几次重大架构迭代,云产品很长的生命周期里面会遇到新老架构共存,如何做到架构连续和系统无缝迁移是个很大的挑战, 本文将为你分享云数据库架构演进和实践. 以下内容均根据演讲PPT整理而成. 在2016年ArchSummit全球架构师北京峰会上,阿里云研究员余锋,做了题为<云数据库架构演进和实践>的精彩演讲. 个人简介:余锋(花名:褚霸),阿里云研究员,有超过18年的网

详解阿里云ECS云服务器

ECS的全称叫Elastic compute service,是一种弹性伸缩的计算服务,也是阿里云上最核心 最基础的云计算服务,为什么说它是弹性伸缩呢,因为它可以在10分钟内启动或释放100台云服务器,在不停机搭的状态下完全可以升级服务器的带宽,停机的情况下可以升级服务器的CPU和内存,说到这里,你会发现,很像我们虚拟机下的KVM XEN,没错阿里用的正是XEN+加上自己独特的业务方案,可能阿里云进行二次开发增加了许多功能只不过阿里云自主研发飞天平台下的某一项目而已,相比较腾讯云则是用的全虚拟化

详解阿里与小微新协议:至少获93.75亿美元回报

中介交易 SEO诊断 淘宝客 云主机 技术大厅 新浪科技 崔西 IPO在即的阿里巴巴集团北京时间8月13日凌晨更新招股书,披露经阿里巴巴董事会.雅虎.软银.小微金服等各方审议通过的阿里巴巴集团和小微金服集团的股权和资产购买协议,并终止了2011年各方达成的框架协议. 两版协议相比,变化到底在哪里?这些变化背后又有哪些安排,出于何种考虑?以下是根据招股书及一些公开资料进行的分析: 一.阿里集团至少获93.75亿美元回报 公开资料显示,2011年7月,阿里巴巴集团.雅虎和软银就支付宝股权分拆事宜签署

详解什么是Java规则引擎(上)

问题描述 本文对Java规则引擎与其API(JSR-94)及相关实现做了较详细的介绍,对其体系结构和API应用有较详尽的描述,并指出Java规则引擎,规则语言,JSR-94的相互关系,以及JSR-94的不足之处和展望 复杂企业级项目的开发以及其中随外部条件不断变化的业务规则(businesslogic),迫切需要分离商业决策者的商业决策逻辑和应用开发者的技术决策,并把这些商业决策放在中心数据库或其他统一的地方,让它们能在运行时(即商务时间)可以动态地管理和修改从而提供软件系统的柔性和适应性.规则