Flink
一、Flink简介
1、Apache Flink框架,是一个分布式处理引擎(分布式计算框架)。
2、它针对于无界和有界数据流,进行有状态计算(实时、批量计算)。
3、其设计,就是为了能在所有常见的集群环境中运行(兼容性强)。
4、以内存速度和任何规模集群执行计算(任意规模集群)。
二、Flink架构特点
1、处理无界及有界数据流(实时处理、批量处理)。
a、任何类型的数据都是以事件流产生的。比如,信用卡交易、传感器测量、机器日志、网站或App上用户交互等产生的数据流
b、因此,数据可以作为无界或有界流处理。
c、无界流数据:特点是有始无终。需持续,顺序摄取处理——>实时处理
d、有界流数据:特点是有始有终。不必顺序摄取处理——>批量处理
2、随处部署应用程序(易部署)。
a、可与其它组件集成部署
Flink是分布式系统,需要计算资源才可执行程序。常见的集群资源管理器,如:Hadoop Yarn,Apache Mesos、Kubernetes。
b、也可单节点集群部署运行。
c、为啥易部署
部署Flink应用程序时,
i)Flink会根据应用程序配置的并行性自动识别所需资源,并从资源管理器请求它们。
ii)如果发生故障,Flink会通过请求新资源来替换发生故障的容器。
iii)提交或控制应用程序的所有通信都通过REST调用进行。这简化了Flink在许多环境中的集成。
3、以任何规模集群、运行应用程序(可大可小集群)。
a、Flink旨在以任何规模运行有状态流应用程序。
应用程序可以并行化为数千个在集群中分布和同时执行的任务。因此,应用程序几乎可以利用无限量的CPU,主内存,磁盘和网络IO。
b、Flink可以轻松维护非常大的应用程序状态。
其异步和增量检查点算法确保对处理延迟的影响最小,同时保证一次性状态一致性。
c、用户反馈的在生产环境Flink的可拓展性报告:
i)应用程序每天处理数万亿个事件。
ii)应用程序可维护复杂的TB级别的状态。
iii)应用程序在数千个内核上运行。
4、内存中运行的性能表现(处理快)。
a、有状态Flink应用程序针对本地状态访问进行了优化。
任务状态始终保留在内存中。或者,如果状态大小超过可用内存,则保存在访问高效的磁盘上数据结构中(SSD 机械/固态)。因此,任务通过访问本地(通常是内存中)状态来执行所有计算,从而产生非常低的处理延迟。
b、Flink通过定期和异步检查本地状态到持久存储来保证在出现故障时的一次状态一致性。
三、无界数据集应用场景(实时计算)
1、源源不断的日志数据
2、web应用,指标分析
3、移动设备终端(分析App状况)
4、应用在任何源源不断产生数据的项目中
四、Flink处理模型
1、流计算(实时计算)
由于数据是源源不断产生,因此需持续,顺序地摄取数据进行处理。
2、批处理(批量计算)
针对一段一段的数据集,则不必顺序摄取处理。计算成功后释放资源,那么此时工作结束。
五、Flink的使用总结
1、处理结果准确:无论是有序数据还是延迟到达的数据。
2、容错机制:
有状态:保持每次的结果往下传递,实现累加。DAG(有向无环图)。
3、有很强大的吞吐量和低延迟。
计算速度快,吞吐量处理的量级大。
4、精准的维护一次的应用状态。
Storm:会发生要么多计算一次,要么漏计算。
5、支持大规模的计算
可以运行在数千台节点上。
6、支持流处理和窗口化操作
7、版本化处理
8、检查点机制(checkpoint),保证一次性计算的精准性
9、支持yarn与mesos资源管理器
六、Flink单节点安装部署
1、下载安装包 https://flink.apache.org/downloads.html
2、上传到Linux环境
3、解压到指定位置,便于管理(比如,myinstall) tar -zxvf flink-1.6.2-bin-hadoop28-scala_2.11.tgz
4、启动 bin/start-cluster.sh
5、访问ui界面 http://192.168.48.111:8081
——————————————————我也是有底线的:)——————————————————