| 主要特点
处理无界和有界数据:Flink擅长处理无边界和有边界的数据集。无界流有一个起点,但没有定义的终点;而有界流具有定义的开始和结束。
分布式:Flink程序可以运行在分布式环境下,具有高性能架构。
高可用:在分布式系统中,为了保证服务能够7×24小时稳定运行,Flink不仅提供故障处理,还能持久化服务内部各个组件的当前状态。
准确性:Flink可以保证数据处理的准确性。
批流一体化:Flink提供了批处理和流处理的统一模型,使得开发者可以在同一个系统中以一致的方式处理这两种类型的数据。
精密的状态管理:Flink支持有状态计算,并提供精确一次的状态一致性保障。
事件时间支持:Flink能够支持基于事件时间语义进行窗口计算,保证了事件原本的时序性。
高性能:Flink是目前开源社区中唯一一套集高吞吐、低延迟、高性能三者于一身的分布式流式处理框架。
| 应用场景
在线系统:实时计算各类数据指标,并利用实时结果及时调整在线系统的相关策略,应用于内容投放、智能推送等领域。例如,淘宝的双十一实时战报大屏就是利用流式计算得出实时结果,直接被推送到前端应用。
监控预警:对系统和用户行为进行实时监测和分析,以便及时发现危险行为,如基于规则的报警。
数据分析:从原始数据中提取有价值的信息和指标,实时输出。例如,电信网络质量监控。
实时报表:实时化采集、加工流式数据存储,实时监控和展现业务、客户各类指标,让数据化运营实时化。
数据管道应用:数据管道可以用来监控文件系统目录中的新文件,并将其数据写入事件日志。另一个应用可能会将事件流物化到数据库或增量构建和优化查询索引,如电子商务中的持续ETL。
| 技术架构
应用层:是使用Flink的最上层,负责定义Flink作业,包括数据源、转换操作和输出操作等。Flink支持各种类型的数据源,包括本地文件、Kafka、Hadoop HDFS等,同时提供了许多内置的数据转换操作和输出操作。
API层:提供了Flink的核心功能,定义了数据流的基本概念和操作,包括数据流、状态和窗口等。Flink提供了两种API:DataStream API和DataSet API。DataStream API用于处理流数据;DataSet API用于处理有限数据集。
运行时层:是Flink的核心组件,负责执行应用程序。Flink将应用程序转换为数据流图,并将其分发到集群中的任务管理器(Task Manager)上执行。任务管理器负责将任务划分为子任务,并将其分配给具体的Task Slot执行。
分布式存储层:是Flink的数据存储组件,支持在内存和磁盘上存储数据,并提供了一些高级的数据管理功能,如状态后端、保存点和检查点等。Flink支持多种存储后端,包括RocksDB、Hadoop HDFS等。
如需了解更多信息,可以访问其官方网站或查阅相关的技术文档。
官方文档
https://nightlies.apache.org/flink/flink-docs-master/
Docker镜像 https://hub.docker.com/r/apache/flink
GitHub地址 https://github.com/apache/flink
安装&使用
Docker部署操作步骤:安装Docker、编写配置文件、启动容器。操作系统为腾讯云服务器Ubuntu。
| 安装docker
sudo apt update
sudo apt install -y docker.io docker-compose
| 编写配置文件docker-compose.yml
在home文件夹编写docker-compose.yml
version: "3"
services:
jobmanager:
image: apache/flink:latest
ports:
- "8081:8081"
command: jobmanager
taskmanager:
image: apache/flink:latest
depends_on:
- jobmanager
command: taskmanager
| 启动容器
sudo docker-compose up -d
更多内容也可看笔者出版图书!