首页  

Flink理论基础     所属分类 flink 浏览量 949
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