首页 > 其他分享 >Flink介绍

Flink介绍

时间:2023-08-01 15:34:38浏览次数:26  
标签:窗口 Flink 支持 API 介绍 Table 事件

1 什么是Flink

官网定义:Apache Flink is a framework and distributed processing engine for stateful computations over unbounded and bounded data streams. Flink has been designed to run in all common cluster environments, perform computations at in-memory speed and at any scale.

大致的意思就是:Apache Flink是一个分布式大数据处理框架,可对有界数据流和无界数据流进行有状态计算。可部署在各种集群环境,对各种大小的数据规模进行快速计算。

1.1 无界流

有定义开始但没有定义的结束。必须在获取事件数据后立即处理事件,输入是无界的,在任何时间点都不会结束。处理无界数据通常要求以特定顺序(例如事件发生的顺序)获取事件。无界流的处理,也称实时处理或流处理。

用白话说,无界流:就是有一个数据源给你不断的发送数据,比如一个传感器不断的向服务器发送状态信息,比如服务器的实时监控程序。

1.2 有界流

定义了数据的开始和结束。能够在执行任务计算之前,获取所有需要计算的数据。有界流的处理也称为批处理。

用白话说,有界流,就是有限量的静态数据,比如数据库里现在存好的数据,它就是有界的。

2 Flink特点

Flink 功能强大,支持开发和运行多种不同种类的应用程序。在启用高可用选项的情况下,它不存在单点失效问题。事实证明,Flink 已经可以扩展到数千核心,其状态可以达到 TB 级别,且仍能保持高吞吐、低延迟的特性。世界各地有很多要求严苛的流处理应用都运行在 Flink 之上。

Flink的主要特点有:

  • 基于事件驱动,支持高性能,高吞吐,低延迟的数据流处理
  • 支持 java、python、scala api等开发语言,提供分层的API
  • 流(dataStream)批(dataSet)一体化,批数据只是流数据的一个极限特例
  • 支持事件处理和无序处理通过DataStream API,基于DataFlow数据流模型
  • 在不同的时间语义下,支持灵活的窗口(时间,滑动、翻滚,会话,自定义触发器),支持乱序数据的处理
  • 支持有状态计算的Exactly-once(仅处理一次)容错保证
  • 支持基于轻量级分布式快照checkpoint机制实现的容错
  • 支持savepoints 机制,在升级应用或者处理历史数据是能够做到无状态丢失和最小停机时间
  • 支持大规模的集群模式,支持yarn、Mesos。可运行在成千上万的节点上
  • 自动反压机制
  • 高效的自定义内存管理
  • 图处理(批) 机器学习(批) 复杂事件处理(流)

3 Flink与其他实时框架的区别

3.1 数据模型

spark 采用 RDD 模型,spark streaming 的 DStream 实际上也就是一组组小批数据 RDD 的集合(微批处理)

flink 基本数据模型是数据流,以及事件(Event)序列

3.2 运行时架构

spark 是批计算,将 DAG 划分为不同的 stage,一个完成后才可以计算下一个

flink 是标准的流执行模式,一个事件在一个节点处理完后可以直接发往下一个节点进行处理

3.3 各框架总体区别


Spark Streaming

Flink

Storm

设计理念

流是批的特例

批是流的特例

事件驱动

时间语义


处理时间

事件时间,注入时间,处理时间

事件时间,处理时间

窗口

滑动窗口

滚动窗口、滑动窗口、会话窗口

新版本也开始支持滚动窗口和滑动窗口

一致性


Exactly-Once

Exactly-Once

At-Least-Once,通过Trident可以实现Exactly-Once

反压

支持

支持

支持

延迟

秒级

毫秒级

毫秒级

吞吐量

容错性

RDD checkpoint

checkpoint

Record ACKs

状态

支持(DStream)

支持(Operators)

不支持

流批一体

支持

支持

不支持

开发难度

较容易,多语言API

容易,多语言API和SQL

较难

机器学习

支持(MLlib)

支持(FlinkML)

不支持

社区

活跃

活跃

活跃较低




Flink介绍_SQL

flink自身提供了不同级别的抽象来支持我们开发流式或者批处理程序,上图描述了Flink 支持的四种不同级别的抽象。

Stateful Stream Processing

  • 位于最底层, 是core API 的底层实现
  • processFunction (处理函数)
  • 利用低阶,构建一些新的组件或者算子
  • 灵活性高,但开发比较复杂
  • 表达性最强,可以操作状态,time等

Core API

  • DataSet - 批处理 API
  • DataStream –流处理 API
  • 封装了一些算子

Table 
API
 &
 SQL

  • 
构建在Table
之上,都需要构建Table
环境
  • 不同的类型的Table
构建不同的Table
环境
  • Table
可以与DataStream或者DataSet进行相互转换
  • Streaming
SQL不同于存储的SQL,最终会转化为流式执行计划

标签:窗口,Flink,支持,API,介绍,Table,事件
From: https://blog.51cto.com/u_15891458/6922813

相关文章

  • ZLMediaKit WebRTC用法介绍
    一、WebRTC简介WebRTC是一个开源的实时通信技术,它支持浏览器和原生应用程序之间的实时音频/视频通信。WebRTC为音频和视频的传输提供了支持,也为数据的传输提供了支持,使得开发者可以用较少的代码来实现实时通信的功能。二、ZLMediaKitWebRTC介绍ZLMediaKit是一个开源的流媒体服务框......
  • 你是一个资深API接口爬虫程序员,现在需要你介绍一下如何通过商品id来获取商品数据并读
    获取商品数据通常需要使用API接口,根据接口文档中的说明传递商品id参数,并使用相应的请求方式(通常为GET请求)向API服务器发送请求即可。以下是一个获取商品数据的示例请求:首先打开API接口文档,找到获取商品数据的API接口。例如:https://api.xxx.com/products/{product_id}API文档中会说......
  • 状态机的介绍和使用
    1状态机简介1.1定义我们先来给出状态机的基本定义。一句话:状态机是有限状态自动机的简称,是现实事物运行规则抽象而成的一个数学模型。先来解释什么是“状态”(State)。现实事物是有不同状态的,例如一个自动门,就有open和closed两种状态。我们通常所说的状态机是有限状态机......
  • Swagger_介绍和使用方式
         然后在浏览器上访问localhost:8080/doc.html就可以测试接口了......
  • 题型介绍与计算机基础
    CSP-J1题型均为选择题,满分100分,时长2小时。单项选择题概念题数学(如排列组合)阅读程序求输出阅读程序题是否正常运行输入->输出(特征)输出->输入(特征)程序的变量变化情况(循环执行次数)求解代码时间复杂度完善程序题代码类型的完形填空计算机的基础概......
  • Mybatis学习(1)——mybatis介绍 & 入门案例 & 全局配置文件详解 & 增删改查 + mybatis事
    Mybatis学习(1)——mybatis介绍&入门案例&全局配置文件详解&增删改查+mybatis事务&mapper.xml文件#{}和${}&动态SQL入门原文链接:https://blog.csdn.net/Pireley/article/details/131520252目录引出一、mybatis是啥1.官网&ORM(ObjectRelationMapping)对象关......
  • Unity UGUI的Shadow(阴影)组件的介绍及使用
    UnityUGUI的Shadow(阴影)组件的介绍及使用1.什么是Shadow(阴影)组件?Shadow(阴影)组件是UnityUGUI中的一个特效组件,用于在UI元素上添加阴影效果。通过调整阴影的颜色、偏移、模糊等属性,可以使UI元素看起来更加立体和有层次感。2.Shadow(阴影)组件的工作原理Shadow(阴影)组件......
  • MYSQL中JSON类型介绍
    1json对象的介绍在mysql未支持json数据类型时,我们通常使用varchar、blob或text的数据类型存储json字符串,对mysql来说,用户插入的数据只是序列化后的一个普通的字符串,不会对JSON文档本身的语法合法性做检查,文档的合法性需要用户自己保证。在使用时需要先将整个json对象从数据库读......
  • Pytorch 最全入门介绍,Pytorch入门看这一篇就够了
    本文通过详细且实践性的方式介绍了PyTorch的使用,包括环境安装、基础知识、张量操作、自动求导机制、神经网络创建、数据处理、模型训练、测试以及模型的保存和加载。1.Pytorch简介在这一部分,我们将会对Pytorch做一个简单的介绍,包括它的历史、优点以及使用场景等。1.1Pyt......
  • 敏捷认证课-PSM资料介绍-认证培训Scrum.org
    ​PSM资料介绍:https://www.leangoo.com/agile-psm.html在敏捷学习的道路上继续前行,Leangoo领歌的PSM课程已经开启,认证全球认可,还不用续证,可以了解一下。Scrum是目前运用最为广泛的敏捷开发方法,是一个轻量级的项目管理和产品研发管理框架,旨在最短时间内交付最大价值。Scrum的应用......