flink yarn模式提交任务出错

文章讲述了在遇到通过8088端口查看的日志中出现的端口绑定异常,具体原因为Java的BindException。解决方案是编辑flink-conf.yaml配置文件,调整rest.bind.port参数,设置一个端口范围以避免多实例冲突。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

通过窗口查看到的部分日志显示的错误如下:

 

 之后通过8088端口,查看具体的错误信息,发现是端口绑定异常

Caused by: java.net.BindException: Could not start rest endpoint on any port in port range 8090

 解决方案:

修改flink-conf.yaml文件

参数的意义:

rest.port:客户端连接到的端口。如果未指定rest.bind-port,则REST服务器将绑定到该端口。

rest.bind.port:服务器绑定自身的端口。接受端口列表(“ 50100,50101”),范围(“ 50100-50200”)或两者的组合。建议设置一定范围的端口,以防止在同一台计算机上运行多个Rest服务器时发生冲突。

因此,将rest.bind.port端口添加指定的范围即可。

 

<think>好的,我现在需要帮助用户解决他们遇到的Flink配置错误。错误信息是关于JVM Overhead的大小不在配置的范围内。用户使用的是StreamPark Flink SQL Yarn Application模式Flink版本1.19.1,StreamPark 2.1.4,资源配置中jobmanager和taskmanager的内存进程大小都是1536 MB。 首先,我需要理解这个错误的具体含义。错误提示说Derived JVM Overhead size是128MB,而配置的范围是192MB到1024MB。显然,计算出来的Overhead小于用户设置的最小值。因此,我需要找出为什么Overhead会被计算为128MB,以及如何调整配置使其符合范围。 接下来,我需要回忆Flink的内存模型,特别是JVM Overhead的部分。Flink的总内存由多个部分组成,包括堆内存、堆外内存、JVM Overhead等。JVM Overhead是为JVM自身预留的内存,比如线程栈、元数据等。根据Flink的文档,JVM Overhead的默认计算方式是基于总进程内存的一个百分比,通常是10%。但用户可能手动配置了这个值,或者有其他配置导致计算出的值低于最小值。 用户的jobmanager.memory.process.size和taskmanager.memory.process.size都设置为1536 MB。总进程内存减去其他部分(比如堆内存、堆外内存、网络内存等)剩下的就是JVM Overhead。如果总进程内存设置得太低,或者其他内存部分占用了太多,可能导致Overhead不足。 比如,假设总进程内存是1536 MB,而其他内存部分加起来是1408 MB(比如堆内存1024,堆外384),那么Overhead就是1536 - 1408 = 128 MB,这正好是错误中的数值。而用户设置的最小Overhead是192 MB,所以这里就出错了。 解决方案可能包括: 1. 增加总进程内存(jobmanager.memory.process.size和taskmanager.memory.process.size),这样在分配其他部分后,剩下的Overhead会更大。 2. 调整其他内存部分的配置,减少它们的占用,从而给Overhead留出更多空间。 3. 直接调整JVM Overhead的范围,降低其最小值,但需要确保系统稳定性,因为过小的Overhead可能导致OOM。 另外,用户可能没有显式设置Overhead的范围,而是使用了默认值。检查Flink的配置参数,比如jobmanager.memory.jvm-overhead.min和max,或者taskmanager对应的参数,是否被设置成了192到1024,导致默认计算出的128不符合。 根据Flink 1.19的文档,JVM Overhead的默认值是总进程内存的10%(或者根据其他因素调整),并且默认的最小值是192 MB吗?可能需要确认默认配置。或者用户可能在StreamPark中手动配置了这些参数,导致范围被限制。 所以,可能的解决步骤: - 建议用户增加总进程内存,例如将1536 MB增加到更大的值,如2048 MB,这样Overhead的10%可能超过192 MB。 - 或者,显式设置JVM Overhead的大小,覆盖自动计算,确保它在范围内。 - 或者调整JVM Overhead的范围,将最小值从192降低到128,但需注意可能的风险。 用户使用的是StreamPark,可能需要通过StreamPark的配置文件或界面来调整这些参数。比如,在StreamPark的任务配置中,添加Flink的内存参数,如taskmanager.memory.jvm-overhead.min=192m,或者调整总进程内存。 另外,需要检查是否有其他内存参数被设置,比如堆内存或堆外内存是否占用了太多,导致留给Overhead的不足。例如,如果用户显式设置了taskmanager.memory.heap.size=1408m,那么总进程内存1536减去1408堆内存只剩下128,这就会导致问题。因此,可能需要调整堆内存的大小,或者让Flink自动分配。 总结,可能的解决方案是: 1. 增加总进程内存(如2048m)。 2. 减少其他内存部分的分配,如堆内存,确保Overhead足够。 3. 调整JVM Overhead的范围,降低最小值,或者设置固定值。 需要具体指导用户如何修改这些配置,可能通过StreamPark的配置文件或界面添加对应的Flink参数。</think>### 问题分析 该错误是由于 **JVM Overhead 内存自动计算值(128MB)** 低于用户配置的允许范围 `[192MB, 1024MB]` 导致的。Flink 内存模型中,JVM Overhead 是为 JVM 自身预留的内存(如线程栈、元数据等),其计算规则为: $$ \text{JVM Overhead} = \text{总进程内存} - (\text{堆内存} + \text{堆外内存} + \text{其他内存}) $$ 根据你的配置: - `jobmanager.memory.process.size = 1536mb` - `taskmanager.memory.process.size = 1536mb` Flink 自动计算得到的 JVM Overhead 为 `128MB`,但你的配置要求其最小值为 `192MB`,因此触发错误。 --- ### 解决方案 #### 方法 1:增加总进程内存 直接增大 `jobmanager` 和 `taskmanager` 的总进程内存,为 JVM Overhead 留出更多空间: ```yaml jobmanager.memory.process.size: 2048mb # 原1536mb → 2048mb taskmanager.memory.process.size: 2048mb ``` 此时 JVM Overhead 自动计算值会同步增加。 --- #### 方法 2:显式指定 JVM Overhead 值 绕过自动计算,直接固定 JVM Overhead: ```yaml # 对于 JobManager jobmanager.memory.jvm-overhead.min: 192mb jobmanager.memory.jvm-overhead.max: 192mb # 对于 TaskManager taskmanager.memory.jvm-overhead.min: 192mb taskmanager.memory.jvm-overhead.max: 192mb ``` --- #### 方法 3:调整 JVM Overhead 允许范围 降低允许的最小值,使其包含自动计算值 `128MB`: ```yaml # 对于 JobManager jobmanager.memory.jvm-overhead.min: 128mb # 原192mb → 128mb jobmanager.memory.jvm-overhead.max: 1024mb # 对于 TaskManager taskmanager.memory.jvm-overhead.min: 128mb taskmanager.memory.jvm-overhead.max: 1024mb ``` > **注意**:需评估是否会影响 JVM 稳定性。 --- #### 方法 4:优化其他内存分配 若其他内存(如堆内存、托管内存)占用过高,可减少其配置,释放空间给 JVM Overhead: ```yaml # 示例:减少 TaskManager 堆内存 taskmanager.memory.heap.size: 1024mb # 假设原为1408mb ``` --- ### 操作建议 1. **推荐使用 `方法1`**,通过增加总进程内存(如 `2048mb`)从根本上解决问题。 2. 在 StreamPark 的任务配置中,通过 **`Flink 内存参数`** 模块添加上述参数。 3. 调整后保存配置并重新提交任务。 --- ### 参数验证 使用以下命令检查内存分配是否合理: ```bash # 查看 JobManager 内存详情 flink run -m yarn-cluster -Djobmanager.memory.process.size=2048mb ... # 查看 TaskManager 内存详情 flink run -m yarn-cluster -Dtaskmanager.memory.process.size=2048mb ... ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值