一大早过来,有RegionServer挂了。
查看log,显示
2011-09-25 22:31:51,185 [main-SendThread(XXX:2181)] INFO org.apache.zookeeper.ClientCnxn: Unable to read additional data from server sessionid 0x30694969fba6a9, likely server has closed socket, closing socket connection and attempting reconnect
很明晰,连不上zookeeper了,多次重连接后失败,之后,regionserver退出。
这台机器是比较特殊的,因为我在上面跑了个HBase的availability 监控。
我担心会不会是这个导致的,虽然代码非常简单。
于是
netstat -anp|grep 2181
一查看,果真,这个进程居然占了近3千个zookeeper connection,因为client 端连接zookeeper的connection是有限制的,default 是30, 我们这里设置到3000。这样,regionserver因为获取不到zookeeper的connection而导致 退出。
因为监控的逻辑实在简单,怀疑落在了这样一句语句上
try {
HBaseAdmin.checkHBaseAvailable(hbaseConfig);
} catch (MasterNotRunningException e) {
logger.error(e.getMessage(),e);
return new GangliaData("HBase Cluster Availability", e.getMessage() , 0);
} catch (ZooKeeperConnectionException e) {
logger.error(e.getMessage(),e);
return new GangliaData("HBase Cluster Availability", e.getMessage() , 0);
}
于是看了下checkHBaseAvailable的代码,
public static void checkHBaseAvailable(Configuration conf)
throws MasterNotRunningException, ZooKeeperConnectionException {
Configuration copyOfConf = HBaseConfiguration.create(conf);
copyOfConf.setInt("hbase.client.retries.number", 1);
new HBaseAdmin(copyOfConf);
}
这里,就是拷贝了conf,new一个新的HBaseAdmin,如果能创建,则证明cluster available,否则会抛出异常。
但是等等,这句里面创建了一个HBaseAdmin的实例,在构造函数里面会创建一个连接zookeeper的connection而不释放。
public HBaseAdmin(Configuration c)
throws MasterNotRunningException, ZooKeeperConnectionException {
this.conf = HBaseConfiguration.create(c);
this.connection = HConnectionManager.getConnection(this.conf);
this.pause = this.conf.getLong("hbase.client.pause", 1000);
this.numRetries = this.conf.getInt("hbase.client.retries.number", 10);
this.retryLongerMultiplier = this.conf.getInt("hbase.client.retries.longer.multiplier", 10);
this.connection.getMaster();
}
最后查了一下网上,果真,这是HBase的一个bug, HBase 4417。
修改的方法就是
Index: src/main/java/org/apache/hadoop/hbase/client/HBaseAdmin.java
===================================================================
--- src/main/java/org/apache/hadoop/hbase/client/HBaseAdmin.java (revision 1171389)
+++ src/main/java/org/apache/hadoop/hbase/client/HBaseAdmin.java (working copy)
@@ -1254,6 +1254,7 @@
throws MasterNotRunningException, ZooKeeperConnectionException {
Configuration copyOfConf = HBaseConfiguration.create(conf);
copyOfConf.setInt("hbase.client.retries.number", 1);
- new HBaseAdmin(copyOfConf);
+ HBaseAdmin admin = new HBaseAdmin(copyOfConf);
+ HConnectionManager.deleteConnection(admin.getConfiguration(), false);
}
}
分享到:
相关推荐
赠送jar包:hbase-prefix-tree-1.1.3.jar; 赠送原API文档:hbase-prefix-tree-1.1.3-javadoc.jar; 赠送源代码:hbase-prefix-tree-1.1.3-sources.jar; 赠送Maven依赖信息文件:hbase-prefix-tree-1.1.3.pom; ...
HBase(hbase-2.4.9-bin.tar.gz)是一个分布式的、面向列的开源数据库,该技术来源于 Fay Chang 所撰写的Google论文“Bigtable:一个结构化数据的分布式存储系统”。就像Bigtable利用了Google文件系统(File System...
phoenix-hbase-2.2-5.1.2-bin.tar.gz
hbase-client-2.1.0-cdh6.3.0.jar
赠送jar包:hbase-hadoop-compat-1.1.3.jar; 赠送原API文档:hbase-hadoop-compat-1.1.3-javadoc.jar; 赠送源代码:hbase-hadoop-compat-1.1.3-sources.jar; 赠送Maven依赖信息文件:hbase-hadoop-compat-1.1.3....
赠送jar包:hbase-metrics-api-1.4.3.jar; 赠送原API文档:hbase-metrics-api-1.4.3-javadoc.jar; 赠送源代码:hbase-metrics-api-1.4.3-sources.jar; 赠送Maven依赖信息文件:hbase-metrics-api-1.4.3.pom; ...
13.hbase的工作机制补充--regionserver数据管理--内存缓存热数据--持久化到hdfs的观
hbase-1.2.6.1-bin.tar.gz,hbase-1.2.6.1-bin.tar.gz,hbase-1.2.6.1-bin.tar.gz,hbase-1.2.6.1-bin.tar.gz,hbase-1.2.6.1-bin.tar.gz,hbase-1.2.6.1-bin.tar.gz,hbase-1.2.6.1-bin.tar.gz,hbase-1.2.6.1-bin.tar.gz
phoenix-hbase-1.4-4.16.1-bin
赠送jar包:hbase-hadoop-compat-1.1.3.jar; 赠送原API文档:hbase-hadoop-compat-1.1.3-javadoc.jar; 赠送源代码:hbase-hadoop-compat-1.1.3-sources.jar; 赠送Maven依赖信息文件:hbase-hadoop-compat-1.1.3....
HBase 元数据修复工具包。 ①修改 jar 包中的application.properties,重点是 zookeeper.address、zookeeper.nodeParent、hdfs.root.dir配置项,hdfs 最好写 ip; ②将core-site.xml、hdfs-site.xml添加到BOOT-INF/...
赠送jar包:hbase-prefix-tree-1.4.3.jar; 赠送原API文档:hbase-prefix-tree-1.4.3-javadoc.jar; 赠送源代码:hbase-prefix-tree-1.4.3-sources.jar; 赠送Maven依赖信息文件:hbase-prefix-tree-1.4.3.pom; ...
hbase-1.0.1.1-bin.tar.gz,官方版本,请尽情下载使用。
赠送jar包:hbase-annotations-1.1.2.jar; 赠送原API文档:hbase-annotations-1.1.2-javadoc.jar; 赠送源代码:hbase-annotations-1.1.2-sources.jar; 包含翻译后的API文档:hbase-annotations-1.1.2-javadoc-...
hbase的hbase-1.2.0-cdh5.14.2.tar.gz资源包
赠送jar包:hbase-common-1.1.2.jar; 赠送原API文档:hbase-common-1.1.2-javadoc.jar; 包含翻译后的API文档:hbase-common-1.1.2-javadoc-API文档-中文(简体)-英语-对照版.zip 对应Maven信息:groupId:org....
赠送jar包:hbase-client-1.4.3.jar; 赠送原API文档:hbase-client-1.4.3-javadoc.jar; 赠送源代码:hbase-client-1.4.3-sources.jar; 赠送Maven依赖信息文件:hbase-client-1.4.3.pom; 包含翻译后的API文档:...
赠送jar包:hbase-client-1.1.2.jar; 赠送原API文档:hbase-client-1.1.2-javadoc.jar; 赠送源代码:hbase-client-1.1.2-sources.jar; 包含翻译后的API文档:hbase-client-1.1.2-javadoc-API文档-中文(简体)-...
搭建pinpoint需要的hbase初始化脚本hbase-create.hbase
赠送jar包:hbase-common-1.4.3.jar; 赠送原API文档:hbase-common-1.4.3-javadoc.jar; 赠送源代码:hbase-common-1.4.3-sources.jar; 赠送Maven依赖信息文件:hbase-common-1.4.3.pom; 包含翻译后的API文档:...