flink必知必会的重要基本知识

Z-hhhhh Z-hhhhh     2022-11-30     238

关键词:

一、Flink基本知识

1.1、Flink介绍

Apache Flink 是一个框架和分布式处理引擎,用于在无界和有界数据流上进行有状态计算。
Flink 官网:https://flink.apache.org/
Flink 的中文官网:https://flink.apache.org/zh/

1.2、有界与无界

1.2.1、有界数据集

有头有尾。处理的数据一定会在某个时间范围内,有可能是一天,也有可能是一分钟,像这样有开始有结束的数据集,叫做有界数据集。对有界数据集的处理叫批处理。

1.2.2、无界数据集

有头无尾。数据从开始就源源不断的产生新的数据。对无界数据集的处理叫做流处理。
有界和无界是一个相对的概念,主要根据时间范围来定。
目前开源的大数据处理框架中,能够同时支持批流计算的,就是Spark和Flink。

1.2.3、流处理和批处理

流处理就像商场里的电梯,人们不用等待,直接就可以上。
批处理就像小区里的直梯,需要等待一段时间,一次能乘坐多个人。

1.3、Flink 对比 Spark

  1. 处理数据的本质不同:

Spark和Flink都希望能用一套技术把流批处理统一起来,但是实现的本质不一样,Spark是以批处理技术为根本,讲数据切成一个一个微小的批次从而实现流式处理,而Flink是完全的流式处理,只要数据一来,就会马上对其进行处理。

  1. 数据模式不同:
    Spark采用RDD,SparkStreaming中的DStream也就是一组一组的小批次RDD。
    Flink的基本数据模型时数据流,以及事件(Event)。

  2. 运行时架构不同:
    Spark是批计算,讲DAG切分成多个Stage,一个Stage做完,才能计算下一个。
    Flink是流执行模型,一个事件在一个节点处理完以后直接发往下一个节点进行处理。

1.4、Flink的优势

1.4.1、优势

  1. 同时支持高吞吐、低延迟、高性能
    Flink是目前大数据框架中唯一以淘实现高吞吐、低延迟、高性能的分布式数据处理框架;Spark由于式基于批处理实现的伪流处理,无法保证低延迟;Storm保证了低延迟和高性能,但是无法实现高吞吐。

  2. 支持Event Time
    在大部分的数据处理框架中,采用的都是系统事件,而不是事件产生的事件,而Flink支持使用Event Time进行窗口计算,避免了由于网络传输而使数据顺序混乱。

  3. 支持有状态的计算
    状态:就是指将计算过程中的中间结果数据保存在内存或者文件系统中。并且支持精确一次(exactly-once)的状态一致性保证。

  4. 高度灵活的窗口计算
    Flink支持三种窗口模式:时间、数量、会话。

  5. 支持轻量级分布式快照
    通过使用分布式快照的Checkpoints,将执行过程中的状态信息进行持久化存储,遇到节点宕机、网络传输问题时,可通过Checkpoints进行任务的自动恢复。

  6. 基于JVM实现独立的内存管理
    Flink实现了自身管理内存的机制,尽可能的减少JVM和GC对系统的影响。

  7. 保存点
    我们的流计算很可能一直都在运行的,一段时间的终止就有可能导致数据丢失或者计算出错,如:集群版本的升级、停机维护操作,可以利用Save Point将任务执行的快照保存在存储介质上,当任务重启的时候,就能恢复到原来计算的状态。

  8. 带有反压的连虚模型
    下游的算子处理跟不上的时候,可以通过流空的方式将信号船体给上流的算子,上游的算子再将信号传递给source,从而实现sink反向到source,控制source的消费速度,保证系统的稳定运行。

1.4.2、特点

有状态的计算:以本地内存的中状态代替了关系型数据中存储的数据。但是保存到内存的数据容易丢失,所以我们使用Checkpoint做容灾处理。相当于给状态做了快照,把它保存到远程的一个存储空间去。


1.5、Flink中的角色

Flink也遵循主从原则,主节点为JobManager,从节点为TaskManager。

  1. 客户端
    将任务提交到JobManager,并和JobManager进行任务交互获取任务执行状态。
  2. JobManager
    负责任务的调度和资源的管理。负责Checkpoint的协调过程。
    获取到客户端的任务后,会根据集群中TaskManager上TaskSlot的使用情况,为提交的任务分配相应的TaskSlots资源,并命令TaskManager启动。
    JobManager在执行任务过程中,会触发Checkpoints操作,每个TaskManager收到Checkpoint指令后,完成Checkpoint操作。完成任务后,Flink会将结果反馈给客户端,并释放掉TaskManager中的资源。
  3. TaskManager
    负责任务的执行。负责对任务的每个节点上的资源申请与管理。
    TaskManager从JobManager接受到任务后,使用Slot资源启动Task,开始接受并处理数据。
  4. ResourceManager
    ResourceManager负责Flink集群中的资源提供、回收、分配、管理task slots。Flink为不同的环境和资源提供者(如:YARN,Mesos,Kubernetes和standalone部署)实现了对应的ResourceManager。在standalone设置中,ResourceManager指能分配可用TaskManager的slots,而不能自行启动新的TaskManager。
  5. Dispatcher
    Dispacher提供了一个REST接口,用来提交Flink应用程序执行,并未每一个提交的作业启动一个新的JobMaster。它还运行Flink WebUI 用来提供作业执行信息。
  6. JobMaster
    JobMaster负责管理单个JobGraph的执行。Flink集群中可以同时运行多个作业,每个作业都有自己的JobMaster。

elasticsearch必知必会的干货知识二:es索引操作技巧(代码片段)

该系列上一篇文章《Elasticsearch必知必会的干货知识一:ES索引文档的CRUD》讲了如何进行index的增删改查,本篇则侧重讲解说明如何对index进行创建、更改、迁移、查询配置信息等。仅创建索引:PUTindexPUT/index添加字段设置(mappings... 查看详情

❤️hadoop必知必会的基本知识❤️

🏃‍HDFS🏊‍HDFS的组成架构:这种架构主要由四个部分组成,分别为HDFSClient、NameNode、DataNode和SecondaryNameNode。下面我们分别介绍这四个组成部分。1)Client:就是客户端。 (1)文件切分。文件上... 查看详情

❤️hadoop必知必会的基本知识❤️

🏃‍HDFS🏊‍HDFS的组成架构:这种架构主要由四个部分组成,分别为HDFSClient、NameNode、DataNode和SecondaryNameNode。下面我们分别介绍这四个组成部分。1)Client:就是客户端。 (1)文件切分。文件上... 查看详情

zookeeper必知必会的知识点

ZooKeeper是什么?ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,是Google的Chubby一个开源的实现,它是集群的管理者,监视着集群中各个节点的状态根据节点提交的反馈进行下一步合理操作。最终,将简单易用的接... 查看详情

多线程必知必会的知识点

1)现在有T1、T2、T3三个线程,你怎样保证T2在T1执行完后执行,T3在T2执行完后执行?这个线程问题通常会在第一轮或电话面试阶段被问到,目的是检测你对”join”方法是否熟悉。这个多线程问题比较简单,可以用join方法实现。2)... 查看详情

架构实践架构师必知必会的5种业界主流的架构风格

 【架构实践】架构师必知必会的5种业界主流的架构风格目录 【架构实践】架构师必知必会的5种业界主流的架构风格 查看详情

架构实践架构师必知必会的5种业界主流的架构风格

 【架构实践】架构师必知必会的5种业界主流的架构风格目录 【架构实践】架构师必知必会的5种业界主流的架构风格 查看详情

持续更新,建议收藏python必知必会的知识点,极大提升开发效率(代码片段)

问题本文主要介绍Python编程的一些必知必会的知识点,方便后续编程,提升效率。方法字符串转整数#字符串是普通整数a=int('1000')print(a)#1000#字符串是二进制b=int('1000',2)print(b)#8#整数转固定长度的二进制... 查看详情

tcp/ip,必知必会的

...TCP拥塞控制 0前言本文整理了一些TCP/IP协议簇中需要必知必会的十大问题,既是面试高频问题,又是程序员必备基础素养。 1TCP/IP模型TCP/IP协议模型(TransmissionControlProtocol/InternetProtocol 查看详情

linux必知必会的基本命令和部署项目流程(代码片段)

Linux的基本命令Linux下我们的输入被以空格(个数不限)分割成多个部分(命令+参数),如果某个部分中自带空格,需要使用引号引起来。命令一般自带帮助文档,使用命令--help查看。命令的大多数选项都是-[字母]或--[字母]... 查看详情

必知必会的设计原则——合成复用原则(代码片段)

 设计原则系列文章 必知必会的设计原则——单一职责原则必知必会的设计原则——开放封闭原则必知必会的设计原则——依赖倒置原则必知必会的设计原则——里氏替换原则必知必会的设计原则——接口隔离原则必知必... 查看详情

持续更新,建议收藏python必知必会的知识点,极大提升开发效率(代码片段)

问题本文主要介绍Python编程的一些必知必会的知识点,方便后续编程,提升效率。方法整数列表join设有一个整数列表,实现连接所有整数形成一个字符串,如下:d=[1,2,3,4]print(''.join(d))很遗憾,上... 查看详情

大数据必知必会的-linux命令(代码片段)

用户的创建和删除命令用户创建和密码设置useradd用户名passwd用户名useradditheima#创建新用户itheimapasswditheima#设置用户itheima密码用户删除user-r用户名userdel-ritheima#删除用户itheima权限管理命令文件权限概述Linux操作系统是多任务多用... 查看详情

大数据必知必会的-linux命令(代码片段)

用户的创建和删除命令用户创建和密码设置useradd用户名passwd用户名useradditheima#创建新用户itheimapasswditheima#设置用户itheima密码用户删除user-r用户名userdel-ritheima#删除用户itheima权限管理命令文件权限概述Linux操作系统是多任务多用... 查看详情

省时提效!5个必知必会的sql窗口函数!(代码片段)

SQL是数据世界中的通用语言,是作为数据科学人员必备技能。它之所以如此重要,是因为许多数据探索、数据操作、管道开发和仪表板创建都是通过SQL完成的。想要利用SQL高效处理数据任务,掌握一些窗口函数非常有... 查看详情

2020最新40k技能清单:聚焦java开发工程师必知必会的进阶知识!

在你身边可有这一些这样的事件现象已经工作两三年了,每个项目都会加班加点全力以赴去完成,薪资增长幅度却不如人意。听说年后离职的老同事,金三刚拿下高薪offer,年薪直奔50万了。由于现在的公司接触不到新技术,对... 查看详情

10个必知必会的统计学问题

...?假设检验的内涵和步骤?这篇文章带你来看10个必知必会的统计学问题。正文来源:计量经济学1、问:自由度是什么?怎样确定?答:ÿ 查看详情

java开发者必知必会的50个redis知识点,面试/学习都无所畏惧

推荐阅读关于"高并发系统设计"看这篇就够了,阿里、百度、美团都在用Redis作为目前的主流NoSql数据库,不会是不可能的,在面试中也是非常高频的,一定不能在这个环节丢分,不管是学习,还是面试,以下知识点,都... 查看详情