Linux软件安装 —— Flink集群安装(集成Zookeeper、Hadoop高可用)

文章目录


一、节点说明

1、相关软件

IP 主机名 部署软件
192.168.10.102 node02 jdk,hadoop,zookeeper,flink
192.168.10.103 node03 jdk,hadoop,zookeeper,flink
192.168.10.104 node04 jdk,hadoop,zookeeper,flink

2、相关进程

node02 node03 node04
HDFS NameNode DFSZKFailoverController JournalNode DataNode NameNode DFSZKFailoverController JournalNode DataNode JournalNode DataNode
YARN ResourceManager NodeManager ResourceManager NodeManager NodeManager
zookeeper QuorumPeerMain QuorumPeerMain QuorumPeerMain
flink

二、配置节点间免密登录

参考本人此篇文章:Linux软件安装 ------ SSH免密登录


三、JDK安装

参考本人此篇文章:Linux软件安装 ------ JDK安装


四、Zookeeper安装

参考本人此篇文章:Linux软件安装 ------ zookeeper集群安装


五、Hadoop安装

参考本人此篇文章:Linux软件安装 ------ Hadoop高可用安装(集成Zookeeper)


六、Flink安装

1、基础环境准备

(1)下载安装包

官方文档:Downloads | Apache Flink 一直拉倒最后就会显示所有历史版本

本文使用版本为:flink-1.13.6-bin-scala_2.12.tgz

(2)上传并解压
shell 复制代码
# 加压到安装目录
tar -zxvf flink-1.13.6-bin-scala_2.12.tgz -C /opt/module/

# 修改名称
mv flink-1.13.6/ flink

2、修改配置

(1)配置zookeeper

使用flink内置zookeeper才配,自己搭的不用配此项

shell 复制代码
# 编辑flink中的zookeeper文件
vim /opt/module/flink/conf/zoo.cfg

# 添加data和log位置
dataDir=/opt/module/flink/flink-zookeeper/data
dataLogDir=/opt/module/flink/flink-zookeeper/logs

# 修改zookeeper集群信息
server.2=node02:2888:3888
server.3=node03:2888:3888
server.4=node04:2888:3888
yaml 复制代码
# 备份原始文件
cp flink-conf.yaml flink-conf.yaml.bak

# 编辑flink-conf.yaml文件
vim /opt/module/flink/conf/flink-conf.yaml

# ==================== 基础配置 ====================
# JobManager节点,指定node02为JobManager
jobmanager.rpc.address: node02
jobmanager.rpc.port: 6123
# JobManager堆内存(根据实际内存调整,建议4G以上)
jobmanager.memory.process.size: 1024m
# TaskManager堆内存(根据实际内存调整)
taskmanager.memory.process.size: 1024m
# 每个TaskManager的slot数量(根据CPU核心数调整)
taskmanager.numberOfTaskSlots: 1
# 并行度默认值
parallelism.default: 1
web.tmpdir: /opt/module/flink/flink-jar
blob.storage.directory: /opt/module/flink/flink-blob
yarn.maximum-failed-containers: 200
taskmanager.tmp.dirs: /opt/module/flink/flink-data
flink_log_bak_dir: /opt/module/flink/logs
flink_log_dir: /opt/module/flink/logs

# ==================== 高可用配置 ====================
high-availability: zookeeper
high-availability.zookeeper.quorum: node02:2181,node03:2181,node04:2181
# Zookeeper中Flink的根路径
high-availability.zookeeper.path.root: /flink
# JobManager元数据存储路径(使用HDFS)
high-availability.zookeeper.storageDir: hdfs:///flink/recovery
fs.hdfs.hadoopconf: /opt/module/hadoop/etc/hadoop
fs.hdfs.hdfssite: /opt/module/hadoop/etc/hadoop/hdfs-site.xml

# ==================== 故障恢复、checkpoint ====================
restart-strategy: fixed-delay
restart-strategy.fixed-delay.attempts: 3
restart-strategy.fixed-delay.delay: 5 s
state.backend: rocksdb
state.backend.incremental: true
state.checkpoint-storage: filesystem
state.checkpoints.dir: hdfs:///flink/flink-checkpoints
state.checkpoints.num-retained: 1
state.savepoints.dir: hdfs:///flink/flink-savepoints


# =============== 禁用flink类加载器,优先使用用户上传===============
classloader.check-leaked-classloader: false
classloader.resolve-order: child-first
(3)配置workers
shell 复制代码
vim workers

node02
node03
node04
(4)创建必要的目录
shell 复制代码
mkdir -p /opt/module/flink/flink-data
mkdir -p /opt/module/flink/flink-blob
mkdir -p /opt/module/flink/flink-jar
mkdir -p /opt/module/flink/flink-zookeeper/data
mkdir -p /opt/module/flink/flink-zookeeper/logs
(5)配置环境变量
shell 复制代码
# 编辑环境变量,创建单独文件方便管理
vim /etc/profile.d/my_env.sh

# JAVA_HOME,JDK文章中已配置,此处不配,仅做展示
export JAVA_HOME=/opt/module/jdk8
export PATH=$PATH:$JAVA_HOME/bin

# ZOOKEEPER_HOME,zookeeper文章中已配置,此处不配,仅做展示
export ZOOKEEPER_HOME=/opt/module/zookeeper
export PATH=$PATH:$ZOOKEEPER_HOME/bin

# HADOOP_HOME,hadoop文章中已配置,此处不配,仅做展示
export HADOOP_HOME=/opt/module/hadoop
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
export HADOOP_CLASSPATH=$(hadoop classpath)
export HADOOP_CONF_DIR=${HADOOP_HOME}/etc/hadoop
export HADOOP_PID_DIR=/opt/module/hadoop/pid
export HADOOP_SECURE_PID_DIR=${HADOOP_PID_DIR}
export HDFS_NAMENODE_USER=root
export HDFS_DATANODE_USER=root
export HDFS_JOURNALNODE_USER=root
export HDFS_ZKFC_USER=root
export YARN_RESOURCEMANAGER_USER=root
export YARN_NODEMANAGER_USER=root

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

# 退出后,刷新环境变量
source /etc/profile.d/my_env.sh
shell 复制代码
# 将配好的flink分发到node03,node04
scp -r flink/ root@node03:/opt/module/
scp -r flink/ root@node04:/opt/module/

七、集群测试

1、启动zookeeper,hadoop

shell 复制代码
# 启动zookeeper,三个节点分别启动
zkServer.sh start

# 启动hadoop,node02
# 启动hdfs集群
start-dfs.sh
# 启动hdfs集群
start-yarn.sh

2、Yarn Session测试

(1)模式介绍

YARN Session模式特点:

  1. 先启动一个长期运行的Flink集群
  2. 在该集群上可以提交多个作业
  3. 适合短作业频繁提交的场景
  4. 资源共享,启动速度快
(2)准备测试资源
shell 复制代码
# 创建测试用的HDFS目录
hdfs dfs -mkdir -p /flink/test/input
hdfs dfs -mkdir -p /flink/test/output

# 上传测试数据到HDFS
echo "hello world hello flink
flink is fast
hello hadoop
flink streaming" > test.txt

hdfs dfs -put test.txt /flink/test/input/
(3)启动YARN Session
shell 复制代码
# 在node02上执行(作为客户端)
cd $FLINK_HOME

# 方法1:交互式启动(推荐测试用)
./bin/yarn-session.sh -d

# 方法2:分离模式启动
./bin/yarn-session.sh -d -jm 1024m -tm 2048m -s 2 -nm "FlinkYarnSession"

# 参数说明:
# -d: 分离模式(后台运行)
# -jm: JobManager内存(默认1024m)
# -tm: 每个TaskManager内存(默认1024m)
# -s: 每个TaskManager的slot数量(默认1)
# -nm: YARN应用名称
# -qu: YARN队列名称
# -D: 传递Flink配置参数

# 示例:指定更多资源
./bin/yarn-session.sh \
  -d \
  -jm 2048m \
  -tm 4096m \
  -s 4 \
  -nm "FlinkTestSession" \
  -D taskmanager.memory.network.min=128mb \
  -D taskmanager.memory.network.max=256mb \
  -D parallelism.default=4
(4)查看YARN Session状态
shell 复制代码
# 查看YARN上的应用
yarn application -list

# 查找Flink Session应用ID
yarn application -list | grep Flink

# 查看应用详情
yarn application -status <application_id>

# 也可以直接打开yarn页面查看
(5)提交作业
shell 复制代码
# 首先找到刚刚启动的session,获取YARN应用ID
yarn application -list

# 测试1:提交WordCount示例作业
./bin/flink run \
  -m yarn-cluster \
  -yid application_1765702106723_0004 \
  ./examples/streaming/WordCount.jar \
  --input hdfs://ns/flink/test/input/test.txt \
  --output hdfs://ns/flink/test/output/wordcount_result

# 测试2:提交Socket作业(需要先启动netcat)
# 在一个终端启动netcat
nc -lk 9999

# 在另一个终端提交Socket作业
./bin/flink run \
  -m yarn-cluster \
  -yid application_1765702106723_0004 \
  ./examples/streaming/SocketWindowWordCount.jar \
  --hostname node02 \
  --port 9999
(6)停止YARN Session
shell 复制代码
# 方法1:通过YARN命令停止
yarn application -kill application_1765702106723_0004

# 方法2:通过Flink命令停止
echo "stop" | ./bin/yarn-session.sh -id application_1765702106723_0004

# 方法3:在Web UI中停止
# 访问ApplicationMaster Web UI -> Cluster -> Stop Cluster

3、Per-Job测试

(1)Per-Job模式介绍

Per-Job模式特点:

  1. 每个作业独立启动一个Flink集群
  2. 作业完成后集群自动释放资源
  3. 资源隔离性好
  4. 适合长时间运行的生产作业
(2)提交per-job作业
shell 复制代码
./bin/flink run -d \
  -m yarn-cluster \
  -ynm "FlinkPerJobWordCount" \
  -yjm 1024m \
  -ytm 1024m \
  -ys 1 \
  -p 1 \
  ./examples/batch/WordCount.jar \
  --input hdfs://ns/flink/test/input/test.txt \
  --output hdfs://ns/flink/test/output/perjob_wordcount
  
  
nc -lk 9999
# 在另一个终端提交Socket作业
bin/flink run -d \
  -m yarn-cluster \
  -ynm "FlinkPerJobWordCount" \
  -yjm 1024m \
  -ytm 1024m \
  -ys 1 \
  -p 1 \
  ./examples/streaming/SocketWindowWordCount.jar \
  --hostname node02 \
  --port 9999
  

# 参数详细说明:
# -m yarn-cluster: 指定YARN Per-Job模式
# -ynm: YARN应用名称
# -yjm: JobManager内存
# -ytm: TaskManager内存
# -ys: 每个TaskManager的slot数量
# -yqu: YARN队列名称
# -p: 作业并行度
# -yD: 传递动态参数,如:-yD taskmanager.memory.network.min=128mb
相关推荐
bwz999@88.com15 分钟前
联想SR5507X04安装ubuntu-24.04.4 server,采用 Linux 原生mdadm(mdraid)软 RAID+LVM分区
运维·服务器
Canicer20 分钟前
OpenClaw搭配Coze工作流实现全自动发布文章至WordPress网站!
运维·服务器
王小义笔记29 分钟前
WSL(Linux)如何安装conda
linux·运维·conda
Fairy要carry31 分钟前
面试10-Agent 团队协议的管理
运维·服务器·网络
袁庭新31 分钟前
M系列芯片Mac上通过Homebrew一键安装/卸载Nginx并上线项目全指南
运维·nginx·macos·袁庭新·袁庭新ai
IDIOT___IDIOT32 分钟前
关于 git 进行版本管理的时候 gitignore 写入忽略规则而不生效的问题
大数据·git·elasticsearch
不想看见40433 分钟前
Git 误删急救手册
大数据·git·elasticsearch
偷懒下载原神38 分钟前
【linux操作系统】信号
linux·运维·服务器·开发语言·c++·git·后端
源远流长jerry1 小时前
RDMA 传输服务详解:可靠性与连接模式的深度剖析
linux·运维·网络·tcp/ip·架构
网络工程小王1 小时前
【大数据技术详解】——Elasticsearch技术(学习笔记)
大数据·大数据技术·向量查询