首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >中间件系列:3 flink安装和测试

中间件系列:3 flink安装和测试

作者头像
李福春
发布于 2025-07-01 12:00:43
发布于 2025-07-01 12:00:43
4380
举报

Flink 是什么?

Flink的图标是:可爱的小松鼠。

Flink : 可以译为“灵活的”或“敏捷的”。

但在大数据和计算领域,它主要指代Apache Flink这个流处理框架。

官方定义: Apache Flink 是一个在数据流上进行有状态计算的分布式处理引擎和框架。

Flink 可以在所有常见的集群环境中运行,以任意规模,内存级执行计算速度。

Flink的使用场景是什么?


Flink的使用场景可归纳为以下三类,结合其核心特性(流批一体、低延迟、状态管理等)进行分类说明:

事件驱动型:需即时响应的场景(如风控、监控)

数据分析型:需实时洞察的场景(如大屏、用户分析)

数据管道型:需持续数据流转的场景(如数仓建设)

一、事件驱动型应用

定义:根据实时事件流触发计算、状态更新或外部动作,实现即时响应。

特点:

低延迟:毫秒级响应,适用于实时风控、异常检测等场景23。

有状态计算:通过本地状态存储(内存/磁盘)减少对远程数据库的依赖,提升吞吐量38。

复杂事件处理(CEP):支持跨多条事件的模式检测,如用户行为序列分析210。

典型场景:

反欺诈检测:实时分析交易行为,识别异常模式(如短时间内高频转账)28。

业务流程监控:追踪订单状态、物流路径等,触发预警或自动化操作310。

实时告警:基于规则检测服务器攻击、用户行为异常等49。

二、数据分析应用

定义:从数据流中提取有价值信息,支持实时决策与报表生成。

特点:

流批一体:统一处理有界(批)和无界(流)数据,简化架构复杂度36。

灵活查询:支持SQL接口和自定义函数,适配复杂分析需求38。

典型场景:

实时报表与大屏:如电商大促期间的GMV实时统计210。

用户行为分析实时计算活跃度、留存率等指标,优化产品策略59。

物联网数据分析:处理传感器数据,实现设备状态监控与预测性维护69。

三、数据管道应用

定义:持续传输、转换数据,构建实时数据流转链路。

特点:

持续流处理:替代传统周期性ETL,支持实时数据入仓14。

高吞吐:高效处理大规模数据迁移,如日志聚合、多源数据整合34。

典型场景:

实时ETL:清洗、归并数据并写入数据仓库(如HDFS、Kafka)14。

跨系统数据同步:订阅数据库Binlog(如RDS、PolarDB),实时同步至分析系统46。

动态表更新:通过Flink Table Store支持多引擎实时查询8。

Flink的核心特性是什么?

Flink的核心特性可归纳为以下八点,结合其技术架构与实际应用场景进行说明:


一、流批一体处理

  • 统一引擎Flink将批处理视为有界流,流处理视为无界流,通过同一引擎处理两类数据,简化化架构复杂度
  • 无缝切换支持动态调整数据流的有界/无界属性,例如实时ETL与离线分析共用计算逻辑

二、低延迟与高吞吐

  • 毫秒级响应基于事件驱动模型,适用于实时风控、监控等场景,延迟可低至毫秒级
  • 高吞吐能力通过内存计算优化和并行处理,支持每秒百万级事件处理

三、精确一次(Exactly-once)语义

  • Checkpoint机制基于分布式快照技术,周期性保存状态到持久化存储,确保故障恢复时数据一致性
  • 状态一致性结合Savepoint实现版本控制,支持应用升级或数据回溯

四、事件时间语义

  • 时间灵活性支持事件时间(Event Time)、处理时间(Processing Time)和 摄入时间(Ingestion Time),适应乱序数据和延迟场景
  • Watermark机制管理数据延迟,触发窗口计算并处理迟到数据

五、灵活的状态管理

  • 状态类型丰富提供ValueState、ListState、MapState等,支持复杂计算需求
  • 存储优化状态可存储于内存或RocksDB,平衡性能与容量

六、丰富的窗口机制

  • 窗口类型多样支持滚动窗口(Tumbling Window)、滑动窗口(Sliding Window)、会话窗口(Session Window)及自定义窗口
  • 触发条件灵活可基于时间、数据量或业务逻辑定义窗口行为

七、容错与弹性扩展

  • 轻量级容错Checkpoint机制对性能影响小,兼顾高吞吐与强一致性
  • 动态资源调整:支持Kubernetes等环境的弹性扩缩容,适应负载变化

八、丰富的生态与集成

  • 多数据源支持通过Connectors对接Kafka、MySQL、HDFS等存储系统
  • SQL与Table API提供类SQL语法和自定义函数,降低开发门槛

最新版本的flink2.0.0特性。

  1. 分离式状态存储(ForSt)
    • 状态与计算解耦,支持分布式文件系统(DFS)存储,突破本地磁盘限制
    • 异步状态访问API降低检查点延迟,吞吐量提升50%以上
  2. 异步执行模型
    • 状态访问与计算并行执行,优化资源利用率,适用于高延迟状态场景
  3. 流式湖仓架构
    • 深度集成Apache Paimon,支持实时数据湖场景,简化流批一体处理
  4. API与配置清理
    • 移除过时API(如Per-Job模式),优化高可用配置流程

Flink的部署方式?


一、部署方式详解

1. 本地模式(local Mode)

步骤

  1. 解压Flink安装包:tar -zxvf flink-xxx-bin-scala_2.12.tgz -C ./local
  2. 启动单机集群:./bin/start-cluster.sh 
  3. 访问WebUI:http://localhost:8081

核心配置

  • 无需额外配置,适合快速测试。

2. Standalone模式

步骤

  1. 环境准备
    • 集群节点配置SSH免密登录
    • 修改conf/masters文件指定JobManager节点,conf/workers文件添加TaskManager节点
  2. 启动集群
    • 执行./bin/start-cluster.sh ,通过jps检查进程(JobManager、TaskManager)
  3. 高可用配置
    • 配置ZooKeeper或HDFS存储元数据,设置high-availability.storageDir

核心配置

  • taskmanager.numberOfTaskSlots定义并行度。
  • taskmanager.heap.size 分配TaskManager内存。

3. YARN模式

步骤

  1. 环境依赖
    • 设置HADOOP_HOMEYARN_CONF_DIR环境变量
  2. 启动Session集群 分配2个TaskManager,每个2GB内存  ./bin/yarn-session.sh  -n 2 -tm 2048m  
  3. 提交作业
代码语言:javascript
AI代码解释
复制
./bin/flink run -m yarn-cluster -yid <yarn-session-id> Job.jar 

子模式:

Application模式

独立JobManager,资源隔离性强


4. Kubernetes模式

步骤

  1. 构建镜像docker build -t flink-k8s:xxx . 推送至私有仓库 
代码语言:javascript
AI代码解释
复制
docker push flink-k8s:xxx  

2.部署集群

代码语言:javascript
AI代码解释
复制
./bin/kubernetes-session.sh  
\  --detached 
\  --image flink-k8s:xxx 
\  --containerized 
\  --slot-type default
 

3. 弹性扩缩容

  • 通过kubectl scale动态调整TaskManager数量


5. Docker方式

步骤

  1. 拉取镜像
代码语言:javascript
AI代码解释
复制
docker pull flink:xxx-scala_2.12 
  1. 启动JobManagerdocker run -d -p : --name jobmanager  \  -e JOB_MANAGER_RPC_ADDRESS=jobmanager  \  flink:xxx-scala_2.12 
  2. 启动TaskManager docker run -d --name taskmanager  \  -e JOB_MANAGER_RPC_ADDRESS=jobmanager  \  flink:xxx-scala_2.12 

二、优缺点对比

模式

优点

缺点

本地模式

简单快速,无需集群环境

仅适合测试,无法处理大规模数据。

Standalone

资源独占,配置灵活,适合中小规模生产

手动管理节点,扩展性差,依赖SSH免密。

YARN模式

与Hadoop生态无缝集成,资源动态调度

依赖Hadoop环境,配置复杂,延迟较高。

Kubernetes

弹性扩缩容,支持容器化部署,适合云原生环境

需要K8s运维能力,资源隔离需额外配置。

Docker模式

容器化部署便于移植,环境一致性高

资源隔离不足,需自行管理网络和存储。


三、选择建议

  • 开发测试本地模式或Docker快速验证。
  • 中小规模生产Standalone模式,资源独占且配置灵活。
  • Hadoop生态整合YARN模式,利用现有资源池。
  • 云原生环境Kubernetes模式,支持弹性扩缩容和自动化运维。

Flink的架构图和组件?

官方架构图如下:

图片
图片

组件说明:

1.JobManager(作业管理器)

  • 依赖ZooKeeper存储元数据(如Checkpoint状态),主节点故障时自动切换
  • 协调集群资源,分配TaskManager的任务槽(TaskSlot)
  • 将用户提交的作业图(JobGraph)转换为可执行的物理执行计划(ExecutionGraph)
  • 监控任务状态,处理故障恢复(如通过Checkpoint机制)

    职责:高可用

2.TaskManager(任务管理器)

  • 支持内存(低延迟)或RocksDB(大状态)存储,确保Exactly-once语义
  • 执行具体任务,每个实例包含多个TaskSlot(默认1个,可配置)
  • 通过算子链(Operator Chain)减少数据序列化开销,提升性能 职责:状态管理

3.客户端(Client)

  • 提交作业(JobGraph)到JobManager,支持命令行或编程接口
  • 可脱离集群运行,提交后即退出或保持连接监控进度


工作流程示例

  1. 作业提交客户端提交WordCount作业到JobManager。
  2. 资源分配JobManager分配TaskManager的TaskSlot,生成执行计划。
  3. 数据处理TaskManager从Kafka读取数据,经窗口聚合后写入本地文件系统。
  4. 容错保障每5分钟触发Checkpoint,保存状态到HDFS,故障时从最近Checkpoint恢复
图片
图片

Flink的本地物理部署和例子?


java环境必须java11以上。

图片
图片

下载最新版本的flink2.0.0 解压好

图片
图片

启动集群:

代码语言:javascript
AI代码解释
复制
bin/start-cluster.sh

jps查看进程:

图片
图片

webUI访问测试: http://localhost:8081

图片
图片

测试官方例子。

先准备好测试数据:

我找了一下 吻别的英语版本歌词,放到里面。

代码语言:javascript
AI代码解释
复制
English Lyrics Translation
Verse 1
Hiding from the rain and snow,
Trying to forget, but I won’t let go.
Looking at a crowded street,
Listening to my own heartbeat.
So many people all around the world,
Tell me where do I find someone like you, girl?

Chorus
Take me to your heart, take me to your soul.
Give me your hand before I’m old.
Show me what love is—I haven’t got a clue.
Show me that wonders can be true.

Verse 2
Standing on a mountain high,
Looking at the moon through a clear blue sky.
I should go and see some friends,
But they don’t really comprehend.
Dont need too much talking, without saying anything.
All I need is someone who makes me wanna sing.

Final Chorus
Take me to your heart, take me to your soul.
Give me your hand and hold me tight.
Show me what love is—be my guiding star.
It’s easy: take me to your heart.
图片
图片

提交任务到flink .

代码语言:javascript
AI代码解释
复制
sudo bin/flink run examples/streaming/WordCount.jar 
--input file:///mnt/d/bd/flink/testdata/input.txt 
--output file:///mnt/d/bd/flink/testdata/

成功运行。

图片
图片

看看结果:

图片
图片

web页面看看执行的过程。

图片
图片

执行细节。

图片
图片

程序代码解读:

  1. 参数解析解析命令行参数,配置作业的执行模式、输入源、输出目标等。
  2. 环境配置创建执行环境,根据参数配置状态后端和执行模式。
  3. 数据读取根据参数选择从文件或内存中读取数据。
  4. 数据处理将文本行拆分为单词,分组并求和。
  5. 数据输出根据参数将结果写入文件或打印到控制台。
  6. 作业执行启动作业。

里面语法细节这里先不展开。

小结

初步认识了Flink,是什么?记住了它。

哪些场景可以使用它?数据分析,实时事件,数据管道。

核心特性有哪些?

部署方式有哪些?对比了不同部署方式的差异。

架构图中的核心组件有哪些?

本地实际安装,并跑了一个官方的例子。

一句话概括本篇内容: flink是一个分布式的数据流上进行状态计算的处理引擎和框架。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2025-06-09,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 李福春持续输出 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
Flink面试通关手册
2019 年是大数据实时计算领域最不平凡的一年,2019 年 1 月阿里巴巴 Blink (内部的 Flink 分支版本)开源,大数据领域一夜间从 Spark 独步天下走向了两强争霸的时代。Flink 因为其天然的流式计算特性以及强大的处理性能成为炙手可热的大数据处理框架。
大数据真好玩
2019/12/09
1.6K0
Flink面试通关手册
进击大数据系列(九)Hadoop 实时计算流计算引擎 Flink
Apache Flink 是一个框架和分布式处理引擎,用于对无边界和有边界的数据流进行有状态的计算。Flink被设计为可以在所有常见集群环境中运行,并能以内存速度和任意规模执行计算。目前市场上主流的流式计算框架有Apache Storm、Spark Streaming、Apache Flink等,但能够同时支持低延迟、高吞吐、Exactly-Once(收到的消息仅处理一次)的框架只有Apache Flink。
民工哥
2023/08/22
2.4K0
进击大数据系列(九)Hadoop 实时计算流计算引擎 Flink
Flink面试通关手册「160题升级版」
主要是当Flink开启Checkpoint的时候,会往Source端插入一条barrir,然后这个barrir随着数据流向一直流动,当流入到一个算子的时候,这个算子就开始制作checkpoint,制作的是从barrir来到之前的时候当前算子的状态,将状态写入状态后端当中。然后将barrir往下流动,当流动到keyby 或者shuffle算子的时候,例如当一个算子的数据,依赖于多个流的时候,这个时候会有barrir对齐,也就是当所有的barrir都来到这个算子的时候进行制作checkpoint,依次进行流动,当流动到sink算子的时候,并且sink算子也制作完成checkpoint会向jobmanager 报告 checkpoint n 制作完成。
大数据真好玩
2021/07/07
3.1K0
Flink 面试题
Flink 是一个框架和分布式处理引擎,用于对无界和有界数据流进行有状态计算。并且 Flink 提供了数据分布、容错机制以及资源管理等核心功能。
Tim在路上
2020/08/05
1.6K0
Flink1.13架构全集| 一文带你由浅入深精通Flink方方面面
导读:Flink是由德国几所大学发起的的学术项目,后来不断发展壮大,并于2014年末成为Apache顶级项目。Flink如何在流处理中多得王者地位?带着问题在文章寻找答案吧。
857技术社区
2022/12/18
2.5K0
Flink1.13架构全集| 一文带你由浅入深精通Flink方方面面
Flink 介绍
Apache Flink是一个分布式处理引擎,用于在无界和有界数据流上进行有状态的计算。它在所有的通用集群环境中都可以运行,在任意规模下都可以达到内存级的计算速度。
程序员白总
2024/02/18
7170
Flink 介绍
EMR(弹性MapReduce)入门之流计算引擎Flink、Storm(九)
Flink通过实现Google Dataflow流式计算模型实现了高吞吐、低延迟、高性能兼具实时流式计算框架。同时Flink支持高度容错的状态管理,防止状态在计算过程中因为系统异常而出现丢失,Flink周期性地通过分布式快照技术Checkpoints实现状态的持久化维护,使得即使在系统停机或者异常的情况下都能计算出正确的结果。
小司机带你入门EMR
2020/02/12
2K0
EMR(弹性MapReduce)入门之流计算引擎Flink、Storm(九)
Flink入门(二)——Flink架构介绍
了解Spark的朋友会发现Flink的架构和Spark是非常类似的,在整个软件架构体系中,同样遵循着分层的架构设计理念,在降低系统耦合度的同时,也为上层用户构建Flink应用提供了丰富且友好的接口。
大数据流动
2019/12/12
2.1K0
Flink架构、原理与部署测试
Apache Flink是一个面向分布式数据流处理和批量数据处理的开源计算平台,它能够基于同一个Flink运行时,提供支持流处理和批处理两种类型应用的功能。
Florian
2018/08/21
3.3K0
2021年大数据Flink(九):Flink原理初探
它扮演的是集群管理者的角色,负责调度任务、协调 checkpoints、协调故障恢复、收集 Job 的状态信息,并管理 Flink 集群中的从节点 TaskManager。
Lansonli
2021/10/11
1.3K0
Flink
  1)Flink 是标准的实时处理引擎,基于事件驱动。而 Spark Streaming 是微批(Micro-Batch)的模型;
挽风
2023/10/17
8780
Flink
Flink 极简教程: 架构及原理 Apache Flink® — Stateful Computations over Data Streams
Apache Flink 是一个分布式流计算引擎,用于在无边界和有边界数据流上进行有状态的计算。
一个会写诗的程序员
2022/01/04
3.7K0
Flink 极简教程: 架构及原理 Apache Flink® — Stateful Computations over Data Streams
Flink 原理详解
Flink 是一个流处理框架,支持流处理和批处理,特点是流处理有限,可容错,可扩展,高吞吐,低延迟。
Tim在路上
2020/08/04
4.2K0
Flink 入门教程
大数据是近些年才出现的吗,人们是近些年才发现大数据的利用价值的吗?其实不然,早在几十年前,数学分析就已经涉猎金融行业了,人们依托于金融和数学知识来建立数学模型,利用金融市场所产的数据来预测金融市场产品收益同风险波动的关系。 到如今,互联网也发展了好些年了,越来越多的数据产生(用户浏览数据、搜索记录、出行记录、消费记录;农作物的成长观察记录;病人的医疗记录等),各行业也开始慢慢的重视起这些数据记录,希望通过对这些数据的分析处理从而得到相应的利益和研究价值。
全栈程序员站长
2022/07/21
1.1K0
Flink 入门教程
零距离接触Flink:全面解读流计算框架入门与实操指南
Apache Flink作为开源的分布式流处理框架,受到了广泛的关注和应用。本文将分享如何从零开始搭建一个Flink运行环境,并在其上运行一个“WordCount”的例子程序。
司夜
2023/09/14
9230
零距离接触Flink:全面解读流计算框架入门与实操指南
全网最详细4W字Flink全面解析与实践(上)
在大数据技术栈的探索中,我们曾讨论了离线计算的Spark,而当谈到实时计算,就不得不提Flink。本文将集中讨论Flink,旨在详尽展示其核心概念,从而助力你在大数据旅程中向前迈进。
BookSea
2023/10/28
1.5K2
全网最详细4W字Flink全面解析与实践(上)
实时计算框架:Flink集群搭建与运行机制
Flink是一个框架和分布式处理引擎,用于对无界和有界数据流进行有状态计算。Flink被设计在所有常见的集群环境中运行,以内存执行速度和任意规模来执行计算。主要特性包括:批流一体化、精密的状态管理、事件时间支持以及精确一次的状态一致性保障等。Flink不仅可以运行在包括YARN、Mesos、Kubernetes在内的多种资源管理框架上,还支持在裸机集群上独立部署。在启用高可用选项的情况下,它不存在单点失效问题。
知了一笑
2021/05/27
6140
Flink(一)
Apache Flink(德语:快速灵巧,原德国柏林大学基金会项目)是一个框架和分布式处理引擎,用于对无界和有界数据流进行状态计算。ms级别水平。data flow+event sequence。
matt
2022/10/25
7200
Flink(一)
2021年大数据Flink(三):​​​​​​​Flink安装部署 Local本地模式
2.上传flink-1.12.0-bin-scala_2.12.tgz到node1的指定目录
Lansonli
2021/10/11
9880
2024年最新Flink教程,从基础到就业,大家一起学习--flink部署和集群部署(从本地测试到公司生产环境如何部署项目源码)
这些内容都是自己一边学习一边总结的,其中每一个知识点都是经过翻阅大量资料整理,包含一些常见的报错和报警都会详细的举例和说明,大家一起学习。
小白的大数据之旅
2024/11/20
1K0
2024年最新Flink教程,从基础到就业,大家一起学习--flink部署和集群部署(从本地测试到公司生产环境如何部署项目源码)
相关推荐
Flink面试通关手册
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档