Flink:下一代流计算平台?

Flink是一个基于流计算的分布式引擎,提供高吞吐、低延迟的流处理能力,支持Exactly-Once计算和状态管理。其逐级反压机制、YARN和线程模型的结合以及灵活的窗口计算,使其在批处理和流处理中表现出色,成为可能的下一代流计算平台。
摘要由CSDN通过智能技术生成

简介

Flink是一个基于流计算的分布式引擎,以前的名字叫stratosphere,从2010年开始在德国一所大学里发起,也是有好几年的历史了,2014年来借鉴了社区其它一些项目的理念,快速发展并且进入了Apache顶级孵化器。

Spark以批计算的底层引擎同时支持批计算和流计算(把流切成小批),不同的是,Flink以流计算的底层引擎同时支持批计算和流计算,Flink提供了DataSet和DataStream的API,并在其上提供机器学习和图计算的库。最近,Flink也在发展SQL相关的API(Table),类似Spark中的DataFrame。

(此文默认读者有一定流计算基础,Storm经验)


优势

1.高吞吐且低延时


在简单case中,Flink吞吐可以是Storm的10倍,而延时在毫秒级(100ms以内)。
Storm以record by record的常驻任务模式,提供实时的计算,延时可在几十毫秒甚至10毫秒以内,但带来的代价是比较低的吞吐。Trident把数据流划成批次,但是执行起来仍然是Record级别的。所以Storm中,提高吞吐的有效方法是打包。
Spark Streaming不同于常驻任务模式,它将数据直接划成离散流,这样将流计算转换成了批计算,每一批都进行一次调度来运行,提高了吞吐,但是延时却依赖固定划成的时间段,时间段不能设置过小,因为每一批都会有任务调度等等的开销,一般Spark官方建议2-5s的时间段划分。

Flink同样提供了常驻任务的模式,并且为了克服RecordByRecord中吞吐量的问题,Flink发送数据时按照内存片来发送。内存片默认32KB,Flink把将要发送的数据序列化到内存片中,当内存片凑满或者超时,将此内存片发送出去,这里其实就有一个打包的逻辑,但是Flink不同于Storm的用户简单打包,Flink将数据直接序列化到受管理的内存byte数组中,这样这些业务对象很快被YoungGC掉了,不会导致FullGC频繁。
另外一方面,Flink的高吞吐也得益于它的序列化方式,通过DataStreamAPI,Flink了解到业务数据的Schema,从而生成定制化的序列化器,避免了昂贵的Kryo序列化(类型信息&
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值