大家好,欢迎来到IT知识分享网。
Flink简介
现有的开源计算方案,会把流处理和批处理作为两种不同的应用类型:流处理一般需要支持低延迟(毫秒级的延迟)、Exactly-once保证(数据只消费一次),而批处理需要支持高吞吐、高效处理。
Apache Flink是一个面向分布式数据流处理和批量数据处理的开源计算平台,提供支持流处理和批处理两种类型应用的功能,其中流处理输入数据流是无解的;批处理被作为一宗特殊的流处理,只是他的输入数据流被定义为有界的。
Flink组件栈
Deploy部署层
- Local(本地单JVM进程部署,主要用于本地调试)
- Cluster(集群部署方式)
- Standalone
- YARN:
生产环境常用模式,YARN是一种新的Hadoop资源管理器,可为上层应用提供统一的资源管理和调度,在集群的利用率、资源统一管理和数据共享等方面带来便捷。
- Cloud(GCE/EC2)
Core核心层
Runtime层提供了支持flink计算的全部核心实现,比如:支持分布式流处理、jobGraph到ExecutionGraph的映射、调度等等,为上层API提供基础服务
API接口层
- DataStream API:提供给面向流处理的接口
- DataSet API:面向批处理的接口
Libraries
该层是flink自身提供的、满足特定应用场景的应用框架
- CEP(事件处理模型)
- Table(提供类似SQL的操作)
- FlinkML(机器学习库)
- Gelly(图像处理)
Flink优势
- 支持高吞吐、低延迟、高性能的流处理
- 支持高度灵活的窗口操作(滑动窗口、滚动窗口、session窗口)
- 支持有状态计算的Exactly-once语义
- 提供DataStream API和DataSet API
Apache |
Flink |
SparkStreaming |
Storm |
架构 |
架构介于Spark和Storm之间、主从结构与Spark相似、数据流可以被标识为一个有向图 |
主从模式、每个batch处理都依赖主、可以理解为时间维度上的Spark DAG(有向无环图) ,也就是时间维度很小的批处理Micro-Batch |
主从模式、切高度依赖于Zookeeper,Zookeeper 保存了Storm集群的重要信息。处理过程中对主的依赖不大 |
容错 |
基于Chandy-Lamport分布式快照的CheckPoint机制 容错粒度:Medium |
WAL(预写日志)与RDD血统机制 容错粒度:High |
Records ACK 容错粒度:Medium |
处理模型与延时 |
单条事件处理 亚秒级低延迟 |
一个事件窗口内的所有事件 秒级高延迟 |
每次传入的一个事件 亚秒级低延迟 |
数据处理保证 |
exactly-once |
exactly-once |
at least once |
Flink基础概念
- Flink程序的基础构建模块是流(Stream)和转换(transformations)
- 每一个数据流起始于一个或多个source,并终止于一个或多个sink
时间窗口
- 流上的聚合需要由窗口来划定范围,比如“计算过去的5分钟”或者最后100个元素的和“
- 窗口通常被区分为不同的类型,比如滚动窗口(没有重叠),滑动窗口(有重叠)、会话窗口(由不活动的时隙所打断)
Flink分布式运行环境
基础架构
- Flink是基于Matster-Slave风格的主从架构
- Flink集群启动时,会启动一个JobManager进程、至少一个TaskManager进程
架构示意图
JobManager
- Flink系统的协调者,负责接收Flink job,调度祖成Job的多个Task的执行
- 手机Job的状态信息,并管理Flink集群中从节点TaskManager
TaskManager
- 实际负责执行计算的Worker,在其上执行Flink Job的一组Task
- 负责管理其所在节点上的资源信息,如内存、磁盘、网络,在启动的时候讲资源的状态想JobManager汇报
Client
- 用户提交一个Flink程序时,会首先创建一个Client、该Client首先会对用户提交的Flink程序进行预处理,并提交到Flink集群
- Client会将用户提交的Flink程序组装成一个JobGraph,并且是以JobGraph的形式提交的
Flink下载和安装
官网下载地址:Downloads | Apache Flink
选择相关版本进行下载,解压缩后的目录结构:
直接运行start-cluster.sh启动Flink。
Flink提供了界面管理,默认端口是8081,可以通过flink-conf.yaml进行配置。
Flink 开发环境搭建和入门
Flink官方提供的快速生成本地Flink开发的Maven工程:Index of /qsbt-quickstart.sh
Flink常用算子简介
算子是在转换过程中的概念,可以理解成算法的实现
- DataSet API
- DataStream API
免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://yundeesoft.com/62573.html