Apache Flink(一):Apache Flink是什么?

🏡 个人主页:IT贫道_大数据OLAP体系技术栈,Apache Doris,Clickhouse 技术-CSDN博客

 🚩 私聊博主:加入大数据技术讨论群聊,获取更多大数据资料。

 🔔 博主个人B栈地址:豹哥教你大数据的个人空间-豹哥教你大数据个人主页-哔哩哔哩视频


目录

1. Flink的定义

2. Flink前身Stratosphere

​​​​​​​3. Flink发展时间线及重大变更


在当前数据量激增的时代,各种业务场景都有大量的业务数据产生,对于这些不断产生的数据应该如何进行有效的处理,成为当下大多数公司所面临的问题。目前比较流行的大数据处理引擎Apache Spark,基本上已经取代了MapReduce成为当前大数据处理的标准。随着数据的不断增长,人们逐渐意识到对实时数据处理的重要性。相对传统数据处理模式,流式数据处理有着更高的处理效率和成本控制要求。Apache Spark 不仅支持批数据计算还支持流式数据计算,但是SparkStreaming在底层架构、数据抽象等方面采用了批量计算的概念,其流计算的本质还是批(微批)计算。

近年来Apache Flink计算框架发展迅速,Flink以流处理为基础,对批数据也有很好的支持,尤其是在流计算领域相比其他大数据分布式计算引擎有着明显优势,能够针对流式数据同时支持高吞吐、低延迟、高性能分布式处理,Flink在未来发展上有着令人期待的前景。

​​​​​​​1. Flink的定义

Apache Flink 是一个框架和分布式处理引擎,用于在无边界有边界数据流上进行有状态的计算。Flink 能在所有常见集群环境中运行,并能以内存速度和任意规模进行计算。

apache Flink is a framework and distributed processing engine for stateful computations over unbounded and bounded data streams. Flink has been designed to run in all common cluster environments, perform computations at in-memory speed and at any scale.

Flink可以处理批数据也可以处理流数据,本质上,流处理是Flink中的基本操作,流数据即无边界数据流,在Flink中处理所有事件都可看成流事件,批数据可以看成是一种特殊的流数据,即有边界数据流,这与Spark计算框架截然相反,在Spark中批处理是最基本操作,流事件可以划分为一小批一小批数据进行微批处理,来达到实时效果,这也是两者区别之一。

  • 无界流

有定义流的开始,但没有定义流的结束。它们会无休止地产生数据。无界流的数据必须持续处理,即数据被摄取后需要立刻处理。我们不能等到所有数据都到达再处理,因为输入是无限的,在任何时候输入都不会完成。处理无界数据通常要求以特定顺序摄取事件,例如事件发生的顺序,以便能够推断结果的完整性。

  • 有界流

有定义流的开始,也有定义流的结束。有界流可以在摄取所有数据后再进行计算。有界流所有数据可以被排序,所以并不需要有序摄取。有界流处理通常被称为批处理。

Apache Flink 擅长处理无界和有界数据集,精确的时间控制和状态化使得 Flink 的运行时(runtime)能够运行任何处理无界流的应用。有界流则由一些专为固定大小数据集特殊设计的算法和数据结构进行内部处理,产生了出色的性能。

Flink官网:https://flink.apache.org

​​​​​​​2. Flink前身Stratosphere

Flink最早是德国一些大学中的研究项目,并且早期项目名称也不是Flink,在2010~2014年间,由德国柏林工业大学、德国柏林洪堡大学和德国哈索·普拉特纳研究所联合发起名为“Stratosphere:Information Management on the Cloud”研究项目,该项目就是Flink的前身:Stratosphere项目。该项目创建初衷就是构建一个一数据库概念为基础、以大规模并行处理架构为支撑、以MapReduce计算模型为逻辑框架的分布式数据计算引擎,在此构想之上还引入了流处理,为后来的Flink发展打下良好基础。

2014年4月,Stratosphere代码被贡献给Apache软件基金会,成为Apache基金会孵化器项目,项目孵化期间,项目Stratosphere改名为Flink。Flink在德语中意为“敏捷、快速”,用来体现流式数据处理器速度快灵活性强等特点,同时使用棕红色松鼠图案作为Flink项目的Logo,也是为了突出松鼠灵活快速的特点,由此,Flink正式进入社区开发者的视线。

Flink自从加入Apache后发展十分迅猛,自2014年8月发布0.6版本后,Flink仅用了3个月左右的时间,在2014年11月发布了0.7版本,该版本包含Flink目前为止最重要的 Flink Streaming 特性,2014年底,Flink顺利从孵化器“毕业”成为Apache顶级项目。随着Flink技术成为Apache顶级项目,Flink受到社区越来越多的关注,Flink逐步增加了很多核心的功能,例如:一致性语义、事件时间和Table API等,其功能和稳定性也不断得到完善。

早期Stratosphere项目的核心成员曾共同创办一家名叫“Data Artisans”的公司,其主要的任务就是致力于Flink技术的发展和商业化,2019年阿里巴巴收购了Data Artisans公司,并将其开发的分支Blink开源,越来越多的公司开始将Flink应用到他们真实的生产环境中,并在技术和商业上共同推动Flink的发展。

Flink逐步被广泛使用不仅仅是因为Flink支持高吞吐、低延迟和exactly-once语义的实时计算,同时Flink还提供基于流式计算引擎处理批量数据的计算能力,在计算框架角度真正实现了批流统一处理。目前,国内很多公司都已经大规模使用Flink作为分布式计算场景的解决方案,如:阿里巴巴、华为、小米等,其中,阿里巴巴已经基于Flink实时计算平台实现了对淘宝、天猫、支付宝等数据业务支持。

​​​​​​​3. Flink发展时间线及重大变更

Flink发展非常迅速,目前官网Flink最新版本是1.16版本,下面列举Flink发展过程中重要时间和重要版本发布时间点以及Flink各个版本推出的新特性以帮助大家更好了解Flink。

  • 2010~2014:德国柏林工业大学研究性项目Stratosphere,目标是建立下一代大数据分析引擎;
  • 2014-04-16:Stratosphere成为Apache 孵化项目,从Stratosphere0.6开始,正式更名为Flink,由Java语言编写;
  • 2014-08-26:Flink 0.6发布;
  • 2014-11-04:Flink 0.7.0发布,推出最重要的特性:Streaming API;
  • 2016-03-08:Flink 1.0.0,流处理基础功能完善,支持Scala;
  • 2016-08-08:Flink 1.1.0 版本发布,流处理基础功能完善;
  • 2017-02-06:Flink 1.2.0 版本发布,流处理基础功能完善;
  • 2017-06-01:Flink 1.3.0 版本发布,流处理基础功能完善;
  • 2017-11-29:Flink 1.4.0 版本发布,流处理基础功能完善;
  • 2018-05-25:Flink 1.5.0 版本发布,流处理基础功能完善;
  • 2018-08-08:Flink 1.6.0 版本发布,流处理基础功能完善,状态TTL支持;增强SQL和Table API;
  • 2018-11-30:Flink 1.7.0 版本发布,Scala2.12支持;支持S3文件处理;支持Kafka 2.0 connector;
  • 2019-04-09:Flink 1.8.0 版本发布,支持TTL清除旧状态;不再支持hadoop二进制文件;
  • 2019-01:阿里巴巴以9000万欧元价格收购Data Artisans公司,并开发内部版本Blink;
  • 2019年8月阿里巴巴开源Blink。
  • 2019-08-22:Flink 1.9.0 版本发布,主要特性如下:
    1. 合并阿里内部Blink;
    2. 重构Flink WebUI;
    3. Hive集成;
    4. Python Table API支持;
  • 2020-02-11:Flink 1.10.0 版本发布【重要版本】,主要特性如下:
    1. 整合Blink全部完成;
    2. 集成K8S;
    3. PyFlink优化;
    4. 内存管理配置优化;
  • 2020-07-06:Flink 1.11.0 版本发布【重要版本】,主要特性如下:
    1. 从Flink1.11开始,Blink planner是Table API/SQL中的默认设置,仍支持旧的Flink planner;
    2. Flink CDC支持;
    3. 支持Hadoop3.x版本,不提供任何更新的flink-shaded-hadoop-x jars,用户需要通过HADOOP_CLASSPATH环境变量(推荐)或 lib/ folder 提供 Hadoop 依赖项。
  • 2020-12-08:Flink 1.12.0 版本发布【重要版本】,主要特性如下:
    1. DataStream API 上添加了高效的批执行模式的支持,批处理和流处理实现真正统一的运行时的一个重要里程碑;
    2. 实现了基于Kubernetes的高可用性(HA)方案,作为生产环境中,ZooKeeper方案之外的另外一种选择;
    3. 扩展了 Kafka SQL connector,使其可以在 upsert 模式下工作,并且支持在 SQL DDL 中处理 connector 的 metadata;
    4. PyFlink 中添加了对于 DataStream API 的支持;
    5. 支持FlinkSink,不建议再使用StreamingFileSink;
  • 2021-04-30:Flink 1.13.0 版本发布,主要特性如下:
    1. SQL和表接口改进;
    2. 改进DataStream API和Table API/SQL之间的互操转换;
    3. Hive查询语法兼容性;
    4. PyFlink的改进;
  • 2021-09-29:Flink1.14.0 版本发布
    1. 改进批和流的状态管理机制;
    2. 优化checkpoint机制;
    3. 不再支持Flink on Mesos资源调度;
    4. 开始支持资源细粒度管理;
  • 2022-05-05:Flink1.15.0 版本发布,主要特性如下:
    1. Per-job任务提交被弃用,未来版本会丢弃,改用Application Mode。
    2. Flink依赖包不使用Scala的话可以排除Scala依赖项,依赖包不再包含后缀;
    3. 持续改进Checkpoint和两阶段提交优化;
    4. 对于Table / SQL用户,新的模块flink-table-planner-loader取代了flink-Table-planner_xx,并且避免了Scala后缀的需要;
    5. 添加对opting-out Scala的支持,DataSet/DataStream api独立于Scala,不再传递地依赖于它。
    6. flink-table-runtime不再有Scala后缀了;
    7. 支持JDK11,后续对JDK8的支持将会移除;
    8. 不再支持Scala2.11,支持Scala2.12;
    9. Table API & SQL优化,移除FlinkSQL upsert into支持;
    10. 支持最低的Hadoop版本为2.8.5;
    11. 不再支持zookeeper3.4 HA ,zookeeper HA 版本需要升级到3.5/3.6;
    12. Kafka Connector默认使用Kafka客户端2.8.1;
  • 2022-10-28:Flink1.16.0 版本发布,主要特性如下:
    1. 弃用jobmanager.sh脚本中的host/web-ui-port参数,支持动态配置;
    2. 删除字符串表达式DSL;
    3. 不再支持Hive1.x、2.1.x、2.2.x版本;
    4. 弃用StreamingFileSink,建议使用FileSink。
    5. 优化checkpoint机制;
    6. PyFlink1.16将python3.6版本标记为弃用,PyFlink1.16版本将成为使用python3.6版本最后一个版本;
    7. Hadoop支持3.3.2版本;
    8. Kafka支持3.1.1版本;
    9. Hive支持2.3.9版本;

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/228156.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

万字解析设计模式之迭代器模式、备忘录模式

一、迭代器模式 1.1概述 迭代器模式是一种行为型设计模式,它允许在没有暴露其底层表现形式的情况下遍历集合对象。迭代器模式提供一种通用的遍历机制,可以遍历任何类型的集合,包括数组、列表、树等。通过这种模式,可以实现一种通…

《融合SCADA系统数据的天然气管道泄漏多源感知技术研究》误报数据识别模型开发

数据处理不作表述。因为我用的是处理后的数据,数据点这。 文章目录 工作内容1CC040VFD电流VFD转速压缩机转速反馈进出口差压 紧急截断阀开到位进出电动阀开到位发球筒电筒阀开到位收球筒电动阀开到位电动阀2005开到位越站阀开到位 工作内容2工作内容3 工作内容1 任…

08-学成在线项目中统一异常处理的规范

项目中的异常处理 规范异常类型 在Service类的业务方法中有很多的参数合法性校验,当请求参数不合法的时候会抛出异常,但此时异常信息只会在控制台输出,前端界面并不会提示用户 实际开发中前端和后端需要做一些约定: 一般将错误提示信息统一以json格式返回给前端,以HTTP状态码…

easyExcel自定义导出,指定列,设置请求头背景色,加入合计行,设置合计行字体,背景色等等

效果图 1.引入easyExcel pom <dependency><groupId>com.alibaba</groupId><artifactId>easyexcel</artifactId><version>3.3.1</version></dependency> 2.工具类-自定义样式handler-CustomCellWriteHandler import java.util…

[学习记录]Node event loop 总结流程图

文章目录 文章来源根据内容输出的流程图待处理遗留的问题参考 文章来源 详解JavaScript中的Event Loop&#xff08;事件循环&#xff09;机制 根据内容输出的流程图 待处理 这里从polling阶段开始 好像有些问题 遗留的问题 为什么“在I/O事件的回调中&#xff0c;setImmediate…

ARM Cortex-M核的内核态,用户态

首先&#xff0c;用户态和内核态是从操作系统层面上来划分的&#xff0c;如果没有操作系统&#xff0c;我可以直接运行在特权模式下&#xff0c;并使用特权指令。在这种情况下&#xff0c;我将负责管理和控制系统资源&#xff0c;执行关键操作&#xff0c;以及确保系统的安全性…

【算法萌新闯力扣】:旋转链表

力扣题目&#xff1a;旋转链表 开篇 今天是备战蓝桥杯的第25天和算法村开营第3天&#xff01;经过这3天的学习&#xff0c;感觉自己对链表的掌握程度大大地提升&#xff0c;尤其是在帮村里的同学讨论相关问题时。本篇文章&#xff0c;给大家带来一道旋转链表的题目&#xff0c…

软著项目推荐 深度学习二维码识别

文章目录 0 前言2 二维码基础概念2.1 二维码介绍2.2 QRCode2.3 QRCode 特点 3 机器视觉二维码识别技术3.1 二维码的识别流程3.2 二维码定位3.3 常用的扫描方法 4 深度学习二维码识别4.1 部分关键代码 5 测试结果6 最后 0 前言 &#x1f525; 优质竞赛项目系列&#xff0c;今天…

手写promise A+、catch、finally、all、allsettled、any、race

目录 手写promise 同步版 1.Promise的构造方法接收一个executor()&#xff0c;在new Promise()时就立刻执行executor回调 2.executor()内部的异步任务被放入宏/微任务队列&#xff0c;等待执行 3.状态与结果的管理 状态只能变更一次 4.then()调用成功/失败回调 catch是…

mysql 命令行导入sql 数据,windows导入,强制导入

线上用了polarDB&#xff0c; 本地导入的时候&#xff0c;通过navicat 的备份导入和执行sql文件的方式导入都失败了 用命令行的方式可以导入sql 当我用windows 的cmd 导入的时候&#xff0c;会报一些命令行的错误。 那其实我检查了这个命令是没有问题的。 mysql -uroot -p hu…

JOSEF 双可调漏电继电器 ZLR-T81 ZCT-80 面板嵌入式安装

ZLR-T系列漏电继电器&#xff08;以下简称继电器&#xff09;适用于交流电压为380.660V.至1140V系统中源率为50HZ电流为15~4000A线路中做有无中性点漏电保护. 系列型号 ZLR-T81漏电继电器 ZLR-T81ZCT-35漏电继电器 ZLR-T81ZCT-80漏电继电器 ZLR-T81ZCT-120漏电继电器 一、…

微服务--03--OpenFeign 实现远程调用 (负载均衡组件SpringCloudLoadBalancer)

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 OpenFeign其作用就是基于SpringMVC的常见注解&#xff0c;帮我们优雅的实现http请求的发送。 RestTemplate实现了服务的远程调用 OpenFeign快速入门负载均衡组件Spr…