项目使用phoenix连接HBASE,数据用spark处理后通过phoenix批量插入到HBASE中,
其中,提交频率为5000条提交一次
发现插入表大的时候,速度变慢,查看日志发现如下线索:
client.AsyncProcess: #1, waiting for 5012 actions to finish
查看网上很多线索,主要有几种解释:
一种是ZK的连接数限制,需要调大ZK最大连接数。尝试修改连接数,没有效果
一种是说客户端连接数限制,要在开启客户端连接的时候增加连接池数量。 客户端是jdbc连接的,线程池不会太小。
另一种国外的网站是说一次性提交的事务太多,需要调小提交条数。这个还没有尝试。
查看HBASE写入原理,本来想写,心情不好,这里就不多说了,因为也没什么太大用处,
主要还是需要查看hbase的源码,从报错 日志client.AsyncProcess找到源码位置,在hbase-client里面,注意版本,新版本这个日志不是出现在AsyncProcess中
报错的日志在这个方法里面,究竟是谁调用了这个方法,那么得从头开始看了,从HTABLE里面的PUT<list rows>方法开始看,发现程序的逻辑