【大数据-Flink】从入门到企业级应用-基础篇

文章已收录至https://lichong.work,转载请注明原文链接。
ps:欢迎关注公众号“Fun肆编程”或添加我的私人微信交流经验🤝

一、概念

(一)Flink

Flink官网主页:https://flink.apache.org/
Flink核心目标是“数据流上的有状态计算”,具体来说,Flink是一个框架和分布式处理引擎,用于对无界和有界数据流进行有状态计算。
在这里插入图片描述

(二)有界流和无界流

  1. 无界数据流(例:kafka):
    1)有定义流的开始,但没有定义流的结束;
    2)会无休止的产生数据;
    3)无界流的数据必须持续处理,即数据被摄取之后需要立刻处理。我们不能等到所有数据都到达再处理,因为输入是无限的。
  2. 有界数据流(例:文件):
    1)有定义流的开始,也有定义流的结束;
    2)有界流可以在摄取所有数据后再进行计算;
    3)有界流所有数据可以被排序,所以不需要有序摄取;
    4)有界流处理通常被称为批处理。

(三)有状态流处理

把流处理需要的额外数据保存成一个“状态”,然后针对这条数据进行处理,并且更新状态。这就是所谓的“有状态的流处理”。

  • 状态在内存中:优点是速度快;缺点是可靠性差。
  • 状态在分布式系统中:优点是速度慢;缺点是可靠性高。

二、Flink特点

  1. 批流统一
    1)同一套代码,可以跑流也可以跑批
    2)同一个SQL,可以跑流也可以跑批
  2. 性能卓越
    1)高吞吐
    2)低时延
  3. 规模计算
    1)支持水平扩展架构
    2)支持超大状态与增量检查点机制
    3)每天可以处理数万亿的事件、应用维护几TB大小的状态、应用在数千个CPU核心上运行
  4. 生态兼容
    1)支持与Yarn集成
    2)支持与Kubernetes集成
    3)支持单机模式运行
  5. 高容错
    1)故障自动重试
    2)一致性检查点
    3)保证故障场景下精确一次的状态一致性

三、Flink vs SparkStreaming

在这里插入图片描述

FlinkStreaming
计算模型流计算微批处理
时间语义事件事件、处理时间处理时间
窗口多、灵活少、不灵活(窗口必须是批次的整数倍)
状态没有
流式SQL没有

四、Flink分层API

在这里插入图片描述

  • 越顶层越抽象,表达含义越简明,使用越方便
  • 越底层越具体,表达能力越丰富,使用越灵活
  1. 有状态流处理通过底层API(处理函数),对最原始数据加工处理。底层API与DataStream AP相集成,可以处理复杂的计算.
  2. DataStream API(流处理)和DataSet API(批处理)封装了底层处理函数,提供了通用的模块,比如转换(transformations,包括flatmap等),连接 (joins),聚合 (agregations),窗口 (windows)操作等。注意: Flink1.12以后, DataStream API已经实现map、真正的流批一体,所以DataSet API已经过时。
  3. Table API 是以表为中心的声明式编程,其中表可能会动态变化。Table API遵循关系模型,表有二维数据结构,类似于关系数据库中的表;同时API提供可比较的操作,例如select、project、 join、group-by、aggregate等。我们可以在表与 DataStream/DataSet 之间无缝切换,以允许程序将 Table API 与 DataStream 以及DataSet 混合使用。
  4. 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支持集群环境-设计业务与框架分离及实现定时任务调度

✨欢迎为耿直少年点赞、关注、收藏!!!

👇👇👇

### 如何配置和使用 npm 私服 #### 切换本地 npm 源至私服 为了能够从指定的 npm 私服安装软件包或者向其发布自己的模块,需要先更改默认的公共 npm 注册表为自定义的私有注册表。这可以通过修改全局配置来实现: 对于 `npm` 来说,执行如下命令可完成此操作[^1]: ```bash npm config set registry http://xxx.xxx.xxx.xxx:port/ --global ``` 而对于 `yarn` 用户,则应运行下面这条指令以达到相同的效果[^3]: ```bash yarn config set registry http://xxx.xxx.xxx.xxx:port/ --global ``` 请注意将上述 URL 替换成实际使用的 npm 私服地址。 #### 使用特定于项目的源配置 如果仅希望当前项目依赖项来源于私服而不影响其他项目,默认情况下可以在项目根目录下创建 `.npmrc` 文件并加入以下内容[^4]: ```properties registry=http://ip:8081/repository/npm-erayt/ ``` 也可以通过命令行方式添加: ```bash npm config set registry http://ip:8081/repository/npm-erayt/ --userconfig=.npmrc ``` 这里同样要替换掉示例中的 IP 地址与端口号部分。 #### 安装来自私服的包 当已经成功设置了指向私服的新镜像之后,在终端里按照常规流程调用 `npm install <package-name>` 即可以从该服务器获取所需资源[^2]。 #### 发布到 npm 私服 若想将自己的库上传给内部团队成员共享,首先要确保满足必要的前提条件——即拥有有效的登录凭证以及正确的权限设置。接着就可以利用 `npm publish` 命令来进行发布了;在此之前可能还需要做额外的身份验证步骤比如 `npm login`。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Fun肆编程

欢迎投喂

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值