【impala】because it would exceed an applicable memory limit

错误信息

在这里插入图片描述

ExecQueryFInstances rpc query_id=bf408e145c3fc6fb:b3e100c100000000

failed: Failed to get minimum memory reservation of 105.88 MB on daemon dx-hadoop115.dx:22000 for query bf408e145c3fc6fb:b3e100c100000000 because it would exceed an applicable memory limit. 

Memory is likely oversubscribed. Reducing query concurrency or configuring admission control may help avoid this error. 

Memory usage: 
Process: Limit=16.00 GB Total=9.95 GB Peak=14.61 GB 
  Buffer Pool: Free Buffers: Total=172.00 MB 
  Buffer Pool: Clean Pages: Total=1.28 GB 
  Buffer Pool: Unused Reservation: Total=-6.11 GB 
  Free Disk IO Buffers: Total=623.88 MB Peak=623.88 MB       RequestPool=root.hive: Total=12.82 GB Peak=12.88 GB 
  Query(224a58d7a2aefc66:d931db1200000000): Reservation=12.80 GB ReservationLimit=12.80 GB OtherMemory=23.31 MB Total=12.82 GB Peak=12.82 GB 
  Query(bf408e145c3fc6fb:b3e100c100000000): Reservation=0 ReservationLimit=12.80 GB OtherMemory=0 Total=0 Peak=0
RequestPool=root.wangshuangjie: Total=0 Peak=12.16 MB 
RequestPool=root.baixike: Total=0 Peak=112.13 MB
RequestPool=root.macheng: Total=0 Peak=116.15 MB
RequestPool=root.liuyiyu: Total=0 Peak=7.52 MB
RequestPool=root.risk: Total=0 Peak=7.52 MB 

Untracked Memory: Total=1.18 GB 

可能原因:

  1. impala内存溢出异常
  2. 有资源限制

问题原因:

通过分析日志 bf408e145c3fc6fb:b3e100c100000000 任务失败的原因是内存可能超额订阅。 减少查询并发或配置准入控制可能有助于避免此错误。

继续往下看:
下面是这个问题的主要原因:

RequestPool=root.hive: Total=12.82 GB Peak=12.88 GB
Query(224a58d7a2aefc66:d931db1200000000): Reservation=12.80 GB ReservationLimit=12.80 GB OtherMemory=23.31 MB Total=12.82 GB Peak=12.82 GB 
Query(bf408e145c3fc6fb:b3e100c100000000): Reservation=0 ReservationLimit=12.80 GB OtherMemory=0 Total=0 Peak=0

root.hive资源池只有12GB,被224a58d7a2aefc66:d931db1200000000这个任务基本全部耗尽,导致bf408e145c3fc6fb:b3e100c100000000这个任务失败。

解决方案:

  1. kill掉占资源的任务
  2. 解决方法就是把内存限制取消,或者加大
    set mem_limit=-1 #取消
    或者 1gb 100mb 1000b等值
    如果以上还不行,就要去配置文件修改
    Impala Daemon 内存限制
    mem_limit=-1b

单池内存限制
default_pool_mem_limit=-1b

说明 :
default_pool_mem_limit
配置使用单个池时用于 Admission Control 的运行查询的最大内存。-1 或 0 表示无限制。已启用“用于 Admission Control 的动态资源池”时忽略。

mem_limit
由守护程序本身强制执行的 Impala Daemon 的内存限制(以字节为单位)。如果达到该限制,Impalad Daemon 上运行的查询可能会被停止。将其留空可以让 Impala 选择自己的限制。使用 -1 B 值将指定无任何限制。

如图:
在这里插入图片描述

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值