Flink基础原理及应用场景
Flink简介
Apache Flink是一个开源的分布式,高性能,高可用,准确的流处理框架
主要由Java代码实现
支持实时流处理和批处理(流处理的一种),批数据只是流数据的一个极限特例
Flink原生支持迭代计算,内存管理和程序优化
Flink特点
流式优先(连续处理)
容错(有状态的计算)
可伸缩(可支持上千个节点)
性能(高吞吐,低延迟)
数据来源
Flink的数据来源可以由 应用,传感器,文件系统和储存,日志消息
数据存储
将收集,处理之后的数据可以存放到 应用,数据库,文件系统和存储,日志消息
架构图
底层部署: 部署分为三种情况: 本地部署 单独集群 公用yarn 云服务器
核心部分: 分布式流式处理引擎;API分成两种:DataStream 流式数据处理 DataSet 批处理
实现部分:DataStream实现的是Event处理API Table对API封装(SQL处理)
DataSet实现的是FlinkML(机器学习) Gelly (图处理) Table (批处理 SQL处理)
基本组件介绍
Data Source(数据源)----->Transformations(具体的数据处理)------>Data Sink(数据输出)
流处理和批处理
简介
在大数据处理领域,批处理任务与流处理任务一般被认为是两种不同的任务,一个大数据框架一般会被设计为只能处理其中一种任务,这两种数据传输模式都是两个极端,对应的流处理对低延迟和批处理对高吞吐量的要求
流处理
对于一个流处理系统,其节点数据传输的标准模型是:当一条数据被处理完成后,序列化到缓存中,然后立刻通过网络传输到下一个节点,由下一个节点继续处理
批处理
对于一个批处理系统,其节点间数据传输的标准模型是:当一条数据被处理完成之后,序列化到缓存中,并不会立刻通过处理后的数据通过网络传输到下一个节点,当缓存写满,就持久化到本地硬盘上,当所有数据都被处理完成后,才开始将处理后的数据通过网络传输到下一个节点
Flink同时处理流处理和批处理的原理
Flink的执行引起采用了一种十分灵活的方式,同时支持了这种数据传输模型
Flink以固定的缓存块为单位进行网络数据传输,用户可以通过设置缓存超时时值指定缓存块的传输时机,如果存储快超时值为0,则Flink的数据传输方式类似于上文所提到流处理系统的标准模型,此时系统可以获得最低的处理延迟
如果缓存块的超时值为无限大,则Flink的数据传输方式类似于上文所提到批处理系统的标准模型,此时系统可以获得最高的吞吐量
同时缓存块的超时值也可以设置为0到无限大之间的任意值,缓存块的超时阈值越小,则Flink流处理执行引擎的数据处理延迟越低,但吞吐量也会降低,反之亦然,通过调整缓存块的超时阈值,用户可根据需求灵活地权衡系统延迟和吞吐量
Flink vs storm vs sparkStreaming对比
Flink广发集成
Flink与开源大数据处理生态系统中的很多项目都有集成。Flink可以运行在yarn上,与HDFS协程工作,从kafka读取数据,可以执行Hadoop程序代码,可以链接多种数据存储系统
flink控制offset(kafka zk)
redis
Flink应用场景分析
优化电商网站的实时搜索结果
针对数据分析团队提供实时流处理服务
网络/传感器检测和错误检测
商业智能分析ETL
小结
今天就分享到这里,希望这篇文章可以让你对Flink有一个基础的认识,让我们开启Flink的学习之旅吧