【大数据-Flink】从入门到企业级应用-基础篇
文章已收录至https://lichong.work,转载请注明原文链接。
ps:欢迎关注公众号“Fun肆编程”或添加我的私人微信交流经验🤝
一、概念
(一)Flink
Flink官网主页:https://flink.apache.org/
Flink核心目标是“数据流上的有状态计算”,具体来说,Flink是一个框架和分布式处理引擎,用于对无界和有界数据流进行有状态计算。
(二)有界流和无界流
- 无界数据流(例:kafka):
1)有定义流的开始,但没有定义流的结束;
2)会无休止的产生数据;
3)无界流的数据必须持续处理,即数据被摄取之后需要立刻处理。我们不能等到所有数据都到达再处理,因为输入是无限的。 - 有界数据流(例:文件):
1)有定义流的开始,也有定义流的结束;
2)有界流可以在摄取所有数据后再进行计算;
3)有界流所有数据可以被排序,所以不需要有序摄取;
4)有界流处理通常被称为批处理。
(三)有状态流处理
把流处理需要的额外数据保存成一个“状态”,然后针对这条数据进行处理,并且更新状态。这就是所谓的“有状态的流处理”。
- 状态在内存中:优点是速度快;缺点是可靠性差。
- 状态在分布式系统中:优点是速度慢;缺点是可靠性高。
二、Flink特点
- 批流统一
1)同一套代码,可以跑流也可以跑批
2)同一个SQL,可以跑流也可以跑批 - 性能卓越
1)高吞吐
2)低时延 - 规模计算
1)支持水平扩展架构
2)支持超大状态与增量检查点机制
3)每天可以处理数万亿的事件、应用维护几TB大小的状态、应用在数千个CPU核心上运行 - 生态兼容
1)支持与Yarn集成
2)支持与Kubernetes集成
3)支持单机模式运行 - 高容错
1)故障自动重试
2)一致性检查点
3)保证故障场景下精确一次的状态一致性
三、Flink vs SparkStreaming
Flink | Streaming | |
---|---|---|
计算模型 | 流计算 | 微批处理 |
时间语义 | 事件事件、处理时间 | 处理时间 |
窗口 | 多、灵活 | 少、不灵活(窗口必须是批次的整数倍) |
状态 | 有 | 没有 |
流式SQL | 有 | 没有 |
四、Flink分层API
- 越顶层越抽象,表达含义越简明,使用越方便
- 越底层越具体,表达能力越丰富,使用越灵活
- 有状态流处理通过底层API(处理函数),对最原始数据加工处理。底层API与DataStream AP相集成,可以处理复杂的计算.
- DataStream API(流处理)和DataSet API(批处理)封装了底层处理函数,提供了通用的模块,比如转换(transformations,包括flatmap等),连接 (joins),聚合 (agregations),窗口 (windows)操作等。注意: Flink1.12以后, DataStream API已经实现map、真正的流批一体,所以DataSet API已经过时。
- Table API 是以表为中心的声明式编程,其中表可能会动态变化。Table API遵循关系模型,表有二维数据结构,类似于关系数据库中的表;同时API提供可比较的操作,例如select、project、 join、group-by、aggregate等。我们可以在表与 DataStream/DataSet 之间无缝切换,以允许程序将 Table API 与 DataStream 以及DataSet 混合使用。
- SOL这一层在语法与表达能力上与 Table API类似,但是是以SOL查询表达式的形式表现程序。SOL抽象与Table API交瓦密切,可a个注乐的l木时SOL查询可以直接在Table API定义的表上执行。
文章已收录至https://lichong.work,转载请注明原文链接。
ps:欢迎关注公众号“Fun肆编程”或添加我的私人微信交流经验🤝
【大数据-Flink】从入门到企业级应用-基础篇
【Docker】入门教程-基本概念解读
【前端-React Native】移动端原生开发整合React Native Elements教程-安卓示例
【前端-开发环境】使用NVM实现不同nodejs版本的自由切换(NVM完整安装使用手册)
【前端-NPM私服】内网使用verdaccio搭建私有npm服务器
【前端-IE兼容】Win10和Win11使用Edge调试前端兼容IE6、IE7、IE8、IE9、IE10、IE11问题
【前端-工程化】React项目工程化记录-内置项目活文档(老项目升级优化-集成Hosky/ESLint/Prettier-升级Webpack/Babel/NodeSass/React)
【工具-TWRP-frp-Termux】旧手机暴改成免费云服务器-MIUI刷TWRP安装magisk获取root
【工具-Shell脚本】java程序产品包模板-linux和windows通用shell启动停止脚本(无需系统安装Java运行环境)
【工具-Nginx】从入门安装到高可用集群搭建
【工具-Nginx】Nginx高性能通用配置文件-注释版-支持防刷限流、可控高并发、HTTP2、防XSS、Gzip、OCSP Stapling、负载、SSL
【工具-WireShark】网络HTTP抓包使用教程
【后端-maven打包】通过profile标签解决同时打jar包 war包需求
【架构-DDD】使用领域驱动设计-互联网未来架构设计之道(一)
【后端-SpringCache】基于Spring Cache封装一个能够批量操作的Redis缓存记录下踩坑历程(pipeline或mget封装)
【后端-SkyWalking】SkyWalking前后端开发环境搭建详细教程步骤-6.x/7.x/8.x版本通用-插件二次开发利器(一)
【后端-Quartz】Springboot整合Quartz支持集群环境-设计业务与框架分离及实现定时任务调度
✨欢迎为耿直少年点赞、关注、收藏!!!
👇👇👇