dinky提交flink任务报 java.lang.OutOfMemoryError: Direct buffer memory

1,报错信息

org.apache.hadoop.ipc.Client(1093): Unexpected error reading responses on connection Thread[IPC Client (815834176) connection to prod52.bigdata/xx.xx.x.xx:8020 from appuser,5,main] java.lang.OutOfMemoryError: Direct buffer memory

at java.nio.Bits.reserveMemory(Bits.java:694) ~[?:1.8.0_201] at java.nio.DirectByteBuffer.<init>(DirectByteBuffer.java:123) ~[?:1.8.0_201] at java.nio.ByteBuffer.allocateDirect(ByteBuffer.java:311) ~[?:1.8.0_201] at sun.nio.ch.Util.getTemporaryDirectBuffer(Util.java:241) ~[?:1.8.0_201] at sun.nio.ch.IOUtil.read(IOUtil.java:195) ~[?:1.8.0_201] at sun.nio.ch.SocketChannelImpl.read(SocketChannelImpl.java:380) ~[?:1.8.0_201] at org.apache.hadoop.net.SocketInputStreamReader.performIO(SocketInputStream.java:57) \~\[flink-shaded-hadoop-3-uber-3.1.1.7.2.9.0-173-9.0.jar:3.1.1.7.2.9.0-173-9.0\] at org.apache.hadoop.net.SocketIOWithTimeout.doIO(SocketIOWithTimeout.java:142) \~\[flink-shaded-hadoop-3-uber-3.1.1.7.2.9.0-173-9.0.jar:3.1.1.7.2.9.0-173-9.0\] at org.apache.hadoop.net.SocketInputStream.read(SocketInputStream.java:161) \~\[flink-shaded-hadoop-3-uber-3.1.1.7.2.9.0-173-9.0.jar:3.1.1.7.2.9.0-173-9.0\] at org.apache.hadoop.net.SocketInputStream.read(SocketInputStream.java:131) \~\[flink-shaded-hadoop-3-uber-3.1.1.7.2.9.0-173-9.0.jar:3.1.1.7.2.9.0-173-9.0\] at java.io.FilterInputStream.read(FilterInputStream.java:133) \~\[?:1.8.0_201\] at java.io.BufferedInputStream.read1(BufferedInputStream.java:284) \~\[?:1.8.0_201\] at java.io.BufferedInputStream.read(BufferedInputStream.java:345) \~\[?:1.8.0_201\] at java.io.DataInputStream.read(DataInputStream.java:149) \~\[?:1.8.0_201\] at java.io.FilterInputStream.read(FilterInputStream.java:133) \~\[?:1.8.0_201\] at org.apache.hadoop.ipc.ClientConnectionPingInputStream.read(Client.java:581) \~\[flink-shaded-hadoop-3-uber-3.1.1.7.2.9.0-173-9.0.jar:3.1.1.7.2.9.0-173-9.0\] at java.io.DataInputStream.readFully(DataInputStream.java:195) \~\[?:1.8.0_201\] at java.io.DataInputStream.readFully(DataInputStream.java:169) \~\[?:1.8.0_201\] at org.apache.hadoop.ipc.ClientIpcStreams.readResponse(Client.java:1897) ~[flink-shaded-hadoop-3-uber-3.1.1.7.2.9.0-173-9.0.jar:3.1.1.7.2.9.0-173-9.0] at org.apache.hadoop.ipc.ClientConnection.receiveRpcResponse(Client.java:1191) \~\[flink-shaded-hadoop-3-uber-3.1.1.7.2.9.0-173-9.0.jar:3.1.1.7.2.9.0-173-9.0\] at org.apache.hadoop.ipc.ClientConnection.run(Client.java:1087) ~[flink-shaded-hadoop-3-uber-3.1.1.7.2.9.0-173-9.0.jar:3.1.1.7.2.9.0-173-9.0]

2,报错原因

Dinky 在提交 Flink 任务到 YARN 集群时,因 java.lang.OutOfMemoryError: Direct buffer memory 错误失败。

这个错误发生在 Dinky 服务进程本身(不是 Flink JobManager 或 TaskManager),具体是在它通过 Hadoop RPC 客户端连接 YARN ResourceManager时,尝试分配 Direct Memory(堆外内存)失败**。**

复制代码
java.lang.OutOfMemoryError: Direct buffer memory

表示 JVM 的 Direct Memory(堆外内存)耗尽

Direct Memory 不受 -Xmx 控制,而是由 -XX:MaxDirectMemorySize 限制(默认等于 -Xmx)。

Dinky 在提交任务时:

  1. 加载了 flink-shaded-hadoop-3-uber-*.jar
  2. 使用 Hadoop 客户端与 YARN RM 通信(IPC)
  3. Hadoop RPC 使用 DirectByteBuffer 进行网络 I/O(提升性能)
  4. Direct Memory 不足 → 抛出 OOM

3,解决方案

为 Dinky JVM 显式设置 -XX:MaxDirectMemorySize

JAVA_OPTS="-Xmx4g -Xms4g -XX:MaxDirectMemorySize=2g -XX:+UseG1GC"

相关推荐
YangYang9YangYan2 小时前
理财经理的职业进阶:核心技能与成长路径解析
大数据·金融·数据分析
shinelord明2 小时前
【大数据开发实践】Kafka REST Proxy~无缝集成 Kafka
大数据·分布式·架构·kafka
笨蛋少年派4 小时前
操作Hadoop时,慎用sudo
大数据·hadoop·分布式
青云交4 小时前
Java 大视界 -- Java 大数据在智能家居设备联动与场景自动化中的应用
java·大数据·智能家居·数据采集·设备联动·场景自动化·逻辑实现
武子康4 小时前
大数据-123 - Flink 并行度设置优先级讲解 原理、配置与最佳实践 从Kafka到HDFS的案例分析
大数据·后端·flink
不剪发的Tony老师4 小时前
Apache Drill:一款开源的分布式SQL查询引擎
大数据·sql·apache drill
APItesterCris5 小时前
Node.js/Python 实战:编写一个淘宝商品数据采集器
大数据·开发语言·数据库·node.js
TDengine (老段)5 小时前
TDengine 数学函数 CEIL 用户手册
java·大数据·数据库·物联网·时序数据库·tdengine·涛思数据
Giser探索家5 小时前
建筑物孪生模型:重构空间数字化格局,赋能智慧城市
大数据·人工智能·算法·重构·分类·云计算·智慧城市