Flink介绍与安装

Apache Flink是一个在有界 数据流和无界 数据流上进行有状态计算分布式处理引擎和框架。Flink 设计旨在所有常见的集群环境 中运行,以任意规模内存级速度执行计算。

一、主要特点和功能

1. 实时流处理:

  • 低延迟: Flink 能够以亚秒级的延迟处理数据流,非常适合对时间敏感的应用,如实时分析、监控和告警系统。
  • 状态管理: Flink 提供了对状态的内置支持,使得开发有状态的流式处理应用变得容易,如窗口操作、复杂事件处理等。

2. 批处理和流处理的统一:

  • Flink 既可以用于流处理,也可以用于批处理,允许用户在一个框架中编写应用程序,而不必在批处理和流处理之间切换。

  • 事件时间处理: Flink 支持事件时间语义,可以基于数据本身的时间戳进行处理,而不是数据到达的时间,这对于处理无序数据流非常重要。

    scala 复制代码
    // scala table api
    // 引入 Flink 的批处理环境
    val env = ExecutionEnvironment.getExecutionEnvironment
    
    //批处理: 读取文本文件
    env.readTextFile("data/words.txt")
        // 处理数据: 切换、转换、分组、聚合
        .flatMap(_.replaceAll("[^a-zA-Z ]", "").split("\\s+"))
        .map((_, 1))
        .groupBy(0)
        .sum(1)
    	// 输出
        .print()
    scala 复制代码
    // 引入 Flink 的流处理环境
    val env = StreamExecutionEnvironment.getExecutionEnvironment
    // 有界流处理: 文件数据
    env.readTextFile("data/words.txt")
        .flatMap(_.replaceAll("[^a-zA-Z ]", "").split("\\s+"))
        .map((_, 1))
        .keyBy(_._1)
        .sum(1)
        .print()
    
    // 无界流处理: Socket 
    env.socketTextStream("nodeIp", 9999)
        .flatMap(_.replaceAll("[^a-zA-Z ]", "").split("\\s+"))
        .map((_, 1))
        .keyBy(_._1)
        .sum(1)
        .print()
    
    // 执行 Flink 作业,并给它命名
    env.execute("Word Count Example")

3. 高度可扩展性:

  • Flink 能够在大规模分布式集群上运行,处理从几千到上百万个事件每秒的数据流。
  • 弹性和容错: Flink 使用检查点和保存点机制来提供容错能力,确保在发生故障时可以从之前的状态恢复,减少数据丢失。

4. 支持多种数据源和接收器:

  • Flink 能够与多种数据源和接收器集成,如 Kafka、HDFS、Cassandra、Elasticsearch 等,使其可以轻松地处理和存储来自不同系统的数据。

5. 丰富的 API 和库:

  • DataStream API: 用于流处理,允许开发者定义复杂的数据流处理逻辑。
  • DataSet API : 用于批处理,提供了丰富的操作符来处理静态数据集(将在 Flink 2.0 版本被删除如何迁移 DataSet 到 DataStream | Apache Flink)
  • Table API 和 SQL: 提供了一个更高级别的 API,允许开发者使用 SQL 查询来处理数据流和数据集。
  • 机器学习和图处理库: Flink 提供了机器学习库(FlinkML)和图处理库(Gelly),适用于高级分析任务。

6. 部署灵活性:

  • Flink 可以部署在多种环境中,如独立集群、YARN、Kubernetes、Mesos 以及本地环境中。
  • 流批一体: Flink 支持将批处理和流处理集成到同一个应用程序中,简化了部署和管理。

7. 社区与生态系统:

  • Flink 由一个活跃的开源社区维护和发展,生态系统日益壮大,支持越来越多的第三方工具和集成。

典型应用场景

  • 实时数据分析: Flink 可用于处理实时事件流,提供实时分析、告警和监控。
  • 复杂事件处理: Flink 能够处理和识别复杂事件模式,用于金融监控、欺诈检测等。
  • 日志处理: 可以实时处理和分析来自各种系统的日志数据,提取有价值的信息。
  • 机器学习: Flink 的流处理能力可以用于实时更新机器学习模型,或在流数据上直接进行预测。

Apache Flink 适用于各种需要实时和批处理的应用程序,尤其是在处理大规模数据流时表现出色。·

二、Flink下载,集群安装配置

官方下载地址:Downloads | Apache Flink

1. 下载、解压、配置环境变量

sh 复制代码
wget https://dlcdn.apache.org/flink/flink-1.20.0/flink-1.20.0-bin-scala_2.12.tgz

tar -zxvf flink-1.20.0 -C /opt/software

vim /etc/profile.d/myenv.sh
# FLINK_HOME=...
# PAHT=$PATH:$FLINK_HOME/bin
sh 复制代码
cd $FLINK_HOME/conf

3. 编辑 masters 文件:

在文件中指定 JobManager 的主机名或 IP 地址。如果有多个 JobManager(用于高可用性),每个 JobManager 使用一行。

sh 复制代码
vim masters
sh 复制代码
# 格式如下
<JobManager1>:<port>
<JobManager2>:<port>  # 如果有高可用性设置

# 示例
master01:8081
master02:8081

4. 编辑 workers 文件:

在文件中列出所有 TaskManager 的主机名或 IP 地址,每个 TaskManager 使用一行

sh 复制代码
vim workers
sh 复制代码
# 格式如下
<TaskManager1>
<TaskManager2>

# 示例
worker01
worker02

flink-conf.yaml 是 Flink 的主要配置文件,用于配置各种集群参数。

sh 复制代码
vim flink-conf.yaml
sh 复制代码
# 指定 JobManager 的 RPC 服务监听的地址
jobmanager.rpc.address: 
# 指定 JobManager 在所有网络接口上进行绑定
jobmanager.bind-host: 0.0.0.0

# 指定 TaskManager 进程的外部地址
taskmanager.host: master01				# 每台机器这里不同,其他相同
# 指定 TaskManager 绑定的网络接口
taskmanager.bind-host: 0.0.0.0

# 指定 Flink 集群中 REST API 服务的外部地址
rest.address: master01
# 指定 REST API 服务在所有网络接口上进行绑定。
rest.bind-address: 0.0.0.0

以下看需配置

sh 复制代码
# TaskManager 内存:
taskmanager.memory.process.size: 1024m

# TaskManager 的槽位数:
taskmanager.numberOfTaskSlots: 4

# 高可用性配置(如果需要高可用性):
high-availability.type: zookeeper
high-availability.zookeeper.quorum: localhost:2181
high-availability.zookeeper.path.root: /flink
high-availability.cluster-id: /cluster_one
high-availability.storageDir: hdfs:///flink/recovery
state.checkpoints.dir:  hdfs:///flink/checkpoints
state.savepoints.dir: hdfs:///flink/savepoints


# 并行度:
parallelism.default: 4

# 日志配置:
taskmanager.log.dir: /var/log/flink

# HDFS 配置:
fs.default-scheme: hdfs://namenode:9000
sh 复制代码
$FLINK_HOME/bin/stop-cluster.sh
$FLINK_HOME/bin/start-cluster.sh

7. 提交Flink任务

相关推荐
陕西企来客35 分钟前
2026年7月AI搜索引擎优化案例深度解析
大数据·人工智能
LitchiCheng1 小时前
DGX Spark部署ComfyUI(一键安装脚本)
大数据·分布式·spark
枕星而眠1 小时前
Git仓库基础用法
大数据·git·后端·elasticsearch·全文检索
智圣新创012 小时前
从10大数据集合规上报到数字驾驶舱落地 智圣新创职教中台对接解决方案的行业全域参考
大数据
数字新视界2 小时前
档案库房环境安全监控解决方案
大数据·运维·数据库·物联网·环境监控系统
thubier(段新建)10 小时前
owtb 3pl 面向城市配送物流企业需求V0.2
大数据·人工智能
jinggongszh12 小时前
智能硬件对接与系统落地:开发岗在制造现场的经验沉淀
大数据·人工智能
ZeekerLin12 小时前
AI 原生团队协作机制:角色、分工与工程文化变化
大数据·人工智能
ACP广源盛1392462567313 小时前
IX8024 PCIe4.0 交换芯片@ACP# RK3588:嵌入式 AI PC 标准化扩展方案
大数据·人工智能·分布式·单片机·嵌入式硬件