一文初识大数据Flink框架

news2024/11/23 21:30:53

文章目录

    • 什么是Flink
    • flink在github上的现状
    • flink发展历史
    • flink能做什么
    • flink 的高并发能力
    • 一些计算框架对比图
    • flink发展方向
    • flink生态体系
    • 处理无界和有界数据
    • 随处部署应用程序
    • 运行任何规模的应用程序
    • 利用内存性能

官方文档地址:https://flink.apache.org/

什么是Flink

🍊Apache Flink是一个开源的分布式流处理框架,用于处理流数据和批量数据。它可以在一个单独的机器或一个集群上运行,并具有高效的数据处理能力,特别是对于大规模数据集。

Apache Flink 是一个流行的开源平台,用于分布式流和批处理数据。它经常与其他大数据处理框架(如 Apache Spark 和 Apache Beam)进行比较。

🍊Flink提供了一个灵活的编程模型,可以轻松地执行数据流分析,包括数据流聚合,数据流连接,流式转换和多种数据流操作。它还提供了丰富的算子库,可以执行常见的流处理任务,如窗口聚合,Join和流式聚合。

🍊Flink还提供了一个容错的流处理运行时系统,可以保证数据的准确性,即使在发生故障时也能保证最终一致性。

🍊在流行度和采用率方面,Flink 一直位居大数据处理框架的前列。Flink 拥有庞大而活跃的开发者和用户社区,广泛应用于各种用例的生产环境。

🍊值得注意的是,大数据处理框架的选择往往取决于项目的具体要求和需求。不同的框架可能具有不同的优势和权衡,并且针对特定用例的最佳选择可能会有所不同。

🍊Flink 因其处理大规模数据处理和实时分析的能力而广受推崇,并被各行各业的公司所采用。

在这里插入图片描述

flink在github上的现状

       截止到2022-12-19,flink在github上有3w多次commits,2w多start,1000多名提交者
在这里插入图片描述

flink发展历史

       flink有着丰富的发展和演化历史。下面简单介绍一下 Flink 发展过程中的关键里程碑:

  1. Flink 最初于 2009 年在柏林工业大学开发,作为名为 Stratosphere 的研究项目的一部分。
  2. 2013 年,Stratosphere 在 Apache License 下开源为 Flink。
  3. 2015 年,Flink 成为 Apache 软件基金会的顶级项目。
  4. 在接下来的几年里,Flink 的用户群和社区有了显着增长,并不断增加新的特性和功能。
  5. 2020 年,随着 Flink 1.11 的发布,Flink 达到了一个重要的里程碑,其中包括许多重大改进,例如新的批处理 SQL API 和改进的机器学习支持。
  6. 今天,Flink 是一个被广泛使用和推崇的流处理框架,拥有庞大而活跃的用户和开发者社区。它用于各种应用程序,包括实时分析、流处理、事件驱动的应用程序等。

flink能做什么

       flink可以用于各种数据流应用程序。下面是一些典型的Flink应用程序:

  1. 实时数据分析:Flink可以实时处理数据流,并执行复杂的数据流分析操作,如窗口聚合,Join和流式聚合。
  2. 数据流计算:Flink可以实时处理数据流,并执行计算任务,如计算滑动平均值,检测异常值等。
  3. 数据流ETL:Flink可以将数据从一个源头转换为另一个格式,并将其写入目标系统。
  4. 实时规则引擎:Flink可以执行复杂的规则匹配和决策操作,用于实时流式决策。
  5. 实时监控:Flink可以监控实时数据流,并在发现异常时发出警报。
  6. 聊天机器人:Flink可以处理实时聊天数据流,并使用机器学习算法生成自然语言回复。

总的来说,Flink支持各种数据流应用程序,可以帮助您快速开发和部署高性能的流处理系统。

flink 的高并发能力

        Flink 旨在处理高吞吐量、低延迟的数据处理,并且对数据流的并发处理有强大的支持。
       有助于 Flink 高并发能力的一些特性包括:

  1. 数据并行性:Flink 允许数据流自动并行化并由多个并行实例处理,这些实例可以扩展以处理非常大的数据量。
  2. 任务并行性:Flink 允许任务在并行数据流中并行化,这可以进一步提高并发性和吞吐量。
  3. 异步 I/O:Flink 使用异步 I/O 来读写数据流,这使得它可以扩展到高并发级别,而不受外部系统性能的限制。
  4. 状态管理:Flink 有一个健壮的状态管理系统,即使在高并发的情况下,它也可以维护有状态的流处理应用程序。

        Flink支持多种并发模型,包括:

  1. 并行操作:Flink可以将操作划分为多个并行任务,并在多个节点上同时执行。这样可以提高处理数据流的速度。
  2. 分布式计算:Flink可以在多个节点上执行分布式计算,包括数据分区,数据连接和数据聚合等。
  3. 多线程并行:Flink可以在单个节点上使用多个线程并行执行操作。这样可以提高单节点的处理能力。

一些计算框架对比图

产品模型API保证次数容错机制状态管理延时吞吐量
stormNative(数据进入立即处理)组合式At-least-onceRecord ACKSLowLow
Tridentmirco-batching(划分为小批处理)组合式Exectly-onceRecord ACKs基于操作(每次操作由一个状态)MediumMedium
Spark streamingmirco-batching声明式(提供封装后的高阶函数)Exectly-onceRDD Checkpoint基于 DStreamMediumHigh
FlinkNative声明式Exectly-onceCheckpoint基于操作LowHign

flink发展方向

Flink 正在积极开发和改进的一些领域包括:

  1. 性能和可扩展性:Flink 旨在处理数据流的高吞吐量和低延迟处理,开发团队一直致力于提高其性能和可扩展性。
  2. 生态系统集成:Flink 拥有丰富的库和连接器生态系统,使其能够与广泛的其他工具和技术集成。开发团队正在努力进一步扩展和改进这些集成。
  3. 机器学习和人工智能:Flink 内置了对机器学习的支持,可用于构建复杂的人工智能应用程序。开发团队正在努力改进这种支持,并使使用 Flink 构建 AI 应用程序变得更加容易。
  4. 云和容器部署:Flink 可以部署在各种基础设施上,包括本地、云端和容器中。开发团队正在努力提高 Flink 在这些环境中的部署和管理的便利性。
  5. 用户体验:开发团队专注于提高 Flink 的可用性和用户体验,包括让流处理应用程序更容易上手和使用 Flink。

flink生态体系

Apache Flink 拥有丰富的库和连接器生态系统,使其能够与各种其他工具和技术集成。Flink 生态系统的一些示例包括:

  1. Flink 连接器:Flink 有许多连接器,可以轻松与外部系统集成,例如 Apache Kafka、Apache Cassandra 和 Amazon Kinesis。这些连接器允许 Flink 从这些系统中获取数据并实时处理。
  2. Flink 库:Flink 包括许多库,它们为特定用例提供额外的功能,例如机器学习、图形处理和窗口流处理。
  3. Flink 集成:Flink 可以轻松地与其他工具和技术集成,例如 Apache Hadoop、Apache Spark 和 Apache Beam。这使得 Flink 可以用作更大的数据处理管道或生态系统的一部分。
  4. Flink 社区:Flink 拥有庞大而活跃的用户和开发人员社区,他们为框架的开发做出贡献,并为 Flink 生态系统贡献库、连接器和集成。

~~下述内容为官方文档中内容 ~~

处理无界和有界数据

任何类型的数据都是作为事件流产生的。信用卡交易、传感器测量、机器日志或网站或移动应用程序上的用户交互,所有这些数据都以流的形式生成。

数据可以作为无界有界流进行处理。

  1. 无界流有一个开始但没有定义的结束。它们不会在数据生成时终止并提供数据。无界流必须连续处理,即事件必须在摄取后立即处理。不可能等待所有输入数据到达,因为输入是无界的,不会在任何时间点完成。处理无限数据通常需要按特定顺序摄取事件,例如事件发生的顺序,以便能够推断结果的完整性。
  2. 有界流有定义的开始和结束。可以通过在执行任何计算之前摄取所有数据来处理有界流。处理有界流不需要有序摄取,因为有界数据集总是可以排序的。有界流的处理也称为批处理。

img

**Apache Flink 擅长处理无界和有界数据集。**对时间和状态的精确控制使 Flink 的运行时能够在无界流上运行任何类型的应用程序。有界流由专门为固定大小的数据集设计的算法和数据结构进行内部处理,从而产生出色的性能。

通过探索构建在 Flink 之上的用例来说服自己。

随处部署应用程序

Apache Flink 是一个分布式系统,需要计算资源才能执行应用程序。Flink 集成了所有常见的集群资源管理器,例如Hadoop YARN和Kubernetes,但也可以设置为作为独立集群运行。

Flink 旨在很好地运行前面列出的每个资源管理器。这是通过特定于资源管理器的部署模式实现的,这些部署模式允许 Flink 以其惯用的方式与每个资源管理器进行交互。

在部署 Flink 应用时,Flink 会根据应用配置的并行度自动识别需要的资源,并向资源管理器请求。如果发生故障,Flink 会通过请求新资源来替换发生故障的容器。提交或控制应用程序的所有通信都是通过 REST 调用进行的。这简化了 Flink 在许多环境中的集成。

运行任何规模的应用程序

Flink 旨在运行任何规模的有状态流应用程序。应用程序被并行化为可能在集群中分布和并发执行的数千个任务。因此,应用程序可以利用几乎无限数量的 CPU、主内存、磁盘和网络 IO。此外,Flink 可以轻松维护非常大的应用程序状态。其异步和增量检查点算法可确保对处理延迟的影响最小,同时保证恰好一次的状态一致性。

用户报告了在其生产环境中运行的 Flink 应用程序的可扩展性数字,例如

  • 应用程序每天处理数万亿个事件,
  • 维护多个 TB 状态的应用程序,以及
  • 在数千个内核上运行的应用程序。

利用内存性能

有状态 Flink 应用程序针对本地状态访问进行了优化。任务状态始终保存在内存中,或者,如果状态大小超过可用内存,则保存在访问高效的磁盘数据结构中。因此,任务通过访问本地(通常是内存中的)状态来执行所有计算,从而产生非常低的处理延迟。Flink 通过定期和异步地将本地状态检查点到持久存储来保证在发生故障时恰好一次的状态一致性。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-xyaYeZrP-1671446767378)(https://flink.apache.org/img/local-state.png)]

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

php宝塔搭建部署实战Piwigo开源相册管理系统源码

大家好啊,我是测评君,欢迎来到web测评。 本期给大家带来一套php开发的Piwigo开源相册管理系统源码,感兴趣的朋友可以自行下载学习。 技术架构 PHP7.2 nginx mysql5.7 JS CSS HTMLcnetos7以上 宝塔面板 文字搭建教程 下载源码&#x…

基于Python + Requests 的Web接口自动化测试框架

之前采用JMeter进行接口测试,每次给带新人进行培训比较麻烦,干脆用Python实现,将代码和用例分离,易于维护。 项目背景 公司的软件采用B/S架构,进行数据存储、分析、管理 工具选择 python开发的速度很快&#xff0c…

【计算机考研408】数据结构代码规范

408-数据结构代码规范 文章目录408-数据结构代码规范序言优化参考文献考前预测线性表-链表单链表静态链表栈、队列、数组栈的顺序存储类型队列树与二叉树二叉树的定义二叉树的层序遍历树的双亲表示法孩子表示法树的孩子兄弟表示法图邻接矩阵存储法邻接表法二分查找/折半查找模板…

在linux上运行python脚本(安装pytorch踩坑记录,pyinstaller使用方式,构建docker镜像)

背景 脚本需要导入pytorch等库才能运行。 脚本在windows上运行成功,尝试放到linux上运行。 linux服务器内存较小。 方法一:在linux上安装依赖 把脚本放到linux上,直接安装依赖。 安装环境也有两种方法:一是先安装conda&#xf…

爬虫学习-requests模块

python中原生的一款基于网络请求的模块,功能强大,简单便捷,效率极高作用:模拟游览器发请求(15条消息) Header:请求头参数详解_平常心丷的博客-CSDN博客_headers参数(15条消息) requests的get方法和post方法_不问散人的博客-CSDN博…

二十九、之Java 数据结构

Java 数据结构 Java工具包提供了强大的数据结构。在Java中的数据结构主要包括以下几种接口和类: 枚举(Enumeration)位集合(BitSet)向量(Vector)栈(Stack)字典&#xff…

Linux 下安装多个mysql

1、下载mysql https://downloads.mysql.com/archives/community/2、创建用户组 groupadd mysql 3、创建用户 useradd -r -g mysql5736 mysql5736 4、解压文件 tar zxvf mysql-5.7.39-linux-glibc2.12-x86_64.tar.gz 5、重命名 mv mysql-5.7.39-linux-glibc2.12-x86_64 …

随着企业信息化发展之源代码防泄密需求分析

源代码防泄密需求: 随着企业信息化发展的日益增长,软件行业厂商之间的竞争也愈加白热化,加上国内对知识产权的不够重视、山寨模仿产品的横行。保护源代码、保证企业的核心竞争力,成为众多软件研发企业的第一要务。那么企业应该如…

深度学习入门(六十一)循环神经网络——长短期记忆网络LSTM

深度学习入门(六十一)循环神经网络——长短期记忆网络LSTM前言循环神经网络——长短期记忆网络LSTM课件长短期记忆网络门候选记忆单元记忆单元隐状态总结教材1 门控记忆元1.1 输入门、忘记门和输出门1.2 候选记忆元1.3 记忆元1.4 隐状态2 从零开始实现2.…

mysql常用操作(亲测自用,持续更新...)

文章目录一、新建数据库1、字符集1.1 字符集作用1.2 常用选择2、排序规则2.1 排序规则作用2.2 常用选择二、新建表1、字符串类型1.1 CHAR 和 VARCHAR 的定义1.2 字符占用三、常用基础知识1、什么是方言?2、SQL书写规范3、SQL分类1)DDL (data …

day6 递推

P1928 外星密码 对于 100% 的数据&#xff1a;解压后的字符串长度在 20000 以内&#xff0c;最多只有十重压缩。保证只包含数字、大写字母、[ 和 ]。 #include <bits/stdc.h> using namespace std;string fun(){char ch;//输入字符 int n;//复制次数 string ans"&…

Teststand-控件

文章目录管理控件应用程序管理控件序列文件视图管理控件执行视图管理控件可视化控件视图连接列表连接命令连接信息源连接在 LabVIEW 中&#xff0c;TestStand 相关的所有控件都在estStand 选板上这些控件全部是Active X控件&#xff0c;LabVIEW对它的编程是属性节点、方法节点及…

ActivityManagerService,给我启动个App瞅瞅呗

前言 其实早在几年前&#xff0c;我就有一个疑问。 为什么我们的逻辑代码写在Activity中&#xff0c;在App启动后就会执行到它。为什么第三方库的初始化要写在Application中&#xff0c;而它为什么执行顺序比Activity还要靠前。 如果您想搞清楚这些原因&#xff0c;那么本文…

3年经验去面试20k测试岗,看到这样的面试题我还是心虚了....

我是着急忙慌的准备简历——3年软件测试经验&#xff0c;可独立测试大型产品项目&#xff0c;熟悉项目测试流程...薪资要求&#xff1f;3年测试经验起码能要个20K吧 我加班肝了一页半简历&#xff0c;投出去一周&#xff0c;面试电话倒是不少&#xff0c;自信满满去面试&#…

Python 数据分析之 3 —— pandas 数据分析

第1关:了解数据集特征 任务描述 本关任务:载入网贷数据集,了解数据概况。 共包含多个子任务: 1.1 读取Training_Master.csv文件,命名为master; 1.2 读取Training_Userupdate.csv文件,命名为user; 1.3 读取Training_LogInfo.csv文件,命名为log; 1.4 分别输出它们的形…

世界杯基本知识科普

目录 一、历史沿革 二、历届冠军 三、举办城市 四、中国情况 五、国际赛事统计 世界杯&#xff08;World Cup&#xff09;是由国际足联主办的世界足坛最高级别的足球比赛&#xff0c;每四年举办一次。 足球世界杯是由一项世界性的赛事&#xff0c;它由16个国家和地区联合…

cubeIDE开发, STM32的CAN总线开发要点

一、CAN总线简介 1.1 CAN概述 CAN是Controller Area Network&#xff08;控制区域网络&#xff09; 的缩写&#xff0c;是ISO国际标准化的串行通信协议。由德国电气商博世公司在1986年率先提出。此后&#xff0c;CAN通过ISO11898及ISO11519进行了标准化。现在在欧洲已是汽车网络…

为什么数字化时代需要 BizDevOps?

随着云原生、元宇宙、Web3等技术拉开序幕&#xff0c;智能制造、智慧城市、精准医疗等应用场景徐徐展开&#xff0c;继人类工业文明之后&#xff0c;下一个大变局的奇点临近。 毫无疑问&#xff0c;以数字技术应用为主线的数字化转型是此次人类文明变革的核心动力。在这一变革…

JavaWeb蛋糕商城系统课程设计(Vue+ElementUI+Mybatis+HTML+Axios)

前提 唉&#xff0c;本学期疫情放假放得早&#xff0c;用了一个星期完成这次课设。(主要还是从0开始学前端的VUE),在HTML中引入VUE,然后用Axios&#xff08;封装AJAX&#xff09;发请求更新数据。感觉上特别繁琐&#xff0c; 蛋糕商城系统&#xff0c;也就是黑马程序员的Java…

从游戏服务端角度分析移动同步(状态同步)

从游戏服务端角度分析移动同步&#xff08;状态同步&#xff09; 参考文章&#xff1a; https://www.lfzxb.top/ow-gdc-gameplay-architecture-and-netcode/ https://zhuanlan.zhihu.com/p/544473862 对于游戏服务端来说&#xff0c;针对状态同步主要需要考虑的是三大模块&…