Flink集群配置安装详解

一、Flink集群架构简介

Flink集群主要包括两类节点:

  • JobManager:负责协调、资源分配、任务调度等(可高可用部署多个)。
  • TaskManager:负责具体的数据处理任务(可横向扩展)。

二、环境准备

  1. 服务器准备:准备多台Linux服务器(如3台),网络可互通。
  2. JDK安装:所有节点需安装JDK 1.8或以上(建议用OpenJDK)。
  3. SSH免密登录:JobManager节点需能免密登录所有TaskManager节点(便于一键启动/停止集群)。

三、下载与解压Flink

以Flink 1.18.0为例:

wget https://dlcdn.apache.org/flink/flink-1.18.0/flink-1.18.0-bin-scala_2.12.tgz
tar -zxvf flink-1.18.0-bin-scala_2.12.tgz
mv flink-1.18.0 /opt/flink

建议所有节点用同样路径。


四、配置环境变量

在所有节点的~/.bashrc/etc/profile中添加:

export FLINK_HOME=/opt/flink
export PATH=$PATH:$FLINK_HOME/bin

执行 source ~/.bashrc 使配置生效。


五、配置Flink集群

进入$FLINK_HOME/conf目录,主要编辑以下文件:

1. flink-conf.yaml(核心配置)

jobmanager.rpc.address: master-node-hostname
jobmanager.rpc.port: 6123
taskmanager.numberOfTaskSlots: 4
parallelism.default: 2
  • jobmanager.rpc.address:指定JobManager主节点的主机名或IP。
  • taskmanager.numberOfTaskSlots:每个TaskManager的槽数(通常与CPU核数相同)。
  • parallelism.default:默认并行度。

2. masters(JobManager节点)

如高可用可写多个,一般写一个:

master-node-hostname:8081

8081为Web UI端口)

3. workers(TaskManager节点)

每行一个TaskManager节点主机名或IP:

worker1-hostname
worker2-hostname
worker3-hostname

六、分发Flink到所有节点

如果只在一台机器上解压,可用scp同步到其他节点:


          

bash复制

scp -r /opt/flink user@worker1:/opt/
scp -r /opt/flink user@worker2:/opt/

七、启动Flink集群

在JobManager节点执行:

cd /opt/flink
./bin/start-cluster.sh
  • 会自动在masters和workers文件所列节点启动相应服务。

八、验证集群

  1. Web UI
    浏览器访问 http://master-node-ip:8081 ,可查看集群状态。

  2. 进程检查
    在各节点用jps命令,JobManager节点应有StandaloneSessionClusterEntrypoint,TaskManager节点有TaskManagerRunner

  3. 运行示例任务
    可在JobManager节点执行

    ./bin/flink run examples/streaming/WordCount.jar --input README.txt --output /tmp/result
    

九、常见问题

  • 端口冲突:检查6123、8081端口是否被占用。
  • 节点无法启动:检查免密SSH、主机名是否可解析、网络是否互通。
  • 内存不足:可在flink-conf.yaml中调整taskmanager.memory.process.size等参数。

十、集群停止

在JobManager节点执行:

./bin/stop-cluster.sh

十一、Flink高可用(HA)集群配置

Flink Standalone 模式下,单个 JobManager 容易成为单点故障。高可用方案主要基于 ZooKeeper 协调多个 JobManager,保证服务不中断。

1. 环境准备

  • 多台服务器,建议3台以上
  • 安装 ZooKeeper 集群(至少3个节点)
  • 各节点已部署 Flink 和 JDK

2. ZooKeeper 安装与配置

假设你已安装好 ZooKeeper,并启动了集群,记录下 ZooKeeper 集群地址(如:zk1:2181,zk2:2181,zk3:2181)

3. 修改 Flink 配置(flink-conf.yaml

添加/修改如下内容:

# JobManager HA配置
high-availability: zookeeper
high-availability.storageDir: file:///opt/flink/ha/
high-availability.zookeeper.quorum: zk1:2181,zk2:2181,zk3:2181
high-availability.zookeeper.path.root: /flink

# JobManager集群节点
jobmanager.rpc.address: master1
jobmanager.rpc.port: 6123

# 其它常规配置
taskmanager.numberOfTaskSlots: 4

4. 配置 JobManager 列表(masters 文件)

如有两个 JobManager 节点:

master1:8081
master2:8081

5. 启动 HA 集群

在所有 JobManager 节点都执行:

./bin/start-cluster.sh

此时会自动选举一个 Active JobManager,其余为 Standby。
任意节点挂掉,Standby 会自动接管。

6. 验证

  • 查看 ZooKeeper /flink 路径有相关数据
  • 访问任一 JobManager 的 Web UI(如 master1:8081、master2:8081)
  • 杀死当前 Active JobManager,观察 Standby 是否自动切换

十二、Flink on YARN 部署

适用于 Hadoop 环境,资源由 YARN 管理。

1. 环境准备

  • 已部署 Hadoop/YARN 集群
  • Flink 安装在任一节点即可

2. 启动 Session 集群

./bin/yarn-session.sh -d

参数说明:

  • -d 后台启动
  • -n <numTaskManagers> 指定 TaskManager 数量
  • -s <slotsPerTaskManager> 指定每个 TaskManager 的槽数

3. 提交作业

./bin/flink run -m yarn-cluster -p 4 examples/streaming/WordCount.jar

4. 停止 Session 集群

./bin/yarn-session.sh -shutdown

5. 其他模式

  • Per-Job 模式:每个作业单独启动一个 Flink 集群,适合大作业隔离。
  • Session 模式:多个作业共享一个 Flink 集群,资源利用率高。

十三、Flink on Mesos 部署

Mesos 已逐渐被 K8S 取代,简单说明:

1. 环境准备

  • 已部署 Mesos 集群
  • Flink 安装在任一节点即可

2. 启动 Flink Mesos 集群

./bin/mesos-appmaster.sh \
  --master mesos-master:5050 \
  --zk mesos-zk:2181 \
  --taskManagerCount 4

3. 提交作业

./bin/flink run -m mesos-master:5050 examples/streaming/WordCount.jar

十四、Flink on Kubernetes(K8S)部署

K8S 是云原生的主流方案,支持高可用、弹性伸缩。

1. 环境准备

  • 已部署 K8S 集群
  • kubectl 命令可用
  • Flink Docker 镜像(如 flink:1.18.0

2. 下载官方 K8S 部署模板

官方文档

3. Standalone 模式部署

方式一:使用 YAML 文件

apiVersion: apps/v1
kind: Deployment
metadata:
  name: flink-jobmanager
spec:
  replicas: 1
  ...
---
apiVersion: apps/v1
kind: Deployment
metadata:
  name: flink-taskmanager
spec:
  replicas: 3
  ...
  • 部署:
kubectl apply -f flink-jobmanager.yaml
kubectl apply -f flink-taskmanager.yaml

方式二:使用 Flink Kubernetes Operator

4. Session/Per-Job 模式

  • Session:多个作业共享一个 Flink 集群
  • Per-Job:每个作业独立集群,推荐生产环境

5. 访问 Web UI

  • 通过端口转发:
kubectl port-forward deployment/flink-jobmanager 8081:8081
  • 浏览器访问 localhost:8081

6. 资源与参数配置

  • 通过 YAML 文件指定 CPU、内存等资源
  • 可挂载外部存储(如 S3、HDFS)
### Flink on Yarn 安装配置及部署教程 #### 1. 准备工作 在开始安装之前,需确保已准备好必要的软件包并放置到指定路径。例如,将 `flink-1.14.0-bin-scala_2.12.tgz` 放置于 `/opt/` 下[^2]。 #### 2. 解压与重命名 解压缩下载的 Flink 压缩包,并将其重命名为便于识别的名字,比如 `flink1.14`: ```bash tar -zxvf flink-1.14.0-bin-scala_2.12.tgz -C /opt/ mv /opt/flink-1.14.0 /opt/flink1.14 ``` #### 3. 配置环境变量 为了方便全局调用 Flink,需要修改系统的环境变量文件 `/etc/profile` 并添加如下内容[^3]: ```bash export FLINK_HOME=/opt/flink1.14 export PATH=$FLINK_HOME/bin:$PATH ``` 使更改立即生效: ```bash source /etc/profile ``` #### 4. 编辑基础配置文件 进入 Flink配置目录,编辑核心配置文件 `flink-conf.yaml` 和其他必要文件。以下是常见的配置项: - **JobManager 堆内存设置** 设置 JobManager 的堆内存大小以满足实际需求[^4]: ```yaml jobmanager.memory.process.size: 1024m ``` - **TaskManager 参数调整** 根据集群规模定义 TaskManager 的槽数量以及每槽位使用的内存: ```yaml taskmanager.numberOfTaskSlots: 4 taskmanager.memory.process.size: 4096m ``` - **YARN 特定参数** 添加支持 YARN 模式的特定选项: ```yaml yarn.application.name: my-flink-app parallelism.default: 8 ``` #### 5. 配置 Hadoop 环境 为了让 Flink 正确连接至 YARN 集群,必须指明 Hadoop 的配置目录位置。通过以下方式完成此操作: ```bash vim $FLINK_HOME/conf/flink-env.sh ``` 追加以下行来声明 Hadoop 配置路径: ```bash export HADOOP_CONF_DIR=/opt/cloudera/parcels/CDH/lib/hadoop/etc/hadoop ``` #### 6. 提交作业至 YARN 启动一个会话模式下的 Flink 应用程序实例: ```bash $FLINK_HOME/bin/yarn-session.sh -n 4 -jm 1024m -tm 4096m -s 2 ``` 上述命令含义分别为:创建具有 4 个 TaskManagers 的会话[-n];分配给 JobManager 和每个 TaskManager 各自的内存容量[jm/tm];同时设定 slot 数目[s]。 查询当前运行中的任务列表可使用以下指令[^1]: ```bash $FLINK_HOME/bin/flink list -t yarn-application -Dyarn.application.id=<your_application_id> ``` 取消某个正在执行的任务则可通过该方法实现: ```bash $FLINK_HOME/bin/flink cancel -m yarn-cluster <jobID> ``` #### 7. 测试验证 提交测试任务确认整个流程无误后即可正式投入使用。例如运行官方提供的 WordCount 示例程序: ```bash $FLINK_HOME/examples/batch/WordCount.jar --input hdfs:///path/to/input.txt --output hdfs:///path/to/output ``` --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

猩火燎猿

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值