Flink理论基础
所属分类 flink
浏览量 963
Storm 延迟低但吞吐量小
Spark Streaming 吞吐量大但延迟高
Flink 兼具低延迟和高吞吐量特点的流式计算技术,一套框架同时支持批处理和流处理的计算平台
Flink 特性
高吞吐、低延迟、高性能
支持带事件时间的窗口(window)操作 time count session data-driven
支持有状态计算的exactly once语义
支持具有反压功能的持续流模型
支持基于轻量级分布式快照(snapshot)实现的容错
同时支持batch on streaming处理和Streaming处理
Flink在JVM内部实现了自己的内存管理
Spark在1.5版本之后实现了JVM内存管理
支持迭代计算
支持程序自动优化:避免特定情况下shuffle、排序等昂贵操作,中间结果有必要时缓存
避免特定情况下shuffle是区别于Spark很关键的一点,
在代码提交的时候就会进行代码优化,剔除调冗余的没有意义的依赖关系,
在提交代码的时候就已经处理好了,也就是还没有提交到AM的时候就已经处理好。
Spark Streaming是在AM中处理的。
core runtime distributed streaming dataflow
datastream API stream processing
CEP event processing
table relational
dataset API batch processing
flinkML
gelly graph processing
table relational
deploy
local
cluster
standalone
YARN
cloud
Local
Standalone Cluster
Yarn Cluster
JobManager
负责分布式任务管理,如任务调度、检查点、故障恢复等
Flink主从架构中的master
TashManager
负责执行任务线程,以及缓存和传输stream
Flink主从架构中的worker
作业的发起者,客户端(client)向JobManager提交作业,但客户端不是Flink运行时的一部分
三种部署/运行模式
Local
Cluster
Standalone
YARN
Cloud
Flink 和 Spark Streaming
Spark Core 和 Spark Streaming 都是基于RDD的操作
Flink Stream 处理 DataStream API
Flink Batch 处理 DataSet API
同spark—样,Flink也有Flink Core (runtime层)来统一支持流处理和批处理
Flink Core (runtime层)
是一个分布式的流处理引擎,提供了支持Flink计算的全部核心实现。
支持分布式流处理
JobGraph到ExecutionGraph的映射、调度,为上层API层提供基础服务
Flink API层:实现面向Stream的流处理和面向batch的批处理API
特定应用领域库
Flink ML 提供机器学习Pipelines API并实现多种机器学习算法
图计算库Geliy 提供图计算相关API和多种图计算算法实现
Flink API 类型
DataSet 对静态数据讲行批处理操作 将静态数据抽象分布式数据集
使用Flink各种操作符处理数据集
Datastream
对数据进行流处理操作,将流式的数据抽象成分布式数据流,用Flink各种操作符处理数据流
Table API
对结构化数据进行查询操作,将结构化数据抽象成关系表
并通过类SQL的DSL对关系表进行各种查询操作
数据集
无界 不停流入数据(交易日志 点击日志)
有界 批次的,类似MapReduce处理的数据集
数据处理模型
流处理 实时任务,任务一直运行,处理无界数据
批处理 批处理有界数据,有界数据代表数据是有限集合
Flink 将有界数据集当做无界数据集的一种特例
Spark Streaming 把无界数据集分割成有界,通过微批的方式流计算
数据处理组件和流程
Stream source transformation sink
Word Count 流处理程序 StreamGraph
source socket stream parallelism 1
flatmap parallelism 2
keyed Aggregation parallelism 2
sink parallelism 2
任务执行
runtime层以JobGraph形式接收程序
JobGraph即为一个一般化的并行数据流图(dataflow),拥有任意数量的Task来接收和产生data stream
DataStream API和DataSet API都会使用单独编译的处理方式生成JobGraph
DataSet API使用optimizer来决定针对程序的优化方法
DataStream API则使用stream builder来完成该任务
执行JobGraph时,Flink提供了多种候选部署方案(如local, remote, YARN等)
DataSet或DataStream API 类库
逻辑表查询Table
机器学习FlinkML
图处理Geliy
复杂事件处理CEP
Streaming Dataflow
Flink程序实际执行,映射到流式数据流(Streaming Dataflow) 由流和转化符构成
Stream类型RDD是一种数据集 ,可以从Source中来,也可以Transformation转化而来
Flink Transformation和Spark算子基本一致
flink基础
上一篇
下一篇
使用_cat查看Elasticsearch状态
Elasticsearch Scroll 滚动查询实例
DevOps简介
flink流处理WordCount 实例
flink批处理wordcount实例
flink批处理wordcount实例2