首页 > 其他分享 >Flink零基础学习笔记(一):基础概念

Flink零基础学习笔记(一):基础概念

时间:2023-04-16 09:02:50浏览次数:35  
标签:状态 笔记 处理 Flink 基础 REST 应用程序 数据

一、Apache Flink的定义、架构和原理

Apache Flink是一个分布式大数据处理引擎,可以对有限数据流和无限数据流进行有状态或无状态的计算,能够部署在各种集群环境,对各种规模大小的数据以内存速度进行快速计算。

接下来我们介绍一下这些关键词的意义。

处理无界和有界数据

任何数据都能形成一种事件流。信用卡交易、传感器测量、机器日志、网站或移动应用程序上的用户交互记录,所有这些数据都形成一种流。

数据可以被定义为无界或者有界流来处理。

  1. 无界流 定义流的开始,但是没有定义流的结束。它们会无休止地产生数据。无界流的数据必须持续处理,即数据被摄取后需要立刻处理。我们不能等到所有数据都到达再处理,因为输入是无限的,在任何时候输入都不会完成。处理无界数据通常要求以特定的顺序摄取事件,例如事件的发生顺序,以便能够推断结果的完整性。
  2. 有界流 定义流的开始,也定义流的结束。有界流可以在摄取所有数据之后进行计算。有界流的所有数据可以被排序,所以并不需要有序摄取。有界流处理通常被称为批处理。

部署到任意地方

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

Flink能够在上述每个资源管理器中很好地工作,这是通过资源管理器特定(resource-manager-specific)的部署模式实现的。Flink可以采用与当前资源管理器相适应的方式进行交互。

部署Flink程序时,Flink会根据应用程序配置的并行性自动标识所需的资源,并从资源管理器请求这些资源。在发生故障的情况下,Flink通过请求新的资源来替换发生故障的容器,这种自动故障恢复机制确保了Flink应用程序的高可用性。提交或控制应用程序的所有通信都是通过REST调用进行的,这可以简化Flink与各种环境中的集成。

REST(Representational State Transfer),即表述性状态转移。它要求每个资源都有一个唯一的标识符URI,通过HTTP协议提供一组操作来访问和操作资源。提交或控制Flink应用程序的所有通信都是通过REST调用进行的,这使得Flink与各种环境中的集成变得更加容易。例如,你可以通过REST调用从脚本或其他应用程序启动Flink应用程序,或者通过REST API监视和控制正在运行的应用程序。

总之,Flink的自动资源管理和自动故障恢复机制以及REST接口提供了一种高效、灵活和易于集成的方式来部署和管理Flink应用程序。

运行任意规模应用

Flink旨在任意规模上运行有状态流的应用。因此,应用程序被并行化为可能数千个任务,这些任务分布在集群中并发执行。从而应用程序能够充分利用集群中的CPU、内存、磁盘和网络IO。而且Flink很容易维护非常大的应用程序状态。而且Flink很容易维护非常大的应用程序状态。其异步和增量的检查点算法对处理延迟产生最小的影响,同时保证精确的一次状态的一致性。这使得Flink可以轻松处理大规模数据集,并且可以快速恢复到应用程序发生故障之前的状态。Flink 是一个高度可扩展且具有强大状态管理功能的流式计算框架,可以在各种规模的数据集上高效地运行。

  • 每天处理数万亿事件
  • 应用维护几TB大小的状态
  • 应用在数千个内核上运行

利用内存性能

有状态的Flink程序针对本地状态访问进行了优化,以提高处理延迟并保证状态一致性。任务的状态始终保留在内存中,以便快速访问和计算。如果状态大小超过可用内存,则Flink会将其保存在能高效访问的磁盘数据结构中,这样可以最大限度减少访问磁盘的次数,从而提高处理性能。任务通过访问本地(通常在内存中)状态来进行所有的计算,从而产生非常低的处理延迟。Flink通过定期和异步地对本地状态进行持久化存储来保证故障场景下精确的一次的状态一致性。

 

 

 

标签:状态,笔记,处理,Flink,基础,REST,应用程序,数据
From: https://www.cnblogs.com/lbwBH/p/17322490.html

相关文章

  • javascript基础练习
     本练习根据w3cschool:https://www.w3cschool.cn/javascript/javascript-conventions.html 1.javascript简介1.1JavaScript是脚本语言JavaScript是一种轻量级的编程语言。JavaScript是可插入HTML页面的编程代码。JavaScript插入HTML页面后,可由......
  • 【web 开发基础】PHP 中的goto语句的使用 -PHP 快速入门 (23)
    前言在所有的开发语言中不是都能使用goto语句,因为对goto的应用一直有争议。很多编程goto也只是作为保留关键字,比如java。支持goto的人认为goto语句使用起来比较灵活,而且有些情形能提高程序的效率。如果完全删去goto语句,有些情形反而会使程序变得过于复杂,增加一些不必要的计算量。......
  • 红帽认证RedHat-RHCSA shell的基本应用用户和组管理网络配置和防火墙管理笔记汇总
    shell命令概述Shell作用:命令解释器介于操作系统内核与用户之间,负责解释命令行获得命令帮助内部命令help命令的“--help”选项使用man命令阅读手册页命令行编辑的几个辅助操作Tab键:自动补齐反斜杠“\”:强制换行快捷键Ctrl+U:清空至行首快捷键Ctrl+K:清空至行尾快捷键Ctr......
  • socat的下载和基础使用
    简介一下socat的下载和使用,内容比较简介。1.socat的下载apt-getinstall-ysocat2.socat的简单使用这里的简单使用其实就是指建立虚拟串口进行通信。(1)创建虚拟串口socat-d-dpty,raw,echo=0pty,raw,echo=0其中,pty表示伪终端,raw表示以原始数据形式进行传输,echo=0表示......
  • Django练手小项目1:云笔记
    Django练手小项目1:云笔记1、创建项目专业版pycharm:新建项目->Django->路径下加上项目名python环境:manage.pystartproject项目名2、创建数据库,设计表结构3、新建应用专业版:点击:tools->运行manage.py->startapp应用名4、注册应用5、配置数据库6、更......
  • 记一次Flink遇到性能瓶颈
    前言这周的主要时间花在Flink上面,做了一个简单的从文本文件中读取数据,然后存入数据库的例子,能够正常的实现功能,但是遇到个问题,我有四台机器,自己搭建了一个standalone的集群,不论我把并行度设置多少,跑起来的耗时都非常接近,实在是百思不得其解。机器多似乎并不能帮助它。把过程记录......
  • 前端&后端程序员必备的Linux基础知识
    一从认识操作系统开始1.1操作系统简介我通过以下四点介绍什么操作系统:操作系统(OperationSystem,简称OS)是管理计算机硬件与软件资源的程序,是计算机系统的内核与基石;操作系统本质上是运行在计算机上的软件程序;为用户提供一个与系统交互的操作界面;操作系统分内核与外壳(我......
  • 学习笔记8
    第15章实现上的问题II一、知识点归纳二、问题与解决过程三、实践内容与截图第16章时钟二、问题与解决过程三、实践内容与截图第17章密钥服务器二、问题与解决过程三、实践内容与截图......
  • Linux内核IO基础知识与概念
    什么是IO在计算机操作系统中,所谓的I/O就是输入(Input)和输出(Output),也可以理解为读(Read)和写(Write),针对不同的对象,I/O模式可以划分为磁盘IO模型和网络IO模型。IO操作会涉及到用户空间和内核空间的转换,先来理解以下规则:内存空间分为用户空间和内核空间,也称为用户缓冲区和内核缓冲......
  • 前端小知识点扫盲笔记记录8
    前言我是歌谣放弃很容易但是坚持一定很酷微信公众号关注前端小歌谣带你进入前端巅峰交流群今天继续对前端知识的小结命令模式宏命令<!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"><metahttp-equiv="X-UA-Compatible"content="IE=edge">......