当前位置: 首页 > article >正文

Flink——Flink的基础知识

1、Flink是什么?

Flink核心目标,是“数据流上的有状态计算”(Stateful Computations over Data Streams)。具体说明:Apache Flink是一个框架和分布式处理引擎,用于对无界和有界数据流进行有状态计算

在这里插入图片描述

2、无界流和有界流?

2.1、无界数据流

  • 有定义流的开始,但没有定义流的结束;

  • 它们会无休止的产生数据;

  • 无界流的数据必须持续处理,即数据被摄取后需要立刻处理。

我们不能等到所有数据都到达再处理,因为输入是无限的。

2.2、有界数据流

  • 有定义流的开始,也有定义流的结束;

  • 有界流可以在摄取所有数据后再进行计算;

  • 有界流所有数据可以被排序,所以并不需要有序摄取;

  • 有界流处理通常被称为批处理。

3、有状态流处理

把流处理需要的额外数据保存成一个“状态”,然后针对这条数据进行处理,并且更新状态。这就是所谓的“有状态的流处理”。

在这里插入图片描述

  • 状态在内存中: 优点,速度快;缺点,可靠性差。
  • 状态在分布式系统中: 优点,可靠性高;缺点,速度慢。

4、Flink的特点

我们处理数据的目标是:低延迟、高吞吐、结果的准确性和良好的容错性。

Flink主要特点如下:

  • 高吞吐和低延迟: 每秒处理数百万个事件,毫秒级延迟。
  • 结果的准确性: Flink提供了事件时间(event-time)和处理时间(processing-time)语义。
    对于乱序事件流,事件时间语义仍然能提供一致且准确的结果。
  • 精确一次(exactly-once)的状态一致性保证。
  • 可以连接到最常用的外部系统,如KafkaHiveJDBCHDFSRedis等。
  • 高可用: 本身高可用的设置,加上与K8sYARNMesos的紧密集成,再加上从故障中
    快速恢复和动态扩展任务的能力,Flink能做到以极少的停机时间7×24全天候运行。

5、FlinkSparkStreaming

  • Spark以批处理为根本:

    • Spark 数据模型: Spark采用 RDD 模型,Spark StreamingDStream 实际上也就是一组组小批数据RDD的集合;

    • Spark 运行时架构: Spark是批计算,将DAG 划分为不同的 stage,一个完成后才可以计算下一个。

      在这里插入图片描述

  • Flink以流处理为根本:

    • Flink 数据模型: Flink基本数据模型是数据流,以及事件(Event)序列;

    • Flink 运行时架构: Flink是标准的流执行模式,一个事件在一个节点处理完后可以直接发往下一个节点进行处理。

      在这里插入图片描述

FlinkStreaming
计算模型流计算微批处理
时间语义事件时间、处理时间处理时间
窗口多、灵活少、不灵活(窗口必须是批次的整数倍)
状态没有
流式 SQL 没有

6、应用场景

  • 电商和市场营销: 实时数据报表、广告投放、实时推荐;
  • 物联网(IOT): 传感器实时数据采集和显示、实时报警,交通运输业;
  • 物流配送和服务业: 订单状态实时更新、通知信息推送
  • 银行和金融业: 实时结算和通知推送,实时检测异常行为

7、Flink分层API

  • 越顶层越抽象,表达含义越简明,使用越方便

  • 越底层越具体,表达能力越丰富,使用越灵活

在这里插入图片描述

7.1、有状态流处理

通过底层API(处理函数),对最原始数据加工处理。底层APIDataStreamAPI相集成,可以处理复杂的计算。

7.2、DataStream/DataSet API

DataStream API(流处理)和DataSet API(批处理)封装了底层处理函数,提供了通用的模块,比如转换(transformations,包括mapflatmap等),连接(joins),聚合(aggregations),窗口(windows)操作等。注意:Flink1.12以后,DataStream API已经实现真正的流批一体,所以DataSetAPI已经过时。

7.3、Table API

Table API是以表为中心的声明式编程,其中表可能会动态变化。Table API遵循关系模型:表有二维数据结构,类似于关系数据库中的表;同时API提供可比较的操作,例如selectprojectjoingroup-byaggregate等。我们可以在表与 DataStream/DataSet之间无缝切换,以允许程序将 Table APIDataStream 以及DataSet 混合使用。

7.4、SQL

SQL这一层在语法与表达能力上与Table API类似,但是是以SQL查询表达式的形式表现程序。SQL抽象与Table API交互密切,同时SQL查询可以直接在Table API定义的表上执行。

http://www.lryc.cn/news/2412452.html

相关文章:

  • 秒懂所有USB接口类型,USB接口大全;Type-A、Type-B、Type-C、miniUSB、microUSB区分
  • GIT使用文档
  • ANR系列之一:ANR显示和日志生成原理讲解
  • 《树莓派实战秘籍》——2.4 技巧24在GPU和Linux用户之间划分内存
  • c/s和b/s的区别与联系
  • P3机器学习笔记--李宏毅
  • release版本是什么意思_史上讲解最详细:版本号命名的前世今生(SpringCloud版本原来是这么回事-值得收藏 - 299...
  • QR码国家标准(图片和表格后续会更新)
  • MOV指令
  • AppbarLayout的简单用法
  • 【ML】结构化数据和非结构化数据的区别以及如何将非结构化数据转换为结构化数据
  • SL400之换轴篇@屏轴门
  • 【数字图像处理第四版课后习题答案】第10章 图像分割(含英文原版)
  • 局域网监控软件大盘点:10大好用的局域网监控软件(2024上半年精选)
  • 堪比端游 欧美十大RPG网页游戏推荐
  • Hibernate深入浅出(九)持久层操作——数据保存批量操作
  • 从零开始学习移动端Web开发
  • 攻防世界 Misc高手进阶区 7分题 challenge_how_many_Vigenère
  • 今天是程序员节!
  • 物联网工程实训博客day-7
  • 什么是 RansomCloud,您如何保护自己?
  • 软件定义汽车研究:40个细分赛道,数百家供应商,软件自主化水平快速提升_etas 云原生
  • 搭建rtmp直播流服务之4:videojs和ckPlayer开源播放器二次开发(播放rtmp、hls直播流及普通视频)...
  • 基于Python的批量运维管理系统设计与实现(源码+数据库+讲解)
  • 视频网站是怎么建成的--------JustinTV教你如何打造实时视频网站
  • 三.数据库基础-国产数据库-华为GaussDB高斯学习这一篇就够了(详细)
  • C++/CLI 托管C++之字符串封装【5】
  • 一文读懂《网络安全数据管理条例》(征求意见稿)重点内容
  • shell编程学习基础第四篇
  • python 自然语言处理(四)____词典资源