Hbase客户端为单个服务器创建了数千个连接

时间:2015-02-20 23:49:20

标签: hadoop hbase

我们在完全分布式模式下运行HBase 0.94.2和Hadoop 1.1.2,其中包含一个主服务器和一个从服务器。 HBase服务器有7个表。

我们有一个Hadoop作业,可以从HBase表中写入和读取。看起来HBase客户端为每个操作创建了一个到区域服务器的新连接。当一个任务正在运行时,区域服务器有超过10000个连接。大多数都在TIME_WAIT中,但这很快就会导致在同时运行多个任务时创建更多连接的问题。

一项任务还有> 500个线程,其名称为" IPC客户端(47)连接到/10.4.8.101:60020,来自root"

我们确实使用HbaseSynchronizationManager.bindResource将表绑定到线程。

关于为什么会发生这种情况的任何想法都会非常有用!

感谢

更新1

我们使用spring来创建一个Configuration和HbaseTemplate,如此

<hdp:hbase-configuration id="hbaseConfiguration" properties-location="classpath:hbase.properties"/>
<bean id="hbaseTemplate" class="org.springframework.data.hadoop.hbase.HbaseTemplate" p:configuration-ref="hbaseConfiguration"/>

从这里开始将使用HbaseTemplate来执行Put等。 所有弹簧配置都发生在Mapper的设置中。

1 个答案:

答案 0 :(得分:0)

我在Hbase jira中发现了类似问题的各种问题。它们固定在0.94.7。在我升级到0.94.x系列中的较新版本后,问题得到了解决。