Flink-简介与基础

news2024/11/15 8:43:01

Flink-简介与基础

  • 一、Flink起源
  • 二、Flink数据处理模式
    • 1.批处理
    • 2.流处理
    • 3.Flink流批一体处理
  • 三、Flink架构
    • 1.Flink集群
    • 2.Flink Program
    • 3.JobManager
    • 4.TaskManager
  • 四、Flink应用程序
  • 五、Flink高级特性
    • 1.时间流(Time)和窗口(Window)
    • 2.状态流(State)
    • 3.快照(Checkpoint)
  • 总结
    • 参考文档


一、Flink起源

大数据计算引擎由批处理项流处理发展,由处理单一类型数据到批流一体方法发展。由单一功能逐步发展成更通用、更高效、更易用的一站式(混合架构)的计算引擎。计算引擎发展过程中典型架构:

  • MapReduce:批处理引擎,hadoop中核心组件,开创大数据处理核心思想,即map、reduce。
  • Storm:流处理引擎,为了满足更高时效性而产生
  • Spark:支持流式处理和批处理的统一计算引擎,基于内存计算、提高性能
  • Flink:支持流式处理和批处理的统一计算引擎,支持状态流、时间流等流处理

Flink诞生于柏林工业大学的一个大数据研究项目StratoSphere,2014年被捐献给Apache,成为Apache的顶级大数据项目。Flink将计算的主要方向定位为流处理,将批处理作为流处理的一个特殊情况。并提供了一些如数据状态、事件时间、分布式快照、watermark等高级功能。

二、Flink数据处理模式

在大数据领域早期基本都是批处理,后期随着大数据处理应用范围的拓展,逐步发到到流处理。
在这里插入图片描述

1.批处理

批处理就是对整个有界数据集进行排序、统计或者汇总计算后输出结果。批处理的数据主要有以下特点:

  • 有界:批处理数据集代表数据的有限集合
  • 持久:数据通常存储在可重复获取的持久存储设备中
  • 就绪:数据在计算之前已经就绪,不会发生变化
  • 大量:批处理操作通常是处理海量数据集的唯一方法

2.流处理

流处理是无界数据流,更符合实际情况,例如交易数据、传感器数据等都是不断产生而不会结束。流处理是产生一条数据就会处理一条数据,流处理系统需要对进入系统的数据进行实时计算。而且流数据不一定是持久化的,可能是业务系统实时产生的。

3.Flink流批一体处理

Flink即可以进行流处理,也支持对有界数据进行批处理。也就是Flink可以处理消息队列或者日志这类流式数据源的实时数据,也支持从各种数据源消费有界的历史数据。
在这里插入图片描述

三、Flink架构

Flink是一个分布式系统,采用master/slave架构,可以有效的分配和管理计算资源。集成了常见的集群资源管理器、也可以作为单独集群运行。

1.Flink集群

Flink运行时主要由一个JobManager和多个TaskManager组成。
在这里插入图片描述

2.Flink Program

Flink应用程序不是运行时程序执行的一部分,主要是将用户的Flink作业提交到JobManager,并触发执行Flink程序。

3.JobManager

JobManger主要职责是协调Flink应用程序的分布式执行,主要是调度task、监控task执行情况、协调checkpoint、故障恢复等。

4.TaskManager

TaskManager主要是执行作业流中的task,并且缓存和交换数据流。

四、Flink应用程序

Flink应用程序编写主要是指用户对数据需要进行的操作,Flink将对数据的处理分为输入、处理、输出三个步骤。其中Source负责管理数据源输入、Transformation负责数据计算、Sink负责将结果输出。Transformation是根据需求由Flink提供的算子组合而成的一个处理流程。
Flink首先会将应用构建成一个Dataflow graph。当调用env.execute()时,graph会被打包并发送到JobManager上,JobManager会协调并执行应用。
在这里插入图片描述

五、Flink高级特性

1.时间流(Time)和窗口(Window)

实际应用中有时需要对历史数据进行重新处理和分析。如果时间流只能依靠机器时钟,一些基于时间的统计与运算得出的结果可能会有错误和偏差,因为为了满足以上场景,Flink支持用数据流中的事件时间作为时间依据,而不是处理数据时的机器时间。

2.状态流(State)

流处理过程中,很多操作如何处理都需要依据之前所有数据的累积结果、一些窗口函数也需要缓存之前的数据。Flink中的算子都可以是由状态的,这些状态都是本地访问,这样可以提高吞吐量和减低延迟。
在这里插入图片描述

3.快照(Checkpoint)

大数据运行过程中无法避免故障的出现,因此需要一定的故障恢复机制。Flink通过定期状态快照和流重放来实现故障恢复和精确的一次计算。

总结

主要介绍了Flink背景和以流处理为主的设计理念,Flink的运行时架构、Flink作业的编程以及Flink的高级特性。


参考文档

1.Flink基础概念
2.Flink产生的背景以及简介
3.Flink架构

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

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

相关文章

FreeRTOS深入教程(信号量源码分析)

文章目录 前言一.创建信号量二.释放信号量三.获取信号量成功获取获取不成功 总结 前言 本篇文章将为大家讲解信号量,源码分析。 在 FreeRTOS 中,信号量的实现基于队列。这种设计的思想是利用队列的特性来实现信号量,因为信号量可以被视为只…

借助 XEOS V6, 农牧龙头企业实现原有存储的高效在线替换

面对旧有存储系统的应用不足,某大型现代农牧龙头企业采用了星辰天合的对象存储 XEOS V6 方案, 该方案以其卓越的技术架构和同城双活异地灾备的解决方案完整性,在无缝高效完成系统替换的同时,可以极大地提升系统的灵活性和业务的连…

C/C++ 实现Socket交互式服务端

在 Windows 操作系统中,原生提供了强大的网络编程支持,允许开发者使用 Socket API 进行网络通信,通过 Socket API,开发者可以创建、连接、发送和接收数据,实现网络通信。本文将深入探讨如何通过调用原生网络 API 实现同…

RabbitMQ之发送者(生产者)可靠性

文章目录 前言一、生产者重试机制二、生产者确认机制实现生产者确认(1)定义ReturnCallback(2)定义ConfirmCallback 总结 前言 生产者重试机制、生产者确认机制。 一、生产者重试机制 问题:生产者发送消息时&#xff0…

【python VS vba】(6) python的常用函数print()的各种用法和细节(未完成)

1 基本语法 print() 3.0 都是函数用法 2 可打印的各种对象 直接打印对象 直接打印数组 直接打印string 数值等 3 打印的各种内容如何连接 逗号分隔 &不行 3 转义符 可用转义符 换行的特殊符号 /n 4 print() 里带变量怎么输出 试验了4种输出带变量的方法&#xf…

无需外接显示器,直接使用windows安装树莓派系统并可远程桌面登录

准备工作: 1.安装树莓派官方烧录工具 raspberry pi imager 2.下载树莓派系统镜像(也可选择在线下载安装) 打开imager工具,选择需要安装包树莓派版本 点击"NEXT",在弹出的选项中选择编辑设置。 设置登录名和密码,已经所连接的wif…

如何有效减少 AI 模型的数据中心能源消耗?

在让人工智能变得更好的竞赛中,麻省理工学院(MIT)林肯实验室正在开发降低功耗、高效训练和透明能源使用的方法。 在 Google 上搜索航班时,您可能已经注意到,现在每个航班的碳排放量估算值都显示在其成本旁边。这是一种…

在Linux服务器部署爬虫程序?大佬只需七步!

之前在某乎上看见一篇关于《为什么很多程序员都建议使用 Linux》的文章,结合我自身关于Linux的使用经验。心血来潮得写了一段关于我在Linux系统部署爬虫程序的心得,希望结识更多的爬虫技术大佬,一起游弋在代码世界中。 根据我多年在Linux上部…

机器学习-激活函数的直观理解

机器学习-激活函数的直观理解 在机器学习中,激活函数(Activation Function)是用于引入非线性特性的一种函数,它在神经网络的每个神经元上被应用。 如果不使用任何的激活函数,那么神经元的响应就是wxb,相当…

数据结构-树-二叉树-堆的实现

1.树概念及结构 树是一种 非线性 的数据结构,它是由 n ( n>0 )个有限结点组成一个具有层次关系的集合。 把它叫做树是因 为它看起来像一棵倒挂的树,也就是说它是根朝上,而叶朝下的 。 有一个特殊的结点&#xff…

5.1 Windows驱动开发:判断驱动加载状态

在驱动开发中我们有时需要得到驱动自身是否被加载成功的状态,这个功能看似没啥用实际上在某些特殊场景中还是需要的,如下代码实现了判断当前驱动是否加载成功,如果加载成功, 则输出该驱动的详细路径信息。 该功能实现的核心函数是NtQuerySys…

【matlab版本的ggplot2】

gramm (complete data visualization toolbox, ggplot2/R-like) 来源:Morel, Pierre. “Gramm: Grammar of Graphics Plotting in Matlab.” The Journal of Open Source Software, vol. 3, no. 23, The Open Journal, Mar. 2018, p. 568, doi:10.21105/joss.00568…

五种多目标优化算法(NSDBO、NSGA3、MOGWO、NSWOA、MOPSO)求解微电网多目标优化调度(MATLAB代码)

一、多目标优化算法简介 (1)非支配排序的蜣螂优化算法NSDBO 多目标应用:基于非支配排序的蜣螂优化算法NSDBO求解微电网多目标优化调度(MATLAB)-CSDN博客 (2)NSGA3 NSGA-III求解微电网多目标…

医院预约管理系统开发 代码展示 九价疫苗接种预约功能(含小程序源代码)

基于微信小程序的疫苗预约系统让疫苗信息,疫苗预约信息等相关信息集中在后台让管理员管理,让用户在小程序端预约疫苗,查看疫苗预约信息,该系统让信息管理变得高效,也让用户预约疫苗,查看疫苗预约等信息变得…

力扣刷题篇之排序算法

系列文章目录 前言 本系列是个人力扣刷题汇总,本文是排序算法。刷题顺序按照[力扣刷题攻略] Re:从零开始的力扣刷题生活 - 力扣(LeetCode) 这个之前写的左神的课程笔记里也有: 左程云算法与数据结构代码汇总之排序&am…

网络安全工程师就业前景怎么样?

网络安全工程师的就业前景整体来看是不错的,近些年的岗位需求总体呈现上升的趋势,可以说只要有互联网的存在,就会有网络安全工程师的一席之地。不过现在企业更缺乏资深技术人才,如果只学会了皮毛,可能不会很好就业。 网…

推荐几款优秀的Chrome插件,值得收藏!

文章目录 1、Tampermonkey2、WeTab3、Chrono下载管理器4、AdBlock5、Cookie-Editor 1、Tampermonkey 使用用户脚本自由地改变网络,提升您的浏览体验,使用篡改猴!🌐🚀 篡改猴是一款功能强大的浏览器扩展功能&#xff0c…

python与C++与TensorRT的绑定

绑定的起因 Jetpack中的TensorRT不能直接在python3.8环境中使用,所以我们需要对TensorRT利用pybind11对python相进性绑定。 绑定的官方链接如下:点击这里 这个是8.2版本的,你可以使用其他版本也是可以的。 整个过程可以在虚拟环境中完成,主要是想最后的whl文件 在Jetson…

【快速解决】使用IDEA快速搭建SpringBoot项目(超详细)

前言 Spring Boot是Spring Framework的一款脚手架式框架,可以帮助开发者快速构建基于Spring的企业级应用程序。本篇博客将介绍如何使用IntelliJ IDEA(以下简称IDEA)来快速搭建一个Spring Boot项目。 目录 ​编辑 前言 使用IDEA快速搭建Spri…

react的开发中关于图片的知识

React是一个流行的JavaScript库,用于构建用户界面。在React开发中,图片是一个非常重要的元素,可以用于美化界面和展示内容。本篇博客将详细讲解React中关于图片的知识。 1. React中使用图片 在React中使用图片非常简单,只需要使…