Flink的核心概念及运行流程

一、什么是Flink

flink是数据流上的有状态计算,可以用来处理有界和无界数据(实时和批次)。
1、应用的场景:
在这里插入图片描述
• 事件驱动的应用
• 数据管道 & ETL
• 流式、批次数据分析

二、概念及运行流程

1、概念

1.1、flink的组件堆栈

在这里插入图片描述
Programs and Dataflows
1、DataFlow的基本套路:
在这里插入图片描述
构建运行环境-》Source(一个或多个)-》转换(算子) -》Sink(一个或多个)
在这里插入图片描述
多个DataFlow组成DAG。

2、并行化DataFlow(Distributed Streaming DataFlow)
在这里插入图片描述

  • 一个Stream会有多个Stream Partition

  • 一个Operator会还有多个Operator subtasks.Operator subtasks的数据就是这个Operator的并行度

  • Operator(算子)间数据的传递模式:

    • One-to-one streams保持元素的分区和顺序,如mao()
    • Redistributing streams 改变流的分区
  • 重新分区策略取决于使用的算子

    • KeyBy() (re-partitions by hashing the key)
    • broadcast()
    • rebalance() (which re-partitions randomly)

1.2、Flink的API分层架构

在这里插入图片描述
越底层API越灵活,越上层的API越轻便
1、Stateful Stream Processing (有状态的流式处理)

位于最底层, 是core API 的底层实现,主要通过ProcessFunction实现。 灵活性高,但开发比较复杂.
ProcessFunction是一个低阶的流处理操作,它可以访问流处理程序的基础构建模块如:event,state,timers

2、CoreAPIs:

• DataStreamAPI:批处理API • DataSetAPI:流处理API

3、Table API&SQL

• SQL 构建在Table 之上,都需要构建Table 环境 • 不同的类型的Table 构建不同的Table 环境 • Table
可以与DataStream或者DataSet进行相互转换 • Streaming SQL不同于存储的SQL,最终会转化为流式执行计划 •
Table API 程序在执行前有优化器基于优化规则对其进行优化

1.3、核心概念

1、Window(Stream特有)
主要是解决聚合(count,sum)等操作的问题,因为流是无边界的,所以无法对一个流做聚合操作(永远无法输出结果)
但是流可以在一定边界内进行聚合操作,而这个边界就由window给出。
Window可以由
• 数据驱动,例如每100个元素. --CountWindow
• 时间驱动,例如每30s
Tumbling Window(翻滚窗口,无重叠)
Sliding Window(滑动窗口,有重叠)
Session Window(类似于Web编程里的Session,以不活动间隙作为分隔)
• 自定义Window
在这里插入图片描述
2、Time
在这里插入图片描述

  • Event Time:记录产生的时间
  • Ingestion Time:记录进入source的时间
  • Processing Time:记录被处理的时间

常用:ProcessTime和EventTime
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值