【Apache-Flink零基础入门】「入门到精通系列」手把手+零基础带你玩转大数据流式处理引擎Flink(基础概念解析)

news2024/12/22 23:52:48

手把手+零基础带你玩转大数据流式处理引擎Flink

  • 前言介绍
  • Apache Flink 的定义、架构及原理
    • Flink应用服务
      • Streams
        • 有限数据流和无限数据流的区别
      • State
      • Time
      • API
    • Flink架构体系
  • Flink操作处理
  • Flink 的应用场景
    • Flink 的应用场景:Data Pipeline
      • 实时数仓
      • 搜索引擎推荐
    • Flink 应用场景:Data Analytics
    • Flink 应用场景:Data Driven

前言介绍

Apache Flink 是业界公认的最佳流计算引擎之一,它不仅仅局限于流处理,而是一套兼具流、批、机器学习等多种计算功能的大数据引擎。Flink 的用户只需根据业务逻辑开发一套代码,就能够处理全量数据、增量数据和实时数据,无需针对不同的数据类型开发不同的方案。这使得 Flink 成为大数据处理领域中的一款强大工具,可以帮助您构建高效、可靠的大数据处理系统。

希望通过本专题,让大家更全面地了解 Apache Flink 背后的技术,更加得心应手地使用Apache Flink

在这里插入图片描述

Apache Flink 的定义、架构及原理

Apache Flink 是一款高效的分布式大数据处理引擎,它能够对有限数据流和无限数据流进行有状态或无状态的计算,具有出色的扩展性和容错性。Flink 能够轻松地部署在各种集群环境中,并且能够快速地处理各种规模大小的数据。

Flink应用服务

在这里插入图片描述
在学习 Flink 应用开发之前,您需要先了解 Flink 的 Streams、State、Time 等基础处理语义,以及 Flink 的多层次 API。Flink 为开发人员提供了灵活性和方便性,可以根据不同的需求选择不同的 API。无论是数据流处理还是批处理,Flink 都能够满足您的需求。同时,Flink 还提供了状态管理和时间处理等功能,可以帮助您更好地处理数据。

Streams

流数据可以分为有限数据流和无限数据流。

无限数据流被称为不受限制的数据流,因为它们没有固定的结束点,数据会随着时间的推移而持续增加,在处理无限数据流时,计算是持续进行的,因为数据不会停止。

有限数据流是有始有终的数据集合,它们有一个固定的大小,并且最终会被处理完毕。在处理有限数据流时,计算最终会完成并处于结束状态。

有限数据流和无限数据流的区别

有限数据流和无限数据流它们需要不同的处理方法和算法。对于大多数数据处理应用程序来说,都需要处理无限数据流,因此需要使用流式处理框架来处理这些数据。

State

在计算过程中,数据信息对于容错恢复和 Checkpoint 非常重要。流计算本质上是增量处理,因此需要不断查询并保持状态。为了确保 Exactly-once 语义,需要将数据写入状态中。持久化存储可以确保在整个分布式系统运行失败或挂掉的情况下,实现 Exactly-once 语义,这是状态的另一个重要价值。因此,在流计算中,状态管理是非常关键的。通过持久化存储,可以保证数据的一致性和可靠性,从而确保计算结果的准确性。流计算需要具备高可用性和容错性,这样才能保证数据的连续性和正确性。

Time

Flink的无限数据流可以分为三个时间概念:事件时间( Event time)、摄入时间(Ingestion time)和处理时间(Processing time)。这个过程是持续不断的,时间是我们判断业务状态是否滞后以及数据处理是否及时的重要依据。

API

通常情况下,API可以分为三个层次,从上到下分别是SQL/Table API、DataStream API和ProcessFunction。API具有强大的表达能力和业务抽象能力,但随着接近SQL层,表达能力会逐渐减弱,抽象能力会增强。相反,ProcessFunction层的API表达能力非常强,可以进行多种灵活方便的操作,但相对抽象能力较小。

Flink架构体系

在架构部分,主要分为以下四点:
在这里插入图片描述

  1. Flink是一种具备处理有界和无界两种数据流的能力的统一框架。

  2. Flink的部署非常灵活,底层支持多种资源调度器,包括Yarn、Kubernetes等。同时,Flink自带的Standalone调度器也非常灵活,可以轻松部署。

  3. Flink具有极高的可伸缩性,这对于分布式系统来说非常重要。例如,阿里巴巴双11大屏采用Flink处理海量数据,其峰值可达17亿/秒。

  4. Flink具有极致的流式处理性能。相较于Storm,Flink最大的特点是将状态语义完全抽象到框架中,支持本地状态读取,避免了大量的网络IO,从而可以极大地提升状态存取的性能。

Flink操作处理

简单介绍说明 Flink 关于运维及业务监控的内容,具体内容还是会在后面的内容进行介绍和分析说明。

  • Flink具备7x24小时高可用的SOA(面向服务架构),原因是在实现上Flink提供了一致性的Checkpoint。Checkpoint是Flink实现容错机制的核心,它周期性地记录计算过程中Operator的状态,并生成快照持久化存储。当Flink作业发生故障崩溃时,可以有选择地从Checkpoint中恢复,保证了计算的一致性。

  • Flink本身提供监控、运维等功能或接口,并有内置的WebUI,对运行的作业提供DAG图以及各种Metric等,协助用户管理作业状态。这些功能和接口使得Flink作业的管理变得更加简单和高效。

Flink 的应用场景

Flink 的应用场景:Data Pipeline

在这里插入图片描述
Data Pipeline的核心场景是类似于数据搬运,同时在搬运的过程中进行部分数据清洗或处理。在整个业务架构图的左侧是Periodic ETL,它提供了流式ETL或实时ETL,能够订阅消息队列的消息并进行处理、清洗,最终实时写入到下游的数据库或文件系统中。以下是场景举例:

实时数仓

当下游需要构建实时数仓时,上游可能需要进行实时的 Stream ETL,以进行实时的数据清洗或扩展。这个过程将确保数据的时效性,并将清洗后的数据写入到下游的实时数仓中,形成实时数据采集、实时数据处理和下游的实时查询的完整链路。

搜索引擎推荐

以淘宝为例,当卖家上线新商品时,后台会实时产生消息流。该消息流经过 Flink 系统进行数据处理和扩展,生成实时索引并写入搜索引擎中。这样,当淘宝卖家上线新商品时,搜索引擎能够在秒级或分钟级实现搜索,提高用户体验。

Flink 应用场景:Data Analytics

在这里插入图片描述
Data Analytics,如图所示,左边是 Batch Analytics,右边是 Streaming Analytics。Batch Analytics通常使用类似于Map Reduce、Hive、Spark Batch等传统技术,对作业进行离线分析、处理和生成报表。而Streaming Analytics则使用流式分析引擎如Storm、Flink等实时处理和分析数据,适用于实时大屏、实时报表等场景。

Flink 应用场景:Data Driven

在这里插入图片描述
在某种程度上,所有实时数据处理或流式数据处理都属于数据驱动,而流计算本质上就是数据驱动计算。其中,风控系统是应用最广泛的领域之一。当风控系统需要处理各种复杂规则时,数据驱动会将处理规则和逻辑写入到Datastream的API或ProcessFunction的API中,并将逻辑抽象到整个Flink引擎中。当外部数据流或事件进入时,相应的规则将被触发,这就是数据驱动的原理。一旦某些规则被触发,数据驱动会进行处理或预警,并将这些预警发送到下游以产生业务通知。因此,数据驱动在复杂事件处理方面应用广泛。

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

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

相关文章

华为诺亚 VanillaNet

文章标题:《VanillaNet: the Power of Minimalism in Deep Learning》 文章地址:https://arxiv.org/abs/2305.12972 github地址:https://github.com/huawei-noah/VanillaNet 华为诺亚方舟实验室和悉尼大学,2023年5月代码刚开源的…

基于HAL库的STM32的单定时器的多路输入捕获测量脉冲频率(外部时钟实现)

目录 写在前面 一般的做法(定时器单通道输入捕获) 以外部时钟的方式(高低频都适用) 测试效果 写在前面 STM32的定时器本身有输入捕获的功能。可选择双端捕获,上升沿捕获或者是下降沿捕获。对应捕获频率来说,连续捕获上升沿或下降沿的时间间隔就是其脉…

手把手教你F103工程文件的创建并且通过protesu仿真验证创建工程文件的正确性(低成本)

目录 一、新建工程文件夹 二、新建一个工程框架 三、添加文件 四、仿真验证 五、仿真调试中遇到的问题并解决 一、新建工程文件夹 新建工程文件夹分为 2 个步骤:1,新建工程文件夹;2,拷贝工程相关文件。 1.新建工程文件 首先…

【04】STM32·HAL库开发-MDK5使用技巧 |文本美化 | 代码编辑技巧 | 查找与替换技巧 | 编译问题定位 | 窗口视图初始化

目录 1.文本美化(熟悉)1.1编辑器设置1.2字体和颜色设置1.3用户关键字设置1.4代码提示&语法检测1.5global.prop文件妙用 2.代码编辑技巧(熟悉)2.1Tab键的妙用2.2快速定位函数或变量被定义的地方2.3快速注释&快速取消注释 3…

python面向对象操作2(速通版)

目录 一、私有和公有属性的定义和使用 1.公有属性定义和使用 2.私有属性 二、继承 1.应用 2.子类不能用父类的私有方法 3.子类初始化父类 4.子类重写和调用父类方法 5.多层继承 6.多层继承-初始化过程 7.多继承基本格式 8.多层多继承时的初始化问题 9.多继承初始化…

云原生Docker Cgroups资源控制操作

资源控制 Docker 通过 Cgroup 来控制容器使用的资源配额,包括 CPU、内存、磁盘三大方面, 基本覆盖了常见的资源配额和使用量控制。 Cgroup 是 ControlGroups 的缩写,是 Linux 内核提供的一种可以限制、记录、隔离进程组所使用的物理资源(如…

Node服务器-express框架

1 Express认识初体验 2 Express中间件使用 3 Express请求和响应 4 Express路由的使用 5 Express的错误处理 6 Express的源码解析 一、手动创建express的过程: 1、在项目文件的根目录创建package.json文件 npm init 2、下载express npm install express 3、基本…

kafka3

分区副本机制 kafka 从 0.8.0 版本开始引入了分区副本;引入了数据冗余 用CAP理论来说,就是通过副本及副本leader动态选举机制提高了kafka的 分区容错性和可用性 但从而也带来了数据一致性的巨大困难! 6.6.2分区副本的数据一致性困难 kaf…

多模态学习

什么是多模态学习? 模态 模态是指一些表达或感知事物的方式,每一种信息的来源或者形式,都可以称为一种模态 视频图像文本音频 多模态 多模态即是从多个模态表达或感知事物 多模态学习 从多种模态的数据中学习并且提升自身的算法 多…

【k8s 系列】k8s 学习三,docker回顾,k8s 起航

k8s 逐渐已经作为一个程序员不得不学的技术,尤其是做云原生的兄弟们,若你会,那么还是挺难的 学习 k8s ,实践尤为重要,如果身边有自己公司就是做云的,那么云服务器倒是不用担心,若不是&#xff…

IMX6ULL PHY 芯片驱动

前言 之前使用 IMX6ULL 开发板时遇到过 nfs 挂载不上的问题,当时是通过更换官方新版 kernel 解决的,参考《挂载 nfs 文件系统》。 今天,使用自己编译的 kernel 又遇到了该问题,第二次遇到了,该正面解决了。 NFS 挂载…

18JS09——作用域

作用域 一、作用域1、作用域 二、变量的作用域1、变量作用域的分类2、全局变量3、局部变量4、全局变量和局部变量区别 三、作用域链 目标: 1、作用域 2、变量的作用域 3、作用域链 一、作用域 1、作用域 通常来说,一段程序代码中所用到的名字并不总是有…

python基础----06-----文件读写追加操作

一 文件编码概念 思考:计算机只能识别: 0和1,那么我们丰富的文本文件是如何被计算机识别,并存储在硬盘中呢? 答案:使用编码技术(密码本)将内容翻译成0和1存入。 常见编码有UTF8,gbk等等。不同的编码,将内…

vulnhub靶场之DC-3渗透教程(Joomla CMS)

目录 0x01靶机概述 0x02靶场环境搭建 0x03主机发现 0x04靶场渗透过程 ​ 0x05靶机提权 0x06渗透实验总结 0x01靶机概述 靶机基本信息: 靶机下载链接https://download.vulnhub.com/dc/DC-3-2.zip作者DCAU发布日期2020年4月25日难度中等 0x02靶场环…

【Flink】DataStream API使用之输出算子(Sink)

输出算子(Sink) Flink作为数据处理框架,最终还是需要把计算处理的结果写入到外部存储,为外部应用提供支持。Flink提供了很多方式输出到外部系统。 1. 连接外部系统 在Flink中我们可以在各种Fuction中处理输出到外部系统&#xf…

C#读写参数到APP.Config

C#读写参数到APP.Config 介绍程序Demo常见错误 介绍 系统在开发时,可能需要设置默认参数,比如数据库的链接参数,某个参数的默认数据等等。对于这些数据,可直接在app.config中读取。 在读写时,需要先了解configuratio…

echo命令在Unix中的作用以及其常见用法

在Unix系统中,"echo"是一个常用的命令,用于在终端或脚本中输出文本。它可以将指定的字符串或变量的值打印到标准输出,从而向用户提供信息或进行调试。 本文将详细介绍"echo"命令在Unix中的作用以及其常见用法。 基本语法…

Keras-3-实例1-二分类问题

1. 二分类问题 1.1 IMDB 数据集加载 IMDB 包含5w条严重两极分化的评论,数据集被分为 2.5w 训练数据 和 2.5w 测试数据,训练集和测试集中的正面和负面评论占比都是50% from keras.datasets import imdb(train_data, train_labels), (test_data, test_l…

UE5 Chaos破碎系统学习1

在UE5中,Chaos破碎系统被直接进行了整合,本篇文章就来讲讲chaos的基础使用。 1.基础破碎 1.首先选中需要进行破碎的模型,例如这里选择一个Box,然后切换至Fracture Mode(破碎模式): 2.点击右侧…

JAVA实现打字练习软件

转眼已经学了一学期的java了,老师让我们根据所学知识点写一个打字练习软件的综合练习。一开始我也不是很有思路,我找了一下发现csdn上关于这个小项目的代码也不算很多,所以我最后自己在csdn查了一些资料,写了这么一个简略版本的打…