我在Java中使用Hbase。我的java应用程序和HBase都在dockers中运行。 这是一个我从以下网站获得HBase配置的课程:
public class HBaseConf {
private static HBaseConf instance = new HBaseConf();
private Configuration configuration;
public Configuration getConfiguration() {
return configuration;
}
public HBaseConf() {
String hbasePort = System.getenv("LINK_NAME_PORT_2181_TCP_ADDR");
this.configuration = org.apache.hadoop.hbase.HBaseConfiguration.create();
if (hbasePort != null) {
this.configuration.set("hbase.zookeeper.quorum", hbasePort);
this.configuration.set("hbase.zookeeper.property.clientPort", "2181");
}
}
public static Configuration getHbaseConf() {
return instance.getConfiguration();
}
}
然后我执行一些在hbase中触发扫描的请求。在几次(10-20)罚款请求后,我收到错误:
> org.apache.zookeeper.ClientCnxn - Session 0x0 for server 172.17.0.4/172.17.0.4:2181, unexpected error, closing socket connection and attempting reconnect
java.io.IOException: Connection reset by peer
at sun.nio.ch.FileDispatcherImpl.read0(Native Method)
at sun.nio.ch.SocketDispatcher.read(SocketDispatcher.java:39)
at sun.nio.ch.IOUtil.readIntoNativeBuffer(IOUtil.java:223)
at sun.nio.ch.IOUtil.read(IOUtil.java:192)
at sun.nio.ch.SocketChannelImpl.read(SocketChannelImpl.java:380)
at org.apache.zookeeper.ClientCnxnSocketNIO.doIO(ClientCnxnSocketNIO.java:68)
at org.apache.zookeeper.ClientCnxnSocketNIO.doTransport(ClientCnxnSocketNIO.java:366)
at org.apache.zookeeper.ClientCnxn$SendThread.run(ClientCnxn.java:1081)
这是我的hbase-site.xml:
<configuration>
<property>
<name>hbase.master.port</name>
<value>60000</value>
</property>
<property>
<name>hbase.master.info.port</name>
<value>60010</value>
</property>
<property>
<name>hbase.regionserver.port</name>
<value>60020</value>
</property>
<property>
<name>hbase.regionserver.info.port</name>
<value>60030</value>
</property>
<property>
<name>hbase.zookeeper.quorum</name>
<value>localhost</value>
</property>
<property>
<name>hbase.zookeeper.property.maxClientCnxns</name>
<value>300</value>
</property>
<property>
<name>hbase.localcluster.port.ephemeral</name>
<value>false</value>
</property>
<property>
<name>hbase.rootdir</name>
<value>file:///opt/hbase/data</value>
</property>
<property>
<name>hbase.zookeeper.property.dataDir</name>
<value>/opt/hbase/zookeeper</value>
</property>
答案 0 :(得分:0)
看起来我已经超过了最大客户数量。将hbase.zookeeper.property.maxClientCnxns设置为0(无限制)就成了伎俩。