在流式计算越来越受到主流青睐的市场状况下,流式计算框架技术的掌握,正在成为大数据学习当中的重要部分。以Flink框架来说,作为新一代的流计算框架,越来越多地出现在大数据开发者们的技能树当中。今天的大数据入门分享,我们就来讲讲FLink的几个核心概念。
真正意义上的流计算框架,是从Storm开始的,但是在实际的发展当中,Storm在与Spark的竞争当中,陷入了尴尬的境地,而流计算的后来者Flink,则采用了全新的流计算思想。
Flink作为分布式流计算引擎,既可以进行流式计算,也可以进行批处理。这是Flink比Storm设计思想上的亮点,能够同时支持批处理和流计算,更能满足企业数据处理的多样化需求。
Flink的核心思想在于,有状态的流计算,将批处理作为一种特殊状态的流计算进行处理,从而实现了对批处理和流计算二者的支持。
Flink同样也可以与现行的技术生态实现很好的集成,可以运行在k8s、yarn、mesos等资源调度平台上,依赖hdfs等文件系统,输入包含事件和各种其他数据,经过Flink引擎计算后再输出到其他中间件或者数据库等。
Flink处理的是实时的unbounded data,数据源源不断,可能永远都不会结束,这就给数据完备性和failover带来了很大的挑战。
Flink的容错主要通过定期快照和数据回溯。每隔一段时间,Flink就会插入一些barrier,barrier从source流动到sink,通过barrier流动来控制快照的生成。快照制作完就可以保存在共享引擎里。一旦作业出现问题,就可以从上次快照进行恢复,通过数据回溯来重新消费。
Flink主要特点是高吞吐、低延时。在流式系统里,Flink的吞吐是很高的。同时,它也可以做到实时处理和输出,让用户快速看到结果。
1、快照机制
Flink的快照机制主要是为了保障作业failover时不丢失状态。Flink提供了一种轻量级的快照机制,不需要停止作业就可以帮助用户持久化内存中的状态数据。
2、事件时间
时间类型分为两种:
Event time(事件时间),指事件发生的时间,比如采集数据时的时间;
Processing time(系统时间),指系统的时间,比如处理数据时的时间。
如果对数据的准确性要求比较高的话,采用Event time能保障exactly-once。Processing Time一般用于实时消费、精准性要求略低的场景,主要是因为时间生成不是deterministic。
3、窗口机制
窗口机制就是把无界的数据分成数据块来进行计算,主要有三种窗口。
滚动窗口:固定大小的窗口,相邻窗口没有交集;
滑动窗口:每个窗口的大小是一样的,但是两个窗口之间会有重合;
会话窗口:根据活跃时间聚合而成的窗口,比如活跃时间超过3分钟新起一个窗口。窗口之间留有一定的间隔。
窗口会自动管理状态和触发计算,Flink提供了丰富的窗口函数来进行计算。主要包括以下两种:
Process Window Function,全量计算会把所有数据缓存到状态里,一直到窗口结束时统一计算。相对来说,状态会比较大,计算效率也会低一些;
Aggregate Function,增量计算就是来一条数据就算一条,可能我们的状态就会特别的小,计算效率也会比ProcessWindowFunction高很多,但是如果状态存储在磁盘频繁访问状态可能会影响性能。
关于大数据入门,Flink核心概念详解,以上就为大家做了基本的介绍了。Flink框架在近几年的发展速度很快,市场反响也非常好,越来越多的企业在招聘当中,要求大数据开发者掌握Flink。