Flink on YARN单机部署全攻略:从环境搭建到作业提交
2025.09.17 11:04浏览量:1简介:本文详细介绍了如何在单机环境下通过YARN部署Apache Flink,包括环境准备、安装配置、集群启动及作业提交的全流程,适合开发者快速上手。
Flink on YARN单机部署全攻略:从环境准备到作业提交
摘要
Apache Flink作为流批一体的分布式计算框架,与YARN资源管理系统的结合能高效利用集群资源。本文针对单机环境,详细阐述Flink on YARN的部署流程,涵盖环境准备、安装配置、集群启动、作业提交及常见问题处理,帮助开发者快速构建本地测试环境。
一、环境准备:基础条件与软件依赖
1.1 硬件与系统要求
单机部署需满足:
- 硬件:至少4核CPU、8GB内存(建议16GB+)、50GB+磁盘空间(用于日志和临时文件)。
- 操作系统:Linux(推荐CentOS/Ubuntu)或macOS(需配置本地YARN环境)。
- 网络:确保主机名可解析(通过
/etc/hosts
配置),避免YARN任务注册失败。
1.2 软件依赖清单
软件 | 版本要求 | 用途 |
---|---|---|
Java JDK | 8或11(推荐) | Flink/YARN运行环境 |
Hadoop | 2.7+(YARN兼容) | 提供YARN资源管理服务 |
Flink | 1.15+(最新稳定版) | 核心计算框架 |
验证步骤:
# 检查Java版本
java -version
# 检查Hadoop版本(若单独安装)
hadoop version
二、安装与配置:分步骤详解
2.1 Hadoop YARN单机配置
- 下载Hadoop:从官网获取二进制包(如
hadoop-3.3.4.tar.gz
)。 - 解压与配置:
tar -xzvf hadoop-3.3.4.tar.gz -C /opt/
cd /opt/hadoop-3.3.4/etc/hadoop
修改核心配置:
core-site.xml
:设置HDFS默认路径(单机模式可省略HDFS,但需配置YARN)。yarn-site.xml
:<property>
<name>yarn.nodemanager.local-dirs</name>
<value>/tmp/yarn/local</value>
</property>
<property>
<name>yarn.nodemanager.log-dirs</name>
<value>/tmp/yarn/logs</value>
</property>
mapred-site.xml
(可选):配置MapReduce历史服务。
启动YARN:
# 格式化(仅首次需要)
hdfs namenode -format # 若使用HDFS
# 启动YARN资源管理器
start-yarn.sh
# 验证服务
jps # 应看到ResourceManager、NodeManager进程
2.2 Flink安装与YARN集成
- 下载Flink:
wget https://archive.apache.org/dist/flink/flink-1.17.0/flink-1.17.0-bin-scala_2.12.tgz
tar -xzvf flink-1.17.0-bin-scala_2.12.tgz -C /opt/
- 配置Flink:
- 修改
/opt/flink-1.17.0/conf/flink-conf.yaml
:# 指定YARN任务管理器内存
taskmanager.memory.process.size: 1024m
# YARN应用名称
yarn.application.name: Flink-on-YARN-Demo
- 设置环境变量(
~/.bashrc
):export FLINK_HOME=/opt/flink-1.17.0
export PATH=$PATH:$FLINK_HOME/bin
- 修改
三、集群启动与作业提交:从命令到实践
3.1 启动Flink on YARN集群
会话模式(长期运行):
yarn-session.sh -n 2 -s 2 -jm 1024 -tm 1024
-n
:TaskManager数量-s
:每个TaskManager的插槽数-jm
:JobManager内存(MB)-tm
:TaskManager内存(MB)
单作业模式(推荐测试):
flink run -m yarn-cluster -yn 2 -ys 2 -yjm 1024 -ytm 1024 ./examples/streaming/WordCount.jar
-m yarn-cluster
:指定YARN集群模式-yD
:动态参数(如-yD taskmanager.numberOfTaskSlots=4
)
3.2 作业提交与监控
通过Web UI监控:
- YARN ResourceManager UI(默认
http://localhost:8088
)查看应用状态。 - Flink Web UI(通过YARN应用日志或
yarn application -list
获取端口)。
- YARN ResourceManager UI(默认
日志查看:
# 查看JobManager日志
yarn logs -applicationId <app_id> | grep "JobManager"
# 实时跟踪TaskManager日志
yarn logs -applicationId <app_id> -logFiles stderr
四、常见问题与解决方案
4.1 内存不足错误
- 现象:
Container killed by YARN for exceeding memory limits
。 - 解决:
- 调整
flink-conf.yaml
中的内存参数:taskmanager.memory.task.heap.size: 512m
taskmanager.memory.managed.size: 256m
- 增加YARN容器内存:
yarn-session.sh -tm 2048 # 增大TaskManager内存
- 调整
4.2 端口冲突
- 现象:
Address already in use
。 - 解决:
- 修改
flink-conf.yaml
中的端口:rest.port: 8082
jobmanager.rpc.port: 6123
- 或通过命令行参数指定:
yarn-session.sh -Drest.port=8083
- 修改
4.3 版本兼容性问题
- 现象:
ClassNotFound
或IncompatibleClassChangeError
。 - 解决:
- 确保Hadoop与Flink版本兼容(如Hadoop 3.x需Flink 1.14+)。
- 检查依赖冲突:
mvn dependency:tree # 若使用Maven项目
五、优化建议:提升单机性能
内存调优:
- 分配70%内存给TaskManager,20%给JobManager,10%给系统。
- 示例配置:
taskmanager.memory.process.size: 4096m
taskmanager.memory.framework.heap.size: 256m
并行度设置:
- 根据CPU核心数调整:
flink run -p 4 ./job.jar # 设置并行度为4
- 或在代码中配置:
env.setParallelism(4);
- 根据CPU核心数调整:
日志管理:
- 配置
log4j.properties
减少日志量:rootLogger.level = INFO
logger.akka.name = akka
logger.akka.level = WARN
- 配置
六、总结与扩展
通过本文,开发者已掌握Flink on YARN单机部署的全流程,包括环境配置、集群启动、作业提交及故障排查。下一步可探索:
- 多节点部署:扩展至分布式集群。
- 高可用配置:通过Zookeeper实现JobManager HA。
- Kubernetes集成:对比YARN与K8s的资源管理差异。
附:完整命令示例
# 1. 启动YARN
start-yarn.sh
# 2. 启动Flink YARN会话
yarn-session.sh -n 2 -s 2 -jm 1024 -tm 2048 -Drest.port=8082
# 3. 提交作业
flink run -m yarn-cluster -c com.example.MainClass ./job.jar
通过系统化的配置与调优,Flink on YARN单机环境既能满足开发测试需求,也可为生产部署提供实践参考。
发表评论
登录后可评论,请前往 登录 或 注册