详细介绍:Flink 2.x 独立集群(Standalone) 的部署

news/2025/9/26 15:58:21/文章来源:https://www.cnblogs.com/ljbguanli/p/19110474

详细介绍:Flink 2.x 独立集群(Standalone) 的部署

Apache Flink 2.x 独立集群(Standalone Cluster) 的部署是一种不依赖外部资源管理器(如 YARN 或 Kubernetes)的经典部署模式,非常适合中小规模生产环境、测试和概念验证。


一、 Standalone 集群架构剖析

1. 核心组件

一个 Flink Standalone 集群由两种进程组成,形成一种主从(Master-Worker)架构:

  • JobManager (主节点/Master):

    • 职责: 集群的"大脑"。负责接收提交的作业(Job),调度任务(Task),协调检查点(Checkpoint),故障恢复等。

    • 高可用(HA)模式: 通常需要部署多个 JobManager,其中一个为 Leader(活跃状态),其他为 Standby(备用状态)。通过 ZooKeeper 进行领导者选举和元数据存储,实现故障自动切换。

    • 关键进程: StandaloneSessionClusterEntrypoint

  • TaskManager (工作节点/Worker):

    • 职责: 集群的"肌肉"。负责执行 JobManager 分配的具体数据任务(Task)。每个 TaskManager 是一个独立的 JVM 进程,提供一定数量的任务槽(Task Slot)

    • 任务槽: 是 Flink 资源调度的基本单位。一个 Slot 可以执行一个任务子任务(Subtask)。一个 TaskManager 的多个 Slot 共享该节点的网络和内存资源,但彼此隔离。

    • 关键进程: TaskManagerRunner

2. 高可用实现原理

Standalone 模式的高可用性严重依赖外部系统:

  • ZooKeeper: 用于在所有 JobManager 实例之间进行分布式协调领导者选举。当活跃的 JobManager 宕机时,ZooKeeper 会通知备用的 JobManager,使其迅速接管领导权。

  • 分布式文件系统(HDFS/S3/OSS等): 用于持久化存储元数据检查点(Checkpoint)/保存点(Savepoint) 数据。新的 JobManager 在接管后,可以从这里恢复作业状态。

3. 架构拓扑图

图表

代码

渲染失败

如图所示,客户端向主 JobManager 提交作业,JobManager 将任务分配给各个 TaskManager 执行。同时,主 JobManager 通过 ZooKeeper 与其他备用 JobManager 保持协调,并将关键的元数据和状态快照持久化到共享存储中。


二、 独立集群部署与配置详解

1. 前置准备
  • 机器规划

    • 1台 Master 主机: 运行 JobManager(生产环境建议至少2台,一主一备)。

    • N台 Worker 主机: 运行 TaskManager。

    • (可选)3台主机: 用于 ZooKeeper 集群(也可部署在 Master/Worker 机器上,测试环境可用1台)。

  • 软件依赖

    • Java: 在所有节点安装 JDK 8 或 JDK 11,并配置 JAVA_HOME

    • SSH 免密登录: 从 Master 节点到所有 Worker 节点需配置 SSH 免密登录,以便通过脚本启动服务。

    • Flink 安装包: 在所有节点相同路径下解压 Flink 2.x 发行版(如 flink-2.1.0-bin-scala_2.12.tgz)。

2. 关键配置文件

conf/flink-conf.yaml (主配置文件的详细剖析)

yaml

# ========== 基础配置 ==========
# JobManager 的 RPC 地址,使用主机名或IP(重要!)
jobmanager.rpc.address: flink-master
# JobManager 堆内存大小 (生产环境建议 1G-4G)
jobmanager.memory.heap.size: 1024m
# TaskManager 堆内存大小 (生产环境根据任务需求调整,建议至少 2G)
taskmanager.memory.heap.size: 2048m
# 每个 TaskManager 提供的任务槽数 (建议设置为机器的 CPU 核心数)
taskmanager.numberOfTaskSlots: 4
# 作业的默认并行度
parallelism.default: 4
# ========== 高可用配置 (核心!) ==========
# 启用高可用模式
high-availability: zookeeper
# ZooKeeper 集群地址
high-availability.zookeeper.quorum: zk-node1:2181,zk-node2:2181,zk-node3:2181
# Flink 在 ZooKeeper 中的根路径,用于隔离不同集群
high-availability.zookeeper.path.root: /flink
# 集群ID,用于区分不同Flink集群。Standalone模式通常设为固定值。
high-availability.cluster-id: /my-standalone-cluster
# JobManager 元数据和检查点数据在分布式存储上的持久化路径
high-availability.storageDir: hdfs:///flink/recovery/
# ========== 状态后端与检查点配置 ==========
# 状态后端类型 (RocksDB 适用于大状态场景)
state.backend: rocksdb
# 检查点存储位置(与HA存储路径可相同也可不同)
state.checkpoints.dir: hdfs:///flink/checkpoints/
# 每 60秒 触发一次检查点
execution.checkpointing.interval: 60s
# 检查点超时时间
execution.checkpointing.timeout: 5min
# 启用增量检查点 (RocksDB专用,大幅减少CK耗时和大小)
state.backend.incremental: true
# ========== Web UI 配置 ==========
# REST API 端口,用于提交作业和监控
rest.port: 8081
# (可选)绑定地址,如果需要外部访问可设为 0.0.0.0
rest.bind-address: 0.0.0.0

conf/masters (指定所有 JobManager 主机和 Web UI 端口)

text

flink-master:8081
flink-master-backup:8081

conf/workers (指定所有 TaskManager 主机)

text

flink-worker-01
flink-worker-02
flink-worker-03

conf/zoo.cfg (如果自建 ZK 集群,需配置)

text

server.1=zk-node1:2888:3888
server.2=zk-node2:2888:3888
server.3=zk-node3:2888:3888
3. 部署与启动步骤
  1. 分发配置: 将配置好的 flink-conf.yamlmastersworkers 文件分发到所有节点的 Flink 目录下的 conf/ 中。

  2. 启动 ZooKeeper 集群(如果尚未启动)。

  3. 启动 HDFS 集群(如果尚未启动)。

  4. 启动 Flink 集群: 在 Master 节点上执行:

    bash

    # 进入到 Flink 安装目录
    cd /opt/flink-2.1.0
    # 使用内置脚本启动整个集群(会自动通过SSH启动workers文件中的TaskManager)
    bin/start-cluster.sh
  5. 验证

    • 执行 jps 命令,在 Master 节点应看到 StandaloneSessionClusterEntrypoint,在 Worker 节点应看到 TaskManagerRunner

    • 访问 http://<flink-master>:8081,打开 Flink Web UI,查看集群和 TaskManager 是否正常注册。


三、 生产环境考量与最佳实践

  1. 资源隔离: 避免将 ZooKeeper、HDFS DataNode 等关键服务与 TaskManager 部署在同一台机器,防止资源竞争。

  2. 监控与告警: 集成 Prometheus 和 Grafana,对 CPU、内存、背压(Backpressure)、检查点时长等关键指标进行监控和告警。

  3. 日志管理: 将 Flink 的日志(log/ 目录)收集到 ELK 或 Splunk 等集中式日志系统中,方便排查问题。

  4. 客户端分离: 建议在专门的客户端机器上提交作业 (flink run),而非在 JobManager 节点上,以降低对主节点的干扰。

  5. 网络与安全: 确保集群节点间网络通畅,防火墙开放所需端口(如 6123 for RPC, 8081 for REST, 以及 TaskManager 的数据传输端口)。考虑使用 SSL/TLS 加密网络通信。

总结

Flink Standalone 集群部署模式提供了简单、稳定且功能完备的独立运行时环境。其核心优势在于部署简单、易于管理。但要使其达到生产级别的高可用,必须依赖 ZooKeeper 和分布式文件系统

对于资源管理需求不复杂、团队技术栈偏向传统的中小型公司,Standalone 模式是一个非常好的起点。当需要更精细化的资源管理和多租户隔离时,再考虑迁移到 YARN 或 Kubernetes 模式。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/916726.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

网站文章更新要求中介订制网站开发

2019独角兽企业重金招聘Python工程师标准>>> 准备磁盘分区 fdisk /dev/sdb n 创建三个新分区&#xff0c;分别1G t 改变分区类型为8e 准备物理卷 pvcreate /dev/sdb1 pvcreate /dev/sdb2 pvcreate /dev/sdb3 pvdisplay/pvs 列出当前的物理卷 pvremove /dev/sdb3 删除…

有那个网站可以做报名链接的个人网站主机选择

待解决的问题最近在做一个服务器集群管理的web项目&#xff0c;需要处理一些极其耗时的操作&#xff0c;比如磁盘格式化分区。对于这个需求&#xff0c;最开始的想法是&#xff0c;为了让节点上的rpc(远程过程调用) service端尽可能简单(简单到只需要popen执行一条指令即可&…

成都seo公司googleseo專業

加载符号 解决方法&#xff1a; 进入VS—工具—选项----调试----符号&#xff0c;看右边有个“Microsoft符号服务器”&#xff0c;将前面的勾去掉&#xff0c;&#xff08;可能还有删除下面的那个缓存&#xff09;。 参考 C# 中捕获C/C抛出的异常 在需要捕捉破坏性异常的函数…

天宁常州做网站上海平台网站建设价格

文章目录 1.概述2.Visual Studio 2022简介3.安装Visual Studio 20224.安装CMake5.创建CMake项目6. 构建项目 1.概述 CMake和Visual Studio 2022结合 在现代软件开发中&#xff0c;CMake和Visual Studio 2022的结合提供了一个强大的环境&#xff0c;用于构建和管理各种规模的C项…

为什么做网站要有自己的服务器wordpress菜单外观样式

JS函数实现数字转中文大写 1. 数字转字符,分割,去除空字符2. 遍历分割字符,替换为中文3. 增加四位数单位4. 处理零5. 拼接四位数据和单位 项目中,JS将万亿以下正整数转为中文大写 1. 数字转字符,分割,去除空字符 function toChineseNumber(num){const strs num.toString().re…

网站开发外包计入什么科目制作网页是什么专业

前言 Android的数据存储机制中还提供了SharedPreferences&#xff0c;SharedPreferences是这其中最容易理解的数据存储技术&#xff0c;采用键值对的方式进行存储&#xff0c;而且支持存储多中数据类型。 获取SharedPreferences对象 SharedPreferences文件存放在/data/data/&…

瑞芯微RK3506核心板/开发板DSM音频开发实战,关键知识点与实操案例必看攻略! - 教程

瑞芯微RK3506核心板/开发板DSM音频开发实战,关键知识点与实操案例必看攻略! - 教程pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; f…

不只是一台玩具车:开源燃料电池机器人HydroBot全揭秘 - 实践

不只是一台玩具车:开源燃料电池机器人HydroBot全揭秘 - 实践pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Cons…

在AI技术唾手可得的时代,挖掘新需求成为核心竞争力——某知名窗口管理工具需求洞察

该篇文章无摘要a.内容描述核心功能定位:该项目是一个为某知名操作系统设计的窗口管理增强工具,主要功能是通过特定的键盘修饰键配合鼠标拖拽操作,实现窗口的便捷移动和大小调整。其设计理念借鉴了多个X11/Linux窗口…

嘉定企业网站制作做的网站需要买什么服务器

在windos10系统电脑中使用SolidWorks时&#xff0c;发现软件运行速度很慢&#xff0c;感觉非常烦恼。这是怎么回事呢&#xff1f;SolidWorks是基于Windows平台来开发的&#xff0c;所以Windows的一些设置也会影响SW的运行速度&#xff01;下面&#xff0c;就随小编一起看看让So…

OS-KylinV10-加载动态库运行异常-全局函数重名或未使用命名空间

OS-KylinV10-加载动态库运行异常-全局函数重名或未使用命名空间 Record: 在KylinV10上调用编译完成的C++的一组计算动态库,出现崩溃问题。(Windows上运行正常) 调用方式:Java通过JNA单线程循环调用该组动态库内不同…

详细介绍:【代码】关于C#支持文件和文本框的简单日志实现

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

前端笔记:vue中 Map、Set之间的采用和区别

前端笔记:vue中 Map、Set之间的采用和区别2025-09-25 08:01 tlnshuju 阅读(0) 评论(0) 收藏 举报pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: blo…

性能暴涨50%:PD分离KV cache传输的实战干货

微信视频号:sph0RgSyDYV47z6快手号:4874645212抖音号:dy0so323fq2w小红书号:95619019828B站1:UID:3546863642871878B站2:UID: 3546955410049087 最近我们团队[1]在vLLM上开发了一种KV cache传输的connector,实现…

加强对网站建设php做的网站如何运行

在C语言编程中&#xff0c;使用scanf函数输入字符串是一项基本操作。然而&#xff0c;当我们尝试在for循环中使用scanf输入字符串时&#xff0c;可能会遇到意外的问题&#xff0c;导致循环无法正常执行。本文将深入探讨这个问题&#xff0c;并提供解决方案&#xff0c;让你能够…

做网站店铺图片用什么软件株洲网站建设的企业

目录 1.什么是链表&#xff1f; 2.链表的分类 &#xff08;1&#xff09;无头单向非循环链表&#xff1a; &#xff08;2&#xff09;带头双向循环链表&#xff1a; 3.单链表的实现 &#xff08;1&#xff09;单链表的定义 &#xff08;2&#xff09;动态创建节点 &#…

【GitHub每日速递 250925】 一套代码跑遍全平台!Flutter 让你的应用开发提速 10 倍

原文:https://mp.weixin.qq.com/s/diCHi4TGuroj4IuJL1j2zA Mac用户福音!Ice菜单管理神器,功能超多超强大! Ice 是一个功能强大的菜单栏管理工具的 macOS 应用。简单讲,它能帮你自动整理和隐藏菜单栏图标,让顶部状…

网站建设报价模板四川住房和建设厅网站

技术背景 我们在做执法记录仪或指挥系统的时候&#xff0c;会遇到这样的情况&#xff0c;大多场景下&#xff0c;我们是不需要把设备端的数据&#xff0c;实时传给国标平台端的&#xff0c;默认只需要本地录像留底&#xff0c;如果指挥中心需要查看前端设备实时数据的时候&…

会展免费网站模板公司域名不变网站做变动

本文收录于《AI绘画从入门到精通》专栏,订阅后可阅读专栏内所有文章,专栏总目录:点这里。 大家好,我是水滴~~ 本文主要介绍在 Stable Diffusion WebUI 中使用 ControlNet 的 depth_zoe 预处理器时,出现的 RuntimeError: Error(s) in loading state_dict for ZoeDepth 异常…

未来做啥网站能致富推广计划ppt

Re介绍一下CentOS下MySQL数据库的安装与配置方法MySQL数据库配置的具体步骤&#xff1a;1、编辑MySQL的配置文件&#xff0c;使用vi /etc/my.cnf[rootsample ~]# vi /etc/my.cnf  ← 编辑MySQL的配置文件[mysqld]datadir/var/lib/mysqlsocket/var/lib/mysql/mysql.sock# Defau…