Spark1.x升级Spark2.x常见异常HBase篇【CallQueueTooBigException】

编程入门 行业动态 更新时间:2024-10-23 15:33:15

Spark1.x升级Spark2.x常见<a href=https://www.elefans.com/category/jswz/34/1771210.html style=异常HBase篇【CallQueueTooBigException】"/>

Spark1.x升级Spark2.x常见异常HBase篇【CallQueueTooBigException】

一.HBase之CallQueueTooBigException

查看RpcServer.java【路径:hbase-2.1.0-src\hbase-2.1.0\hbase-server\src\main\java\org\apache\hadoop\hbase\ipc】源代码可知,报CallQueueTooBigException异常的原因是,RPC队列过大!具体到此处的原因是:Spark升级到2.x版本后,性能大幅提升,同时因HBase升级大2.1导致使用Spark往HBase同步数据的效率大幅增加,进而增加了对HBase RPC的负担。Spark同步HBase是使用RPC【远程过程调用】,因此RPC的queue大小对大数据环境这种高并发的情况来说就是息息相关了!源代码注释信息如下:

   * Maximum size in bytes of the currently queued and running Calls. If a new Call puts us over* this size, then we will reject the call (after parsing it though). It will go back to the* client and client will retry. Set this size with "hbase.ipc.server.max.callqueue.size". The* call queue size gets incremented after we parse a call and before we add it to the queue of* calls for the scheduler to use. It get decremented after we have 'run' the Call. The current* size is kept in {@link #callQueueSizeInBytes}.* @see #callQueueSizeInBytes* @see #DEFAULT_MAX_CALLQUEUE_SIZE

当前排队和正在运行的呼叫的最大大小(以字节为单位)。 如果一个新的呼叫使我们超出此大小,则我们将拒绝该呼叫(尽管在解析之后)。 它将返回到客户端,客户端将重试。 使用“ hbase.ipc.server.max.callqueue.size”设置此大小。 在解析呼叫之后,然后将其添加到呼叫队列以供调度程序使用之前,呼叫队列大小会增加。 在我们“运行”呼叫后,它会减少。 当前大小保留在callQueueSizeInBytes中。
源码如下:

protected static final int DEFAULT_MAX_CALLQUEUE_SIZE = 1024 * 1024 * 1024;

二.解决方案

根据情况可知,增加queue是解决问题的最直接办法。其中又包括两种方式:
1.修改hbase-site.xml

<property><name>hbase.ipc.server.max.callqueue.size</name><value>2140000000</value>
</property>

优缺点:

  • 优点:无需各种应用都添加相关配置,维护简单!
  • 缺点:需要修改环境配置,需要重启HBase!

2.在程序中动态指定【以Spark程序为例】
在HBase入口添加一下配置:

config.set("hbase.ipc.server.max.callqueue.size", "2140000000") // 设置最大queue大小

注意:添加该配置值不能超过2G,否则会报错,HBASE启动不了,因为JAVA integer 最大值限制!

更多推荐

Spark1.x升级Spark2.x常见异常HBase篇【CallQueueTooBigException】

本文发布于:2024-03-10 14:07:09,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1728189.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:异常   常见   HBase   CallQueueTooBigException

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!