思想 观点

为什么Flink能够受到众多科技巨头的青睐

 2019-10-09

提起大数据处理引擎,很多人会想到Hadoop或Spark,而在2019年,如果你身处大数据行业却没听说过Flink,那你很可能已经OUT了!

Flink是大数据行业一颗冉冉升起的新星,是继Hadoop和Spark之后的新一代大数据处理引擎。

2019年初,阿里巴巴以1.033亿美元的价格收购了总部位于德国柏林的初创公司Data Artisans,而Data Artisans的核心产品正是Flink。

 

一个手握栗子的小松鼠一时间风靡全球,成为各大公司追捧的新一代大数据处理引擎。

Flink技术不仅受到阿里巴巴的重视,同时还被腾讯、华为、网易、滴滴等大型互联网公司使用,已经快速延伸到各大互联网巨头公司。

那么,你是否知道Flink到底是什么?它为何突然被如此多的大公司青睐,成为新一代大数据处理引擎?

 

本文将简单介绍什么是批量和流式计算,为何需要选择一个可靠的流式计算平台,以及Flink为何能在各大开源项目中脱颖而出。


为什么需要流式计算?

首先,需要给未接触这个领域的小伙伴们简单普及一下批量计算与流式计算的概念。

批量计算

批量(batch),就是对一批数据进行计算(数据量可大可小),比如:

微信运动每天晚上有一个批量任务,把用户好友一天所走的步数统计一遍,给出一个排序结果,推送给用户;

支付宝每月账单日有一个批量任务,统计用户当月的消费总额,给出一份月度账单,推送给用户;

批量任务一般是对一段时间的数据聚合后进行处理,对于微信运动、支付宝账单等数据量庞大的应用情景,后台计算会非常耗时。

流式计算

数据其实是以流(Stream)的形式源源不断地产生,我们每时每刻的运动数据都会不断累积到手机传感器上,每天发生的交易信息都被软件后台记录,用户无时无刻不在使用手机APP并产生相应行为,微观和宏观的经济行为一直在发生。

因此,对于商家来说,实时获取信息就显得非常必要,比如:

双十一电商大促,管理者要以秒级的响应时间查看实时销售业绩、库存信息,以及与竞品的对比结果,争取更多的决策时间和空间;

股票交易要以毫秒级的速度来根据新信息做出响应;

风险控制要对每一份欺诈交易迅速做出处理,以减少不必要的损失;

网络运营商要以极快速度发现网络和数据中心的故障等等。

响应速度越快,越能减少损失,增加收入,IoT物联网和5G通信的兴起将为数据生成提供更完美的底层技术基础。

海量的数据在IoT设备上采集生成,并通过更高速的5G通道传输到服务器,实现更庞大的数据处理规模,处理更多更复杂的用户需求。

 

为什么需要一个可靠的流式计算引擎?

处理实时流的平台,通常被称为流式计算平台或实时计算平台,我们为什么需要一个可靠的流式计算引擎?举个例子:

股票是一种对各类信息依赖性非常强的交易方式,Flink官方网站在2015年提供了一个将各类股票价格与Twitter上实时微博做相关分析的案例。

现代社会,构建这样一个作用的系统非常有必要,我们不可能24小时持续盯着某一条线上信息,或者某一个人的动态,如果有一个自动化的系统帮助我们做分析和预警,就将为我们争取到更多时间。

假设你有数支股票交易数据流,系统可以通过这个数据流计算以10秒为一个时间窗口的股票价格波动,选出那些变化幅度超过5%的股票,并将其与互联网上的实时文本数据做相关分析,以此判断哪些信息有可能影响股票走势。

当相关分析的结果足够有说服力时,就可以将这个系统部署到生产环境,实时处理股票与互联网数据,产生分析报表,发送给交易人员。


Apache Flink

如果用Flink解决上述股票交易的场景,就可以大大简化步骤,你只需要设置时间窗口,并在这个时间窗口下做一些数据处理的操作,时间节点也可以根据数据量自行确定。

Flink不仅提供了大量简单易用的API,还可以适应多节点并行的场景,拥有很强的可扩展性和容错性。

在Flink之前,不乏流式处理引擎,比较著名的有Storm、Spark Streaming。

 

Flink作为新一代计算引擎,官方解释:它是一个支持在有界和无界数据流上做有状态计算的大数据引擎。

比起Storm,它的吞吐量更高,延迟更低,准确性能得到保障;比起Spark Streaming,它以事件为单位,达到真正意义上的实时计算,且所需计算资源相对更少。

 

数据以流的形式产生,分为有界(bounded)和无界(unbounded)两种形式,批量处理其实就是一个有界的数据流,是流处理的一个特例。


Flink是一个分布式系统,它利用上千个节点的上万个CPU核心,部署在Yarn、Mesos以及Kubernetes等资源调度平台上。

Flink在计算过程中能够记录状态,并将这些状态数据定时以checkpoint的形式做备份,这样即使程序失败,重启后还能快速恢复到失败时间点上。

 

未来,Flink也在入局机器学习和图形计算领域,并试图把自己打造成一个一站式大数据与人工智能引擎。