大数据入门-什么是Flink

这里简单介绍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

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

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

KubeVirt下gpu operator实践(GPU直通)

KubeVirt下gpu operator实践(GPU直通) 参考《在 KubeVirt 中使用 GPU Operator》,记录gpu operator在KubeVirt下实践的过程,包括虚拟机配置GPU直通,容器挂载GPU设备等。 KubeVirt 提供了一种将主机设备分配给虚拟机的机制。该机制具有通用性…

How to update the content of one column in Mysql

How to update the content of one column in Mysql by another column name? UPDATE egg.eggs_record SET sold 2024-11-21 WHERE id 3 OR id 4;UPDATE egg.eggs_record SET egg_name duck egg WHERE id 2;

【K8S系列】imagePullSecrets配置正确,但docker pull仍然失败,进一步排查详细步骤

如果 imagePullSecrets 配置正确,但在执行 docker pull 命令时仍然失败,可能存在以下几种原因。以下是详细的排查步骤和解决方案。 1. 检查 Docker 登录凭证 确保你使用的是与 imagePullSecrets 中相同的凭证进行 Docker 登录: 1.1 直接登录 在命令行中,执行以下命令: …

机器学习基础06

目录 1.梯度下降 1.1梯度下降概念 1.2梯度下降公式 1.3学习率 1.4实现梯度下降 1.5API 1.5.1随机梯度下降SGD 1.5.2小批量梯度下降MBGD 1.6梯度下降优化 2.欠拟合过拟合 2.1欠拟合 2.2过拟合 2.3正则化 2.3.1L1正则项(曼哈顿距离) 2.3.2…

徒手从零搭建一套ELK日志平台

徒手从零搭建一套ELK日志平台 日志分析的概述日志分析的作用主要收集工具集中式日志系统主要特点采集日志分类ELK概述初级版ELK终极版ELK高级版ELKELK收集日志的两种形式 搭建ELK平台Logstash工作原理Logstash核心概念环境准备安装部署docker添加镜像加速器安装部署Elasticsear…

开源科学工程技术软件介绍 – EDA工具KLayout

link 今天向各位知友介绍的 KLayout是一款由德国团队开发的开源EDA工具。 KLayout是使用C开发的,用户界面基于Qt。它支持Windows、MacOS和Linux操作系统。安装程序可以从下面的网址下载: https://www.klayout.de/build.html KLayout图形用户界面&…

Linux离线安装Docker命令,简单镜像操作

解压安装包 首先,使用 tar 命令解压 docker-27.3.1.tgz 安装包: tar -zxvf docker-27.3.1.tgz 将二进制文件移动到可执行路径上的目录 接着,将解压出来的 Docker 二进制文件复制到系统的可执行路径(通常是 /usr/bin/&#xff09…

Redis中常见的数据类型及其应用场景

五种常见数据类型 Redis中的数据类型指的是 value存储的数据类型,key都是以String类型存储的,value根据场景需要,可以以String、List等类型进行存储。 各数据类型介绍: Redis数据类型对应的底层数据结构 String 类型的应用场景 常…

redis中的set类型及常用命令

集合就是把一些有关联的数据放到一起。与list不同的是,集合中的顺序不重要,变换了元素的顺序,仍是同一个集合。集合中的元素是不能重复的。和list类似,集合中的每个元素,也都是string类型。 关于集合的相关命令 sadd/…

Python的顺序表

一、脑图 二、封装一个顺序表的类 1.构造函数 class SeqList:#显性定义出构造函数def __init__(self,capacity 10):#初始化顺序表 ,设置初始容量和已有元素self.capacity capacity #线性表的最大容量self.size 0 #已存储的元素个数self.data [None]*capacity…

OpenCV从入门到精通实战(九)——基于dlib的疲劳监测 ear计算

本文实现Python库d和OpenCV来实现眼部闭合检测,主要用于评估用户是否眨眼。 步骤一:导入必要的库和设置参数 首先,代码导入了必要的Python库,如dlib、OpenCV和scipy。通过argparse设置了输入视频和面部标记预测器的参数。 from…

windows下,用CMake编译qt项目,出现错误By not providing “FindQt5.cmake“...

开发环境:windows10 qt5.14, 编译器msvc2017x64,CMake3.30; 现象: CMakeList文件里,如有find_package(Qt5 COMPONENTS Widgets REQUIRED) target_link_libraries(dis_lib PRIVATE Qt5::Widgets) 用CMak…

基于SpringBoot+Vue的影院管理系统(含演示视频+运行截图+说明文档)

web启动链接地址: http://localhost:8082(管理端) http://localhost:8081(用户端) http://localhost:8082(员工端) 一、项目介绍 基于框架的系统,系统分为用户、员工和管理员三个…

SpringBoot3+Vue3开发图书馆管理系统

1 项目介绍 图书馆管理系统,管理图书、用户、借书、还书、实时监测归还是否逾期,逾期未归还会生成违规记录。违规状态不可借阅图书。需缴纳罚金,消除违规记录。可动态设置图书最多累计借阅数量上限和最长借阅天数上限,当用户满足…

Figure 02迎重大升级!!人形机器人独角兽[Figure AI]商业化加速

11月19日知名人形机器人独角兽公司【Figure AI】发布公司汽车巨头【宝马】最新合作进展,旗下人形机器人Figure 02在生产线上的性能得到了显著提升,机器人组成自主舰队,依托端到端技术,速度提高了400%,执行任务成功率提…

Oracle之Rman非归档模式下的完全恢复

引言 首先Oracle必须处在非归档模式下才能模拟各种情况,Oracle处在非归档模式,做数据库脱机备份,并且rman的参数使用快闪恢复区作为备份文件的存储目录,配置了控制文件的自动备份。 联机全备 示例1:控制文件、数据文件以及重做日志文件丢失的恢复 数据文件以及重做日志…

Android Google登录接入

官方文献: 1、前期准备: https://developers.google.cn/identity/sign-in/android/legacy-start-integrating?hlzh-cnhttps://developers.google.cn/identity/sign-in/android/legacy-start-integrating?hlzh-cn 2、具体开发: 新版 Googl…

Java 同步锁性能的最佳实践:从理论到实践的完整指南

目录 一、同步锁性能分析 (一)性能验证说明 1. 使用同步锁的代码示例 2. 不使用同步锁的代码示例 3. 结果与讨论 (二)案例初步优化分析说明 1. 使用AtomicInteger原子类尝试优化分析 2. 对AtomicInteger原子类进一步优化 …

Docker+Nginx | Docker(Nginx) + Docker(fastapi)反向代理

在DockerHub搜 nginx,第一个就是官方镜像库,这里使用1.27.2版本演示 1.下载镜像 docker pull nginx:1.27.2 2.测试运行 docker run --name nginx -p 9090:80 -d nginx:1.27.2 这里绑定了宿主机的9090端口,只要访问宿主机的9090端口&#…

C#编写的日志记录组件 - 开源研究系列文章

以前编写过一个日志记录组件的博文,这次发布一个修改过的完善版本。 1、 项目目录; 2、 源码介绍; 1) 实现; 2) 使用; 后面的参数为级别设置,只有大于这个级别的才进行日志记录,限制了日志记录的…