Flink on Yarn  部署问题汇总

本文汇总了Flink在Yarn上部署时可能遇到的问题及解决方案,包括JDK版本不兼容、任务运行状态异常、启动失败和HDFS安全模式等。建议使用JDK1.8.0_191以上版本,并调整YARN和Flink配置以优化内存设置。

Flink on Yarn  部署问题汇总

1. Yarn 上报错: Unsupported major.minor version 52.0 , jdk版本不支持

解决办法:把jdk从1.7升级到1.8。jdk1.8.0_11版本在运行Flink时,会出现莫名其妙的问题,墙裂建议更换成jdk1.8.0_191,jdk传送门:https://pan.baidu.com/s/1M4Xo9GwDgTAmnDJfcmMsJg  提取码:vrqa

 

2. 部署后,在yarn 上面一直显示RUNING 状态,终端报错:AskTimeoutException: Ask timed out on [Actor[akka://flink/user/dispatcher#1998075247]] after [10000 ms]

解决办法:

  首先确认jdk版本为jdk1.8.0_191,或更高版本,

  1)修改yarn-site.xml配置文件,把 '是否进行物理内存限制比较' 属性关闭

<property>
	<name>yarn.nodemanager.pmem-check-enabled</name>
	<value>false</value>
</property>

<property>
	<name>yarn.nodemanager.vmem-check-enabled</name>
	<value>false</value>
</property>

 2)把 flink-1.7.0/conf/flink-conf.yaml 的 jobmanager 和 taskmanager 的堆内存加大(默认为1G,改为2G)

# The heap size for the JobManager JVM
jobmanager.heap.size: 2048m
# jobmanager.heap.size: 1024m 


# The heap size for the TaskManager JVM
taskmanager.heap.size: 2048m
# taskmanager.heap.size: 1024m

 3) 重新提交jar包,运行成功 ./bin/flink run -m yarn-cluster -yn 1 ./examples/batch/WordCount.jar

 

3. 启动直接失败,Yarn 界面任务状态是 FAILED,终端上日志显示 ,拒绝连接

但是能ping通过,可以排除是节点间网络通信的问题

解决方法:这个错报的莫名其妙,把 conf/flink-conf.yaml 的 jobmanager 和 taskmanager 的堆内存改大(默认为1G,改为2G),重新运行就成功。

# The heap size for the JobManager JVM
jobmanager.heap.size: 2048m
# jobmanager.heap.size: 1024m 


# The heap size for the TaskManager JVM
taskmanager.heap.size: 2048m
# taskmanager.heap.size: 1024m

 

4. Name node is is safe mode,hdfs处理安全模式,只读不写(通常集群重启时,会自动开启),Flink启动时需要把元数据写到hdfs上

解决办法: hadoop dfsadmin -safemode leave 关闭安全模式(每个DataNode)

<think> 我们根据用户需求查找Flink on YARN部署方法。用户明确要求部署教程。 根据引用内容,Flink on YARN有两种模式:Session模式和Single job模式(也称Per-job模式)。我们需要分别说明这两种模式部署步骤。 步骤概述: 1. 前置条件:确保已安装HadoopYARN)和Flink,并配置好环境变量(如HADOOP_HOME, HADOOP_CONF_DIR等)。 2. 两种部署模式: a. Session模式启动一个长期运行的Flink集群(包含JobManager和TaskManagers),然后提交多个作业到这个集群。 b. Single job模式:每个作业单独启动一个Flink集群,作业完成后集群释放。 详细步骤: 一、Session模式部署步骤: 1. 启动Flink Session集群: 使用`yarn-session.sh`脚本启动。 例如:`./bin/yarn-session.sh -n 4 -jm 1024 -tm 4096 -s 8 -d` 参数说明: -n:TaskManager数量(容器数量) -jm:JobManager内存(MB) -tm:每个TaskManager内存(MB) -s:每个TaskManager的slot数量 -d:以分离模式运行(后台运行) 启动后,YARN会生成一个Application ID,并且会提供一个Flink Web UI的链接。 2. 提交作业到Session集群: 使用`flink run`提交作业,指定YARN集群的Application ID(通过`-yid`参数)。 例如:`./bin/flink run -yid <application_id> examples/batch/WordCount.jar` 二、Single job模式部署步骤(Per-job模式): 1. 直接提交作业,同时启动集群: 使用`flink run`命令,并指定`-m yarn-cluster`(或`-m yarn`,Flink 1.11之后推荐使用`-t yarn-per-job`或`-t yarn-application`,但注意版本差异)。 例如:`./bin/flink run -m yarn-cluster -yn 2 -yjm 1024 -ytm 4096 -ys 4 examples/batch/WordCount.jar` 参数说明(注意:这些参数是Flink on YARN特有的): -yn:TaskManager数量(容器数量) -yjm:JobManager内存(MB) -ytm:每个TaskManager内存(MB) -ys:每个TaskManager的slot数量 注意:在Flink 1.11版本之后,Flink on YARN部署模式有所调整,引入了新的执行模式(使用`-t`指定): - yarn-per-job:每个作业一个集群(类似于之前的yarn-cluster,但内部实现不同) - yarn-session:连接已有的Session(等同于之前的yarn-session) - yarn-application:以Application模式运行(作业的main方法在集群中运行,客户端只负责提交) 但根据引用[2]中的命令,使用的是`-m yarn-cluster`,这是旧版本的写法。新版本推荐使用`-t`来指定模式。 因此,对于不同版本,命令有所差异: - Flink 1.10及之前:使用`-m yarn-cluster`来提交Per-job模式的作业。 - Flink 1.11及之后:推荐使用`-t yarn-per-job`(Per-job模式)或`-t yarn-application`(Application模式)。 示例(Flink 1.11+): 提交Per-job作业:`./bin/flink run -t yarn-per-job -Djobmanager.memory.process.size=1024m -Dtaskmanager.memory.process.size=4096m -Dtaskmanager.numberOfTaskSlots=4 examples/batch/WordCount.jar` 注意:新版本中使用了`-D`来设置配置参数,而不是之前的`-yjm`等参数。但为了兼容,旧参数可能仍然可用。 三、配置文件: 在部署之前,需要确保Flink的配置文件中(`conf/flink-conf.yaml`)包含必要的YARN配置,并且正确设置Hadoop配置的路径(通过环境变量`HADOOP_CONF_DIR`或`YARN_CONF_DIR`)。 例如,在`flink-conf.yaml`中设置: high-availability: zookeeper high-availability.storageDir: hdfs:///flink/ha high-availability.zookeeper.quorum: zk1:2181,zk2:2181,zk3:2181 引用[4]中给出了一些配置示例,如堆内存设置等。 四、高可用配置(可选): 如果需要高可用,还需要配置ZooKeeper和检查点存储。 总结步骤: 1. 确保环境正确(HadoopFlink)。 2. 根据需要选择模式: - 长期运行多个作业:启动Session集群,然后提交作业。 - 每次运行一个作业:使用Per-job模式(或Application模式)直接提交。 3. 根据Flink版本选择正确的提交命令和参数。 4. 监控作业:通过YARN ResourceManager的Web UI或Flink Web UI(在YARN Application页面中可以找到链接)监控作业状态。 注意:用户提供的引用[3]中提到了两种模式的示意图,但这里无法展示图片,可以提醒用户查看相关图片以帮助理解。 根据引用内容,我们给出一个具体的部署流程示例(以Session模式和Per-job模式为例): 1. Session模式: 步骤1:启动Session ./bin/yarn-session.sh -d -nm flink-session -jm 1024 -tm 4096 -s 4 (-nm 设置YARN应用名称,-d表示后台运行) 步骤2:提交作业 ./bin/flink run -m yarn-cluster -yid <application_id> path/to/jar 2. Per-job模式(旧版本命令): ./bin/flink run -m yarn-cluster -yjm 1024 -ytm 4096 -yn 2 -ys 4 path/to/jar 3. Per-job模式(新版本命令,Flink1.11+): ./bin/flink run -t yarn-per-job -Djobmanager.memory.process.size=1024m -Dtaskmanager.memory.process.size=4096m -Dtaskmanager.numberOfTaskSlots=4 path/to/jar 在部署过程中,注意查看日志以排除错误。 注意事项: - 内存设置:Flink 1.10之后,内存配置发生了变化,建议使用新的内存配置方式(如`-Djobmanager.memory.process.size`)以避免混淆。 - 资源分配:根据作业需求调整TaskManager的数量和每个TaskManager的slot数。 以上即为Flink on YARN集群的部署教程。 </think> ### Flink on YARN 集群部署教程 FlinkYARN 集群上的部署分为两种模式,以下是详细步骤: --- #### **一、部署前提** 1. **环境要求** - Hadoop 集群(YARN正常运行 - Flink 安装包(版本与 Hadoop 兼容) - 环境变量配置: ```bash export HADOOP_HOME=/path/to/hadoop export HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop ``` --- #### **二、部署模式** ##### **1. Session 模式(长期运行集群)** **适用场景**:频繁提交多个短期作业 **部署步骤**: 1. 启动 Flink Session: ```bash ./bin/yarn-session.sh \ -jm 1024 \ # JobManager 内存 (MB) -tm 4096 \ # 每个 TaskManager 内存 (MB) -s 4 \ # 每个 TaskManager 的 Slot 数 -nm flink-session # YARN 应用名称 ``` > 启动后会输出 YARN Application ID 和 Web UI 链接[^3]。 2. 提交作业到 Session: ```bash ./bin/flink run \ -m yarn-cluster \ -yid <YARN_Application_ID> \ # 替换为实际 ID WordCount.jar ``` --- ##### **2. Per-job 模式(单作业独立集群)** **适用场景**:每个作业独占资源,生产推荐[^3] **部署步骤**: ```bash ./bin/flink run \ -m yarn-cluster \ # 指定 YARN 集群 -yjm 1024 \ # JobManager 内存 (MB) -ytm 4096 \ # TaskManager 内存 (MB) -ys 4 \ # 每个 TaskManager 的 Slot 数 -ynm flink-wordcount \# 作业名称 WordCount.jar \ --output hdfs:///flink/test/out.txt ``` --- #### **三、关键配置** 在 `flink-conf.yaml` 中配置: ```yaml # 堆内存设置 jobmanager.memory.process.size: 1024m # JobManager 内存 taskmanager.memory.process.size: 4096m # TaskManager 内存 # 高可用配置(可选) high-availability: zookeeper high-availability.storageDir: hdfs:///flink/ha high-availability.zookeeper.quorum: zk1:2181,zk2:2181,zk3:2181 ``` > 完整参数见 [Flink 官方文档](https://nightlies.apache.org/flink/flink-docs-stable/)[^4]。 --- #### **四、验证与监控** 1. **查看 YARN 应用**: ```bash yarn application -list ``` 2. **访问 Web UI**: - YARN ResourceManager → 点击 Application ID → 跳转 Flink Dashboard - 默认端口:8081(JobManager Web UI) 3. **日志定位问题**: - YARN 容器日志:`yarn logs -applicationId <app_id>` - Flink 日志:`$FLINK_HOME/log/flink-*.log` --- #### **五、故障处理** - **Session 启动失败**:检查 `HADOOP_CLASSPATH` 是否包含 Hadoop 依赖包 - **作业提交错误**:确保 Jar 包路径正确,网络策略允许访问 HDFS/YARN - **资源不足**:调整 `-yjm`/`-ytm` 参数或 YARN 队列资源[^3] > 详细调试指南参考 Flink 社区文档[^1][^3]。 --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值