找回密码
 立即注册
查看: 27|回复: 0

数据词典:Flink

[复制链接]

656

主题

70

回帖

2291

积分

管理员

积分
2291
发表于 2025-11-7 13:34:54 | 显示全部楼层 |阅读模式
FlinkApache软件基金会的一个顶级项目,是为分布式、高性能、随时可用以及准确的流处理应用程序打造的开源流处理框架,并且可以同时支持实时计算和批量计算。Flink起源于Stratosphere 项目,该项目是在2010年到2014年间由柏林工业大学、柏林洪堡大学和哈索普拉特纳研究所联合开展的。20144月,Stratosphere代码被贡献给Apache软件基金会,成为Apache软件基金会孵化器项目。之后,团队的大部分创始成员离开大学,共同创办了一家名为Data Artisans的公司。在项目孵化期间,为了避免与另外一个项目发生重名,Stratosphere被重新命名为Flink。在德语中,Flink是“快速和灵巧”的意思,使用这个词作为项目名称,可以彰显流计算框架的速度快和灵活性强的特点。项目使用一只棕红色的松鼠图案作为标志,因为松鼠具有灵活、快速的特点。
201412月,Flink项目成为Apache软件基金会顶级项目。目前,FlinkApache软件基金会的5个最大的大数据项目之一,在全球范围内拥有350多位开发人员,并在越来越多的企业中得到了应用,在国内,包括阿里巴巴、美团、滴滴等在内的知名互联网企业,都已经开始大规模使用Flink作为企业的分布式大数据处理引擎。
Flink具有十分强大的功能,可以支持不同类型的应用程序。Flink的主要特性包括:批流一体化、精密的状态管理、事件时间支持以及精确一次的状态一致性保障等。Flink 不仅可以运行在包括 YARNMesosKubernetes等在内的多种资源管理框架上,还支持在裸机集群上独立部署。在启用高可用选项的情况下,它不存在单点失效问题。事实证明,Flink 已经可以扩展到数千核心,其状态可以达到 TB 级别,且仍能保持高吞吐、低延迟的特性。世界各地有很多要求严苛的流处理应用都运行在 Flink 之上。
Flink是理想的流计算框架。流处理架构需要具备低延迟、高吞吐和高性能的特性,而目前从市场上已有的产品来看,只有Flink可以满足要求。Storm虽然可以做到低延迟,但是无法实现高吞吐,也不能在故障发生时准确地处理计算状态。Spark Streaming通过采用微批处理方法实现了高吞吐和容错性,但是牺牲了低延迟和实时处理能力。Flink实现了Google Dataflow流计算模型,是一种兼具高吞吐、低延迟和高性能的实时流计算框架,并且同时支持批处理和流处理。此外,Flink支持高度容错的状态管理,防止状态在计算过程中因为系统异常而出现丢失。因此,Flink就成为了能够满足流处理架构要求的理想的流计算框架。
Flink实现了Google DataFlow流式计算模型,与其他的流计算框架相比,Flink具有突出的特点,它不仅是一个高吞吐、低延迟的计算引擎,同时还具备其他的高级特性,比如提供有状态的计算,支持状态管理,支持强一致性的语义,以及支持对消息乱序的处理。
总体而言,Flink具有以下优势:
1.同时支持高吞吐、低延迟、高性能
对于分布式流计算框架而言,同时支持高吞吐、低延迟和高性能是非常重要的。但是,目前在开源社区中,能够同时满足这三个方面要求的流计算框架只有FlinkStorm可以做到低延迟,但是无法实现高吞吐。Spark Streaming可以实现高吞吐和容错性,但是不具备低延迟和实时处理能力。
2.同时支持流处理和批处理
Flink不仅擅长流处理,同时也能够很好地支持批处理。对于Flink而言,批量数据是流数据的一个子集,批处理被视作一种特殊的流处理,因此,可以通过一套引擎来处理流数据和批量数据。
3.高度灵活的流式窗口
在流计算中,数据流是无限的,无法直接进行计算,因此,Flink提出了窗口的概念,一个窗口是若干元素的集合,流计算以窗口为基本单元进行数据处理。窗口可以是时间驱动的(Time Window,例如:每30秒钟),也可以是数据驱动的(Count Window,例如:每一百个元素)。窗口可以分为:翻滚窗口(Tumbling Window,无重叠)、滚动窗口(Sliding Window,有重叠)和会话窗口(Session Window)。
4.支持有状态计算
流计算分为无状态和有状态两种情况。无状态计算观察每个独立的事件,并根据最后一个事件输出结果,Storm就是无状态的计算框架,每一条消息来了以后,彼此都是独立的,和前后都没有关系。有状态的计算则会基于多个事件输出结果。正确地实现有状态计算,比实现无状态计算难得多。Flink就是可以支持有状态计算的新一代流处理系统。
5.具有良好的容错性
当分布式系统引入状态时,就会产生“一致性”问题。一致性实际上是“正确性级别”的另一种说法,也就是说,在成功处理故障并恢复之后得到的结果,与没有发生故障时得到的结果相比,前者有多正确?Storm只能实现“至少一次”(at-least-once)的容错性,Spark Streaming虽然可以支持“精确一次”(exactly-once)的容错性,但是,无法做到毫秒级的实时处理。Flink提供了容错机制,可以恢复数据流应用到一致状态。该机制确保在发生故障时,程序的状态最终将只反映数据流中的每个记录一次,也就是实现了“精确一次”(exactly -once)的容错性。容错机制不断地创建分布式数据流的快照,对于小状态的流式程序,快照非常轻量,可以高频率创建而对性能影响很小。
6.具有独立的内存管理
Java本身提供了垃圾回收机制来实现内存管理,但是,在大数据面前,JVM的内存结构和垃圾回收机制往往会成为掣肘。所以,目前包括Flink在内的越来越多的大数据项目开始自己管理JVM内存,为的就是获得像C一样的性能以及避免内存溢出的发生。Flink通过序列化/反序列化方法,将所有的数据对象转换成二进制在内存中存储,这样做一方面降低了数据存储的空间,另一方面能够更加有效地对内存空间进行利用,降低垃圾回收机制带来的性能下降或任务异常风险。
7.支持迭代和增量迭代
对某些迭代而言,并不是单次迭代产生的下一次工作集中的每个元素都需要重新参与下一轮迭代,有时只需要重新计算部分数据同时选择性地更新解集,这种形式的迭代就是增量迭代。增量迭代能够使得一些算法执行得更高效,它可以让算法专注于工作集中的“热点”数据部分,这导致工作集中的绝大部分数据冷却得非常快,因此随后的迭代面对的数据规模将会大幅缩小。Flink的设计思想主要来源于HadoopMPP数据库和流计算系统等,支持增量迭代计算,具有对迭代进行自动优化的功能。
【出处】林子雨.大数据技术原理与应用(第3版).人民邮电出版社,20211.

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|全数联人才测评中心 ( 京ICP备2024094898号 )

GMT+8, 2025-11-18 06:41 , Processed in 0.096450 second(s), 20 queries .

版权所有: 全数联人才测评(北京)中心

友情链接: 中华全国数字人才培育联盟 全数联人才测评中心学习平台 全数联人才测评中心存证平台 全数联人工智能专员认证中心

快速回复 返回顶部 返回列表