当前位置: 首页 > news >正文

Flink基本理解

Flink是什么?

        是一个框架和分布式处理引擎,用于对无界或有界数据流进行有状态计算。

无界流

        定义流的开始,没有定义流的结束,会无休止的产生数据,无界流的数据必须持续处理,即数据被摄取后需要立刻处理。我们不能等到所有数据都达到再处理,因为输入是无限的。

有界流

        有定义流的开始,也有定义流的结束,有界流可以在摄取所有数据后再进行计算,有界流的所有数据可以被排序,所以并不需要有序摄取;有界流处理通常被称为批处理。

有状态流处理

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

Flink特点

高吞吐和低延迟

        每秒处理百万个事件,毫秒级延迟;

结果的准确性

        Flink提供了事件事件和处理时间语义,对于乱序事件流,事件事件语义仍然提供一致且准确的结果。

精确一次

      精确一次的状态一致性保证

可以连接到最常见的存储系统

        如kafka、Hive、JDBC、HDFS、Redis等

高可用

        本身高可用的设置,加上K8s,YARN和Mesos的紧密集成,再加上从故障中快速恢复和动态扩展任务的能力,Flink能做到

使用Flink实现wordcount

import org.apache.flink.api.common.typeinfo.Types;
import org.apache.flink.api.java.ExecutionEnvironment;
import org.apache.flink.api.java.operators.AggregateOperator;
import org.apache.flink.api.java.operators.DataSource;
import org.apache.flink.api.java.operators.FlatMapOperator;
import org.apache.flink.api.java.operators.UnsortedGrouping;
import org.apache.flink.api.java.tuple.Tuple2;
import org.apache.flink.util.Collector;public class BatchWordCount {public static void main(String[] args) throws Exception {// 1. 创建执行环境ExecutionEnvironment env = ExecutionEnvironment.getExecutionEnvironment();// 2. 从文件读取数据  按行读取(存储的元素就是每行的文本)DataSource<String> lineDS = env.readTextFile("input/words.txt");// 3. 转换数据格式FlatMapOperator<String, Tuple2<String, Long>> wordAndOne = lineDS.flatMap(new FlatMapFunction<String, Tuple2<String, Long>>() {@Overridepublic void flatMap(String line, Collector<Tuple2<String, Long>> out) throws Exception {String[] words = line.split(" ");for (String word : words) {out.collect(Tuple2.of(word,1L));}}});// 4. 按照 word 进行分组UnsortedGrouping<Tuple2<String, Long>> wordAndOneUG = wordAndOne.groupBy(0);// 5. 分组内聚合统计AggregateOperator<Tuple2<String, Long>> sum = wordAndOneUG.sum(1);// 6. 打印结果sum.print();}
}

Flink角色

客户端

        代码由客户端获取并做转换,之后提交给JobManager

JobManager

        Flink集群的管事人,对作业进行中央调度管理,而它获取到执行的作业后,会进一步处理转换,然后分发任务给众多的TaskManager

TaskManager

        真正干活的人,数据的处理操作都是它们来做。

http://www.xdnf.cn/news/566605.html

相关文章:

  • 初识Linux · NAT 内网穿透 内网打洞 代理
  • 【题解-洛谷】B4240 [海淀区小学组 2025] 最短字符串
  • buunctf Crypto-[NCTF2019]Keyboard1
  • 腾讯游戏安全与高通合作构建PC端游安全新格局
  • 改写视频生产流程!快手SketchVideo开源:通过线稿精准控制动态分镜的AI视频生成方案
  • Java开发-如何将一个字符串转换成一个数组,又如何把他转换成一个集合
  • Linux中I/O复用机制epoll
  • 【Netty】- 入门2
  • dify基于文本模型实现微调Fine-tune语料构造工作流
  • 在 Ubuntu 下通过 C APP程序实现串口发送数据并接收返回数据
  • OSCP备战-Stapler靶场详细步骤
  • 用java实现内网通讯,可多开客户端链接同一个服务器
  • 离线服务器算法部署环境配置
  • 深度解析 Element Plus
  • Flink CDC 3.4 发布, 优化高频 DDL 处理,支持 Batch 模式,新增 Iceberg 支持
  • naive-ui切换主题
  • 基于RT-Thread的STM32F4开发第六讲——PWM输出(CH1和CH1N)
  • DevOps学习回顾03-ops三部曲之配置管理(CM)
  • C++核心编程_初始化列表
  • Unity3D序列化机制详解
  • 云计算与大数据进阶 | 28、存储系统如何突破容量天花板?可扩展架构的核心技术与实践—— 分布式、弹性扩展、高可用的底层逻辑(下)
  • 游戏盾功能与技术解析
  • 电力设备制造企业数字化转型路径研究:从生产优化到生态重构
  • SpringBoot3+Vue3(2)-前端基本页面配置-登录界面编写-Axios请求封装-后端跨越请求错误
  • 【Java高阶面经:微服务篇】4.大促生存法则:微服务降级实战与高可用架构设计
  • 使用计算机视觉实现目标分类和计数!!超详细入门教程
  • uni-app(2):页面
  • 用python实现汉字转拼音工具
  • 【AI News | 20250521】每日AI进展
  • 【Java高阶面经:微服务篇】9.微服务高可用全攻略:从架构设计到自动容灾