大数据入门-什么是Flink

news2024/11/22 11:54:33

这里简单介绍Flink概念、架构、特性等。至于比较详细的介绍,会单独针对这个组件进行详细介绍,可以关注博客后续阅读。

一、概念

Apache Flink 是一个框架分布式处理引擎,用于在无边界有边界数据流上进行有状态的计算。

Flink的四大基石

1. Checkpoint

Checkpoint机制 为Flink实现了一个分布式的一致性的快照,从而提供了一致性的语义。

2.State

虽然有了一致性的语义之后,Flink为了让用户在编程时更加轻松、更容易地去管理状态,提供了一套非常简单明了的StateApi,包括里面的有ValueState、ListState、MapState,近期还添加了BroadcastState,使用State API能够自动先用这种一致性的语义。

3.Time

Flink还实现了Watemark的机制,能够支持基于事件的时间的处理,或者说基于系统时间的处理,能够容忍数据的延时、容忍数据的迟到、容忍乱序的数据。

4.Window

Flink提供了开箱即用的各种窗口,比如滑动窗口、滚动窗口、会话窗口以及非常灵活的自定义窗口。

二、架构

Flink整体的基础架构如下图

1.Client

Client是提交作业的客户端,虽然不是运行时和作业执行时的一部分,但它负责准备和提交作业到JobManager,它可以运行在任何机器上,只要与JobManager环境连通即可。

2.JobManager

JobManager根据客户端提交的应用将应用分解为子任务,从资源管理器(YARN等)申请所需的计算资源,然后分发任务到TaskManager执行,并跟踪作业的执行状态等。JobManager的主要作用是协调资源分配、任务调度、故障恢复等。整个集群有且仅有一个活跃的JobManager。

3.TaskManager

TaskManager是Flink集群的工作进程。Task被调度到TaskManager上执行。TaskManager相互通信,只为在后续的Task之间交换数据。

TaskManager工作内容:

 接收JobManager分配的任务,负责具体的任务执行。TaskManager会在同一个JVM进程内以多线程的方式执行任务 。负责对应任务在每个节点上的资源申请,管理任务的启动、停止、销毁、异常恢复等生命周期。 负责对数据进行缓存。TaskManager之间采用数据流的形式进行数据交互。

4.Task

Flink中的每一个操作算子称为一个Task(任务)。Task是基本的工作单元,由Flink的Runtime来执行。每个Task在一个JVM线程中执行。多个Task可以在同一个JVM进程中共享TCP连接(通过多路复用技术)和心跳信息。它们还可能共享数据集和数据结构,从而降低每个Task的开销。

5.Task Slot

TaskManager为了控制执行的Task数量,将计算资源(内存)划分为多个Task Slot(任务槽),每个Task Slot代表TaskManager的一份固定内存资源,Task则在Task Slot中执行。

三、特性

Flink提供了四种编程模型,分别应对我们不同的场景

1.支持高吞吐、低延迟、高性能 

Flink是目前开源社区中唯一一套集高吞吐、低延迟、高性能三者于一身的分布式流式处理框架。像Apache Spark也只能兼顾高吞吐和高性能特性,主要因为在Spark Streaming流式计算中无法做到低延迟保障;而流式计算框架Apache Storm只能支持低延迟和高性能特性,但是无法满足高吞吐的要求。

2.支持事件时间和处理时间

在流式计算领域中,窗口计算的地位举足轻重,但目前大多数框架窗口计算采用的都是处理时间,也就是事件传输到计算框架处理时系统主机的当前时间。Flink能够支持基于事件时间语义进行窗口计算,也就是使用事件产生的时间,这种基于事件驱动的机制使得事件即使乱序到达,流系统也能够计算出精确的结果,保证了事件原本的时序性。

3.有状态且精确一次

所谓状态就是在流式计算过程中将算子的中间结果数据保存着内存或者文件系统中,等下一个事件进入算子后可以从之前的状态中获取中间结果中计算当前的结果,从而不须每次都基于全部的原始数据来统计结果,这种方式极大地提升了系统的性能,并降低了数据计算过程的资源消耗。

4.分布式的容错机制

Flink能够分布式运行在上千个节点上,将一个大型计算任务的流程拆解成小的计算过程,然后将Task分布到并行节点上进行处理。在任务执行过程中,能够自动发现事件处理过程中的错误而导致的数据不一致问题,在这种情况下,通过基于分布式快照技术的Checkpoints,将执行过程中的状态信息进行持久化存储,一旦任务出现异常终止,Flink就能够从Checkpoints中进行任务的自动恢复,以确保数据中处理过程中的一致性。

5.高可用且动态扩展

支持高可用性配置(无单点失效),和Kubernetes、YARN、Apache Mesos紧密集成,快速故障恢复,动态扩缩容作业等。基于上述特点,它可以7 X 24小时运行流式应用,几乎无须停机。当需要动态更新或者快速恢复时,Flink通过Savepoints技术将任务执行的快照保存在存储介质上,当任务重启的时候可以直接从事先保存的Savepoints恢复原有的计算状态,使得任务继续按照停机之前的状态运行。

6.高度灵活的窗口操作

Flink将窗口划分为基于Time、Count、Session,以及Data-driven等类型的窗口操作,窗口可以用灵活的触发条件定制化来达到对复杂流传输模式的支持,用户可以定义不同的窗口触发机制来满足不同的需求。

四、适用场景

Flink 是一个分布式流处理和批处理框架,适用于在大规模数据集上进行实时计算和批处理。以下是 Flink 的一些使用场景:

1.实时数据处理

Flink 可以接收和处理来自各种数据源的实时数据流,例如传感器数据、日志数据、交易数据等。它提供了强大的流处理能力,可以对数据流进行实时分析、转换、过滤和聚合。

2.批处理

Flink 不仅支持实时流处理,还可以进行大规模的批处理。它可以将批处理作业分解成小的任务,并在集群中并行执行。这使得 Flink 可以高效处理大量的静态数据,例如离线分析、离线计算和数据清洗等。

3.事件驱动应用程序

Flink 提供了事件时间处理和窗口计算功能,可以用于构建事件驱动的应用程序。通过对事件流进行窗口操作,可以实现诸如实时报警、实时监控和实时推荐等功能。

4.数据管道和ETL

Flink 提供了丰富的数据转换和处理功能,可以用于构建数据管道和执行 ETL(提取、转换和加载)任务。它可以将数据从一个系统提取出来,进行转换和清洗,然后加载到另一个系统中。

5.机器学习

Flink 可以与常见的机器学习框架(如 TensorFlow 和 PyTorch)集成,用于构建和训练机器学习模型。它可以将大规模数据集加载到内存中,进行模型训练和推理,并将结果写回到外部系统。

6.推荐系统

Flink 提供了实时计算和流处理功能,非常适合构建实时推荐系统。通过对用户行为进行实时分析和处理,可以实时生成个性化的推荐结果。

7.日志和监控

Flink 可以处理大规模的日志数据,并提供实时的监控和报警功能。它可以对日志进行过滤、转换和聚合,用于实时监控系统的运行状况和性能。

总之,Flink 的使用场景非常广泛,适用于各种实时计算、批处理和数据分析任务。它具有强大的性能、可伸缩性和容错性,是处理大数据的理想选择。

五、其他事宜

1.权益备注

如有侵权请联系我删除。

2.支持博主

如果您觉得此文对您有帮助,请点赞加关注加收藏。祝您生活愉快!

大数据入门系列文章

1.大数据入门-大数据是什么

2.大数据入门-大数据技术概述(一)

3.大数据入门-大数据技术概述(二)

4.大数据入门-三分钟读懂Hadoop

5.大数据入门-五分钟读懂HDFS

6.大数据入门-五分钟读懂Hive

7.大数据入门-什么是Kudu

8.大数据入门-什么是HBase

各位宝宝点个赞再走呗!!!

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

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

相关文章

Excel如何批量导入图片

这篇文章将介绍在Excel中如何根据某列数据,批量的导入与之匹配的图片。 准备工作 如图,我们准备了一张员工信息表以及几张员工的照片 可以看到,照片名称是每个人的名字,与Excel表中的B列(姓名)对应 的卢易…

9个最佳WordPress PDF插件(查看器、嵌入和下载)

在过去的几年里,我们一直在使用不同的 PDF 插件在我们的网站上创建、编辑和嵌入文档。 然而,经过多次尝试和错误,我们意识到并不是每个插件都是相同的。事实上,为您的企业或电子商务网站选择合适的 PDF 插件可能是一项艰巨的任务…

java-贪心算法

1. 霍夫曼编码(Huffman Coding) 描述: 霍夫曼编码是一种使用变长编码表对数据进行编码的算法,由David A. Huffman在1952年发明。它是一种贪心算法,用于数据压缩。霍夫曼编码通过构建一个二叉树(霍夫曼树&a…

Seatunnel运行时报错Caused by: java.lang.NoClassDefFoundError: com/mysql/cj/MysqlType

报错 [] 2024-11-21 16:46:27,526 ERROR org.apache.seatunnel.core.starter.SeaTunnel - Fatal Error, [] 2024-11-21 16:46:27,526 ERROR org.apache.seatunnel.core.starter.SeaTunnel - Please submit bug report in https://github.com/apache/seatunnel/issues[] 2024-11…

vue自定义指令--一键复制

vue项目中想要实现点击按钮一键复制,可以通过vue的自定义指令directive来实现。 一、新建directive.js文件 新建directive.js文件,用于定义所有的自定义指令。 import { Toast } from vant;const directive {// 一键复制copy:{bind (el, { value }) …

AI 大模型重塑软件开发的未来

✅作者简介:2022年博客新星 第八。热爱国学的Java后端开发者,修心和技术同步精进。 🍎个人主页:Java Fans的博客 🍊个人信条:不迁怒,不贰过。小知识,大智慧。 💞当前专栏…

python: generator model using sql server 2019

設計或生成好數據庫,可以生成自己設計好的框架項目 # encoding: utf-8 # 版权所有 :2024 ©涂聚文有限公司 # 许可信息查看 :言語成了邀功盡責的功臣,還需要行爲每日來值班嗎 # 描述: : 生成实体 # Author …

使用redis-shake工具进行redis的数据同步

前言: 工作中将常遇到测试环境和正式环境的数据同步或者需要进行数据迁移,对于mysql数据库的方案倒是不少,但是redis中如何快速便捷的迁移呢?答案是阿里云提供的:redis-shake RedisShake是阿里云基于豌豆荚开源的redis-port进行…

轻松实现文件远程传输:使用PicoShare搭建轻量级文件共享系统

文章目录 前言1. 本地安装Docker2. 本地部署PicoShare3. 如何使用PicoShare4. 公网远程访问本地 PicoShare4.1 内网穿透工具安装4.2 创建远程连接公网地址 5. 固定PicoShare公网地址 前言 什么是PicoShare? PicoShare 是一个由 Go 开发的轻量级开源共享文件系统。…

路由缓存后跳转到新路由时,上一路由中的tip信息框不销毁问题解决

上一路由tip信息框不销毁问题解决 路由缓存篇问题描述及截图解决思路关键代码 路由缓存篇 传送门 问题描述及截图 路由缓存后跳转新路由时,上一个路由的tip信息框没销毁。 解决思路 在全局路由守卫中获取DOM元素,通过css去控制 关键代码 修改文…

iOS 18.2 Beta 4开发者预览版发布,相机新增辅助功能

昨天刚连发iOS 18.1.1正式版、iOS 17.7.2正式版,今天凌晨,苹果就又发布iOS 18.2 Beta 4,据了解iOS18.2正式版将在 12 月初发布。那么这次的更新又有哪些变化呢?下面我们就来一起了解一下。 iOS 18.2 Beta 4的版本号为:…

PCB 间接雷击模拟

雷击是一种危险的静电放电事件,其中两个带电区域会瞬间释放高达 1 千兆焦耳的能量。雷击就像一个短暂而巨大的电流脉冲,会对建筑物和电子设备造成严重损坏。雷击可分为直接和间接两类,其中间接影响是由于感应能量耦合到靠近雷击位置的物体。间…

易语言学习-cnblog

易语言数据类型 数值转换命令(自己学) 数值到大写()将一个数值转换到中文读法,第二个参数为是否为简体。 数值到大写(123.44,假) 猜测结果 数值到金额()将双…

接口小练习

文章目录 1.字符串最后一个单词的长度2.字符串中的第一个唯一字符3.验证回文串 1.字符串最后一个单词的长度 计算字符串最后一个单词的长度,单词以空格隔开,字符串长度小于5000。(注:字符串末尾不以空格为结尾) 输入描…

26届JAVA 学习日记——Day14

2024.11.21周四 今天仍然在补充基础知识,项目进度较慢,明天再回顾一下Java8的新特性。 八股 操作系统 什么是缓冲区溢出? 缓冲区溢出是一种常见的计算机安全漏洞,它发生在程序试图将过多的数据写入缓冲区(即一块用…

Element UI 组件库详解【Vue】

文章目录 一、引言二、安装并使用1. 安装2. 使用 三、常见组件说明1. 基础组件2. 布局组件3. 布局容器4. 选择框组件5. 输入框组件6. 下拉框组件7. 日期选择器8. 上传组件9. 表单组件10. 警告组件11. 提示组件12. 表格组件 一、引言 官方网站,element.eleme.cn El…

【腾讯云产品最佳实践】腾讯云CVM入门技术与实践:通过腾讯云快速构建云上应用

目录 前言 什么是腾讯云CVM? 腾讯云CVM的技术优势 基于最佳技术实践,使用腾讯云CVM搭建应用 1. 开通CVM实例 2. 连接CVM实例 3. 配置Web环境 4. 部署PHP应用 腾讯云CVM行业应用案例:电商平台的双十一攻略 1. 弹性伸缩解决高并发问题…

2024信创数据库TOP30之达梦DM8

近年来,中国信创产业快速崛起,其中数据库作为基础软件的重要组成部分,发挥了至关重要的作用。近日,由DBC联合CIW/CIS共同发布的“2024信创数据库TOP30”榜单正式揭晓,汇聚了国内顶尖的数据库企业及产品,成为…

SSA-XGBoost分类预测 | Matlab实现SSA-XGBoost麻雀算法优化XGBoost的多特征分类预测

分类预测 | Matlab实现SSA-XGBOOST麻雀算法优化XGBOOST的多特征分类预测 目录 分类预测 | Matlab实现SSA-XGBOOST麻雀算法优化XGBOOST的多特征分类预测效果一览基本介绍程序设计参考资料效果一览 基本介绍 Matlab实现SSA-XGBoost麻雀算法优化XG

c#编码技巧(十九):各种集合特点汇总

.NET 常用集合对比: .NET 常见的线程安全集合 .NET 只读集合