简介:本文解释了Flink 是什么以及为什么它正在成为下一代大数据处理框架的标准。
作者:张利兵
如需转载,请联系华章科技。
01 什么是Flink?
在当今数据量不断增加的时代,各种业务场景产生大量的业务数据,如何有效地处理这些不断产生的数据是当今大多数企业都关心的问题。
雅虎的Hadoop开源让越来越多的大数据处理技术受到公众的关注。例如,流行的大数据处理引擎Apache Spark已经基本上被取代,成为当前大数据处理的标准。
然而,随着数据的不断增长和新技术的不断发展,企业逐渐认识到实时数据处理的重要性,这就需要能够支持高吞吐量、低延迟、高性能的流处理技术开始了。处理不断增长的数据。
与传统数据处理模型相比,流式数据处理效率更高、成本更低。 Apache Flink是近年来开源社区不断发展的一个分布式处理框架,可以同时支持高吞吐量、低延迟和高性能。
2010年至2014年间,柏林工业大学、柏林洪堡大学和哈索·普拉特纳研究所联合启动了名为“Stratosphere:云信息管理”的研究项目。该项目逐渐在社会上获得了一定的声誉。 2014 年4 月,Stratosphere 代码被贡献给Apache 软件基金会,并成为Apache 基金会孵化器项目。
该项目的所有原始核心成员都是Stratosphere 的原始核心成员,但该团队的大多数创始成员后来都离开了学校,并共同创立了主要专注于实施Stratosphere 的公司。后来被商业化为Frink。在项目孵化期间,项目Stratosphere 更名为Flink。
Flink是德语单词,意思是“高速”和“高灵敏度”,用来体现流数据处理器的高速和灵活性。同时,主要采用棕色和红色的松鼠图案作为Flink项目的标志。由于Squirrel灵活敏捷的特性,Flink正式获得了社区开发者的关注。
02 为什么Flink会成为下一代大数据处理框架的标准?
2014年12月,该项目成为Apache软件基金会顶级项目,并已从2015年9月发布的第一个稳定版本0.9发布到2019年4月的1.8版本,并进行了进一步的社区开发。 Flink 目前在全球拥有超过350 名开发者,新功能不断发布。
与此同时,全球越来越多的公司开始使用Flink。阿里巴巴、美团、滴滴等国内著名互联网公司都大规模使用Flink作为分布式大数据处理引擎。
Flink 近年来逐渐被人们所熟知和使用的主要原因是,Flink 不仅提供了同时支持高吞吐量、低延迟和一次性语义的实时计算能力,而且还提供了流式计算,因为它还提供了基于计算的计算能力。计算。该引擎处理批量数据的能力可以实现批量和流的集成。同时,阿里巴巴Blink的开源,显着加强了Flink在批量计算领域的支持。
诸多出色的特性使得Flink成为开源大数据数据处理框架中的后起之秀,并且随着国内社区的不断推广,越来越多的国内企业开始使用Flink作为实时数据处理技术。在不久的将来,Flink将成为企业内部的主流数据处理框架,并最终成为下一代大数据数据处理框架的标准。
03 Flink的重要特性及优势
随着技术的进步,状态流计算正在成为企业构建数据平台的架构模型。从社区角度来看,该技术实现的开源解决方案是Apache Flink。 Flink通过实现Google Dataflow流式计算模型,提供了高吞吐量、低延迟、高性能、实时的流式计算框架。
状态计算架构
同时,Flink 支持高效的容错状态管理,为了防止计算过程中系统异常导致状态丢失,Flink 定期使用分布式快照技术。 CheckPoint实现状态持久化。分布式维护允许系统在发生停机或异常情况时正确恢复状态,因此您始终可以计算出正确的结果。
数据架构的演进涉及到不断的技术更新。 Flink 拥有先进的架构理念和许多出色的功能,并且在每个发布的版本中不断推出新功能。
例如,已经提出了Queryable State功能。这使得用户可以直接远程获取流计算任务的状态信息。这意味着您可以直接从流应用程序查询数据,而无需实际访问数据库。 - 实时交互式查询企业可以直接从Flink状态查询最新结果。当然,这个功能还处于测试阶段,但我认为Flink 在不久的将来会变得更加完善。它将作为实时流处理的框架,并有可能成为一套实时存储引擎,让更多用户受益于有状态计算技术。
同时支持高吞吐量、低延迟和高性能。 Flink 是一个集高吞吐量、低延迟和高性能于一体的分布式流数据处理框架。
Apache Spark是一个非常成熟的计算框架,它只关心高吞吐量和高性能特性,无法保证Spark Streaming流计算的低延迟。另一方面,Apache Storm仅支持低延迟和高性能特性,但无法满足高吞吐量要求。实现高吞吐量、低延迟和高性能这三个目标对于分布式流计算框架至关重要。
支持事件时间(event time)的概念。窗口计算在流计算领域发挥着重要作用。然而,大多数当前的计算框架还使用系统时间(处理时间)来表示发送事件的时间。 Flink 是一个处理系统主机当前时间的计算框架,可以支持使用事件产生时间基于Event Time 语义的窗口计算。这种时间机制可以准确计算数据流量。即使事件无序或延迟到达,结果也不会受到网络传输或计算框架的影响,同时保留最初生成的事件的时间维度。
状态计算支持Flink 在1.4 版本中实现了状态管理。所谓状态就是在流式计算过程中将算子的中间结果数据保存在内存或DB中,等待下一个事件输入并检索。计算不需要基于所有原始数据的统计结果,显着提高系统性能,也减少了耗时的计算过程。
对于涉及非常大量的数据和非常复杂的逻辑运算的流式操作,基于状态的流式计算非常有用。
支持高度灵活的窗口操作由于数据在流处理应用中是连续的,因此您可以对一定范围的流数据进行聚合,例如统计过去有多少用户点击了某个特定项目。对于网页来说,需要定义一个收集最近一分钟数据的窗口,并对这个窗口内的数据进行计算。
Flink 将窗口分为基于时间、计数、会话和数据驱动的窗口操作,并且可以自定义灵活的触发条件以支持复杂的流模式。对于真实事件,用户可以执行各种窗口操作。定义不同的窗口触发机制以满足不同的需求。
基于轻量级分布式快照(snapshots),容错的Flink 可以分布式运行在数千个节点上,将大的计算过程拆分成更小的计算过程,并通过分布到多个节点来执行处理。并行节点。
任务执行过程中,会自动检测事件处理中导致数据不一致的错误。常见的错误类型包括节点停机、网络传输问题以及用户升级或修复计算服务的问题。
在这种情况下,通过基于分布式快照技术的检查点,即使任务异常终止,运行中的任务信息也会被永久保存,从而保证正在处理的数据的一致性。
基于JVM实现独立的内存管理内存管理相对于内存管理来说,实现了自己的内存管理,特别是针对计算量相对较大的计算场景。这种机制最大限度地减少了Full GC对系统的影响。
此外,自定义序列化/反序列化方法将所有对象转换为二进制并将其存储在内存中,这可以减少数据存储大小,更有效地使用内存空间,并提高GC 的性能,从而降低性能下降和任务停止的风险。分布式数据传输的性能。
因此,Flink 比其他分布式处理框架更稳定,JVM GC 等问题不会拖垮你的整个应用程序。
保存点(Save Points) 对于运行7x7 的流式应用程序,数据被连续访问,一段时间内终止应用程序可能会导致数据丢失,版本控制、停机操作等都可能导致计算不准确。等都会导致这种情况。
不过值得注意的是,Flink 可以通过保存点技术将任务执行的快照保存到存储介质中。在等待任务重新启动时,您现在可以直接从保存的保存点恢复原始计算状态并运行任务。 Save Points技术可以让用户更好地管理和操作实时流媒体应用程序。
同时,除了上述功能之外,Flink 还有其他很棒的功能,可以为用户提供更多选择。由于Flink有很多很棒的特性,它不仅在社区中越来越有名,也吸引了更多的公司参与Flink技术的开发和使用。
作者简介:张利兵,高级架构师,流计算领域专家,第四范式华东区人工智能项目架构师,前华通明略华东区大数据架构师。拥有多年大数据和流计算开发经验,对Hadoop、Spark、Flink等大数据计算引擎有非常深刻的理解,积累了丰富的实际项目经验。
扩展读取《Flink原理、实战与性能优化》
推荐词:本文从功能、原理、实践、优化四个方面一步步讲解如何使用Flink开发分布式流应用,引导读者从基础入门到进阶。推荐受众:流计算开发工程师、大数据架构工程师、大数据开发工程师、数据挖掘工程师、研究生、四年级本科生。
版权声明:本文由今日头条转载,如有侵犯您的版权,请联系本站编辑删除。