大数据分析计算平台有很多,但是能做到实时计算的不多。包括 Storm 、Flink 等都各有优缺点,对阿里巴巴的庞大业务数据量来说,缺点被无限放大。因此阿里巴巴基于自己的业务开发了实时计算引擎 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 的原理
原创文章,作者:Carrie001128,如若转载,请注明出处:https://blog.ytso.com/252513.html