Flink简介以及与sparkStreaming和Storm比较
Flink简介
- Apache Flink 是一个开源的分布式,高性能,高可用,准确的流处理框架。
- 主要由 Java 代码实现。
- 支持实时流(stream)处理和批(batch)处理,批数据只是流数据的一个极限特例。
- Flink原生支持了迭代计算、内存管理和程序优化。
Flink架构图
- Deploy(部署):
部署的话,Flink可以分为三种,分别是本地模式、集群模式、云,其中集群模式根据资源调度引擎不同又有Standalone(Flink自己的资源调度引擎)和YARN(hadoop的一个资源调度引擎)等等, - API:
API大致分为两种:DataStream API(流式处理)、DataSet API(批处理)。不同的API应用场景有很大不同
- DataStream API:CEP(事务处理)、表格
- DataSet API:机器学习、图处理、表格
Flink基本组件介绍
Flink基本组件由三类组成:Data Source(数据源)、Transformations(转换操作)、Data Sink(数据落地)。
Flink的流式处理与批处理
在大数据处理领域,批处理任务与流处理任务一般被认为是两种不同的任务,一个大数据框架一般会被设计为只能处理其中一种任务
例如Storm只支持流处理任务,而MapReduce、Spark只支持批处理任务。Spark Streaming是Apache Spark之上支持流处理任务的子系统,看似是一个特例,其实并不是——Spark Streaming采用了一种micro-batch的架构,即把输入的数据流切分成细粒度的batch,并为每一个batch数据提交一个批处理的Spark任务,所以Spark Streaming本质上还是基于Spark批处理系统对流式数据进行处理,和Storm等完全流式的数据处理方式完全不同。Flink通过灵活的执行引擎,能够同时支持批处理任务与流处理任务
- 在执行引擎这一层,流处理系统与批处理系统最大不同在于节点间的数据传输方式。
- 对于一个流处理系统,其节点间数据传输的标准模型是:当一条数据被处理完成后,序列化到缓存中,然后立刻通过网络传输到下一个节点,由下一个节点继续处理
- 而对于一个批处理系统,其节点间数据传输的标准模型是:当一条数据被处理完成后,序列化到缓存中,并不会立刻通过网络传输到下一个节点,当缓存写满,就持久化到本地硬盘上,当所有数据都被处理完成后,才开始将处理后的数据通过网络传输到下一个节点
- 这两种数据传输模式是两个极端,对应的是流处理系统对低延迟的要求和批处理系统对高吞吐量的要求
- Flink的执行引擎采用了一种十分灵活的方式,同时支持了这两种数据传输模型
- Flink以固定的缓存块为单位进行网络数据传输,用户可以通过设置缓存块超时值指定缓存块的传输时机。如果缓存块的超时值为0,则Flink的数据传输方式类似上文所提到流处理系统的标准模型,此时系统可以获得最低的处理延迟
- 如果缓存块的超时值为无限大,则Flink的数据传输方式类似上文所提到批处理系统的标准模型,此时系统可以获得最高的吞吐量
- 同时缓存块的超时值也可以设置为0到无限大之间的任意值。缓存块的超时阈值越小,则Flink流处理执行引擎的数据处理延迟越低,但吞吐量也会降低,反之亦然。通过调整缓存块的超时阈值,用户可根据需求灵活地权衡系统延迟和吞吐量
三种数据传输模型
从左到右边分别是极端的流处理和批处理,第三种是Flink的数据传输模型
Flink VS Storm VS SparkStreaming
Flink vs Storm 对比图
实时框架的选择:
- 需要关注流数据是否需要进行状态管理
- At-least-once或者Exectly-once消息投递模式是否有特殊要求
- 对于小型独立的项目,并且需要低延迟的场景,建议使用storm
- 如果你的项目已经使用了spark,并且秒级别的实时处理可以满足需求的话,建议使用sparkStreaming
- 要求消息投递语义为 Exactly Once 的场景;数据量较大,要求高吞吐低延迟的场景;需要进行状态管理或窗口统计的场景,建议使用flink
Flink简介以及与sparkStreaming和Storm比较相关推荐
- 【Flink】Flink简介及Standalone、Yarn和Kubernetes模式的部署
1.Flink 简介 Flink 起源于 Stratosphere 项目,Stratosphere 是在 2010~2014 年由 3 所地处柏林的大学和欧洲的一些其他的大学共同进行的研究项目,201 ...
- SparkStreaming和Storm的区别
SparkStreaming是流式处理框架,是Spark API的扩展,支持可扩展.高吞吐量.容错的实时数据流处理,实时数据的来源可以是:Kafka(Kafka和SparkStreaming是黄金组合 ...
- Flink知识点总结 Flink简介
Flink简介 Flink 是一个框架和分布式处理引擎,用于对无界和有界数据流进行有状态计算.并且 Flink 提供了数据分布.容错机制以及资源管理等核心功能.Flink提供了诸多高抽象层的API以便 ...
- flink从入门到精通-flink简介
文章目录 flink简介 名称的由来 什么是flink 为什么需要flink 流式计算框架比较 模型 Streaming Model API 形式 保证机制 容错机制 状态管理 flink基本概念 f ...
- 大数据组件之Flink简介
一.Flink 简介 Apache Flink 是一个分布式的流处理框架,它能够对有界和无界的数据流进行高效的处理.Flink 的核心是流处理,同时它也能支持批处理,Flink 将批处理看成是流处理的 ...
- Storm,Spark和Flink简介 联系与区别
storm.spark streaming.flink是三个最著名的分布式流处理框架,并且都是开源的分布式系统,具有低延迟.可扩展和容错性诸多优点,允许你在运行数据流代码时,将任务分配到一系列具有容错 ...
- Apache Flink 简介和编程模型
Apache Flink是一个同时支持分布式数据流处理和数据批处理的大数据处理系统. Flink可以表达和执行许多类别的数据处理应用程序,包括实时数据分析,连续数据管道,历史数据处理(批处理)和迭代算 ...
- Apache Flink从入门到放弃——Flink简介(一)
目 录 1. 计算引擎的发展历史 2. 什么是Flink 2.1 概念 2.2 什么是有界的数据流和无界数据流?什么是状态? 2.3 Fink的历史 2.4 Flink的特点 2.5 Flink的应用 ...
- 学习笔记Flink(一)—— Flink简介(介绍、基本概念、应用场景)
一.Flink介绍 Apache Flink 是一个分布式流批一体化的开源平台.Flink 的核心是一个提供数据分发.通信以及自动容错的流计算引擎.Flink 在流计算之上构建批处理,并且原生的支持迭 ...
- Flink简介—大数据技术
Flink是什么? Apache Flink 是一个框架和分布式处理引擎,用于对无界和有界数据流进行状态计算. 国内使用Flink的企业,挺多的 为什么要用Flink? 流数据更加符合生活中数据的真实 ...
最新文章
- 最新!2020中国高校毕业生薪资报告出炉
- 互联网协议 — 数据交换技术
- mybatis plus 使用函数_这些Mybatis-Plus使用技巧,太火了
- Centos配置nginx反向代理8080端口到80端口
- 通过命令行使用 JAX-WS调用webservice
- Windows Phone Dev Notes-如何使用ConnectionSettingsTask 来启动连接设置页面
- Part 2 – Deep analysis using Androguard tools
- 介绍了如何取成员函数的地址以及调用该地址
- 登录id 黑苹果_黑苹果MacOSCatalina无法登录AppStore修复
- or导致索引失效的解决方法_电容引脚断裂失效的机理和解决方法
- _self.$scopedSlots.default is not a function报错
- 安装photoshop2022mac遇到安装失败错误代码182解决方法
- 子网划分,掩码转换计算
- AUTOCAD——设置颜色
- 20190919-6 四则运算试题生成
- 计算机网络学习笔记(持续更新)
- 多视图多示例多标签的协同矩阵分解
- 2021寒假MISC打卡DAY16
- java 生成随机数字_java如何产生随机数
- Centos7安装fish shell,介绍及使用