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的核心特性可归纳为以下八点,结合其技术架构与实际应用场景进行说明:
最新版本的flink2.0.0特性。
Flink的部署方式?
步骤:
tar -zxvf flink-xxx-bin-scala_2.12.tgz -C ./local./bin/start-cluster.sh http://localhost:8081。核心配置:
步骤:
conf/masters文件指定JobManager节点,conf/workers文件添加TaskManager节点./bin/start-cluster.sh ,通过jps检查进程(JobManager、TaskManager)high-availability.storageDir核心配置:
taskmanager.numberOfTaskSlots定义并行度。taskmanager.heap.size 分配TaskManager内存。步骤:
HADOOP_HOME或YARN_CONF_DIR环境变量分配2个TaskManager,每个2GB内存
./bin/yarn-session.sh -n 2 -tm 2048m
./bin/flink run -m yarn-cluster -yid <yarn-session-id> Job.jar 子模式:
Application模式
独立JobManager,资源隔离性强
步骤:
推送至私有仓库 docker push flink-k8s:xxx 2.部署集群
./bin/kubernetes-session.sh
\ --detached
\ --image flink-k8s:xxx
\ --containerized
\ --slot-type default
3. 弹性扩缩容
kubectl scale动态调整TaskManager数量步骤:
docker pull flink:xxx-scala_2.12 二、优缺点对比
模式 | 优点 | 缺点 |
|---|---|---|
本地模式 | 简单快速,无需集群环境 | 仅适合测试,无法处理大规模数据。 |
Standalone | 资源独占,配置灵活,适合中小规模生产 | 手动管理节点,扩展性差,依赖SSH免密。 |
YARN模式 | 与Hadoop生态无缝集成,资源动态调度 | 依赖Hadoop环境,配置复杂,延迟较高。 |
Kubernetes | 弹性扩缩容,支持容器化部署,适合云原生环境 | 需要K8s运维能力,资源隔离需额外配置。 |
Docker模式 | 容器化部署便于移植,环境一致性高 | 资源隔离不足,需自行管理网络和存储。 |
Flink的架构图和组件?
官方架构图如下:
组件说明:
1.JobManager(作业管理器)
职责:高可用
2.TaskManager(任务管理器)
3.客户端(Client)
Flink的本地物理部署和例子?
java环境必须java11以上。
下载最新版本的flink2.0.0 解压好
启动集群:
bin/start-cluster.shjps查看进程:
webUI访问测试: http://localhost:8081
测试官方例子。
先准备好测试数据:
我找了一下 吻别的英语版本歌词,放到里面。
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 .
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页面看看执行的过程。
执行细节。
程序代码解读:
里面语法细节这里先不展开。
小结
初步认识了Flink,是什么?记住了它。
哪些场景可以使用它?数据分析,实时事件,数据管道。
核心特性有哪些?
部署方式有哪些?对比了不同部署方式的差异。
架构图中的核心组件有哪些?
本地实际安装,并跑了一个官方的例子。
一句话概括本篇内容: flink是一个分布式的数据流上进行状态计算的处理引擎和框架。
