hbase异常:java.io.IOException: Unable to determine ZooKeeper ensemble

项目中用到hbase,有时候可能会报一些异常,比如java.io.IOException: Unable to determine ZooKeeper ensemble 等等,当出现这个问题时,某某说是项目中用到线程池的问题导致的,但查看异常之后,并非跟啥线程池有关系,异常信息如下:

java.io.IOException: Unable to determine ZooKeeper ensemble
    at org.apache.hadoop.hbase.zookeeper.ZKUtil.connect(ZKUtil.java:120)
    at org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher.<init>(ZooKeeperWatcher.java:165)
    at org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher.<init>(ZooKeeperWatcher.java:134)
    at org.apache.hadoop.hbase.client.ZooKeeperKeepAliveConnection.<init>(ZooKeeperKeepAliveConnection.java:43)
    at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.getKeepAliveZooKeeperWatcher(HConnectionManager.java:1710)
    at org.apache.hadoop.hbase.client.ZooKeeperRegistry.isTableOnlineState(ZooKeeperRegistry.java:100)
    at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.isTableDisabled(HConnectionManager.java:879)
    at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.relocateRegion(HConnectionManager.java:1032)
    at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1255)
    at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1059)
    at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1016)
    at org.apache.hadoop.hbase.client.HTable.finishSetup(HTable.java:326)
    at org.apache.hadoop.hbase.client.HTable.<init>(HTable.java:310)
    at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.getTable(HConnectionManager.java:712)
    at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.getTable(HConnectionManager.java:694)
    at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.getTable(HConnectionManager.java:684)
    at net.shgaoxin.eastdaytoprankblack.db.HbaseConnEastdayminisite.gethbasetable(HbaseConnEastdayminisite.java:80)
    at net.shgaoxin.eastdaytoprankblack.db.LinkDBeastdayminisite.checkpageinhbase(LinkDBeastdayminisite.java:195)
    at net.shgaoxin.eastdaytoprankblack.db.HbasePersistent.execute(HbasePersistent.java:41)
    at net.shgaoxin.eastdaytoprankblack.servlet.ToprankblackServlet.doPost(ToprankblackServlet.java:61)
    at net.shgaoxin.eastdaytoprankblack.servlet.ToprankblackServlet.doGet(ToprankblackServlet.java:33)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:624)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:731)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:303)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
    at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:220)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:122)
    at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:505)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:170)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103)
    at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:957)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:423)
    at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1079)
    at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:620)
    at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:316)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
    at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)

查看源码ZooKeeperWatcher类:

 1   public ZooKeeperWatcher(Configuration conf, String identifier,
 2       Abortable abortable, boolean canCreateBaseZNode)
 3   throws IOException, ZooKeeperConnectionException {
 4     this.conf = conf;
 5     // Capture a stack trace now.  Will print it out later if problem so we can
 6     // distingush amongst the myriad ZKWs.
 7     try {
 8       throw new Exception("ZKW CONSTRUCTOR STACK TRACE FOR DEBUGGING");
 9     } catch (Exception e) {
10       this.constructorCaller = e;
11     }
12     this.quorum = ZKConfig.getZKQuorumServersString(conf);
13     // Identifier will get the sessionid appended later below down when we
14     // handle the syncconnect event.
15     this.identifier = identifier;
16     this.abortable = abortable;
17     setNodeNames(conf);
18     this.recoverableZooKeeper = ZKUtil.connect(conf, quorum, this, identifier);
19     if (canCreateBaseZNode) {
20       createBaseZNodes();
21     }
22   }

从源码中可得知,zookeeper地址存在问题,然后在看看ZKConfig类额方法:

 1  public static String getZKQuorumServersString(Properties properties) {
 2     String clientPort = null;
 3     List<String> servers = new ArrayList<String>();
 4
 5     // The clientPort option may come after the server.X hosts, so we need to
 6     // grab everything and then create the final host:port comma separated list.
 7     boolean anyValid = false;
 8     for (Entry<Object,Object> property : properties.entrySet()) {
 9       String key = property.getKey().toString().trim();
10       String value = property.getValue().toString().trim();
11       if (key.equals("clientPort")) {
12         clientPort = value;
13       }
14       else if (key.startsWith("server.")) {
15         String host = value.substring(0, value.indexOf(‘:‘));
16         servers.add(host);
17         try {
18           //noinspection ResultOfMethodCallIgnored
19           InetAddress.getByName(host);
20           anyValid = true;
21         } catch (UnknownHostException e) {
22           LOG.warn(StringUtils.stringifyException(e));
23         }
24       }
25     }
26
27     if (!anyValid) {
28       LOG.error("no valid quorum servers found in " + HConstants.ZOOKEEPER_CONFIG_NAME);
29       return null;
30     }
31
32     if (clientPort == null) {
33       LOG.error("no clientPort found in " + HConstants.ZOOKEEPER_CONFIG_NAME);
34       return null;
35     }
36
37     if (servers.isEmpty()) {
38       LOG.fatal("No servers were found in provided ZooKeeper configuration. " +
39           "HBase must have a ZooKeeper cluster configured for its " +
40           "operation. Ensure that you‘ve configured ‘" +
41           HConstants.ZOOKEEPER_QUORUM + "‘ properly.");
42       return null;
43     }
44
45     StringBuilder hostPortBuilder = new StringBuilder();
46     for (int i = 0; i < servers.size(); ++i) {
47       String host = servers.get(i);
48       if (i > 0) {
49         hostPortBuilder.append(‘,‘);
50       }
51       hostPortBuilder.append(host);
52       hostPortBuilder.append(‘:‘);
53       hostPortBuilder.append(clientPort);
54     }
55
56     return hostPortBuilder.toString();
57   }

基本上可以确定是ZooKeeper对应的地址不可访问。不是啥线程池的问题,跟程序中用到线程池没半毛钱关系,这种说法可怕啊..........

时间: 2024-12-15 06:54:13

hbase异常:java.io.IOException: Unable to determine ZooKeeper ensemble的相关文章

创建Hbase Hive外部表报错: Unable to determine ZooKeeper ensemble

创建HBase的Hive外部表 1: create external table ttt(rowkey string,info map<string,string>)STORED BY 'org.apache.hadoop.hive.hbase.HBaseStorageHandler' WITH SERDEPROPERTIES ("hbase.columns.mapping" = ":key,info:") TBLPROPERTIES ("hb

文件无法删除java.io.IOException: Unable to delete

疑问:1.为什么调用file.delete()方法时,返回值为false. 2.为什么调用Guava工具jar包中的Files.move(from,to) ,报异常:java.io.IOException: Unable to delete 执行代码程序前需要创建一个test.txt文件. 上代码: package indi.johnny.test007; import java.io.File; import java.io.FileInputStream; import java.io.In

java io IOException Unable to establish loopback connection

1.错误描述 Starting preview server on port 8080 Modules: HTML5 (/HTML5) 2017-06-17 11:13:04.823:INFO::main: Logging initialized @524ms 2017-06-17 11:13:05.017:INFO:oejs.Server:main: jetty-9.3.9.v20160517 java.io.IOException: Unable to establish loopback

hadoop异常 java.io.IOException: Job status not available

[[email protected] conf]$ hadoop jar /usr/lib/hadoop-mapreduce/hadoop-mapreduce-examples.jar wordcount /user/lizeyi/people.txt  /user/lizeyi/wordcount7 15/06/08 18:36:16 INFO client.RMProxy: Connecting to ResourceManager at master.hadoop/10.3.4.35:80

tomcat 启动 证书异常java.io.IOException: Alias name [cas] does not identify a key entry

在搭建CAS server的过程中,Tomcat开启https,配置秘钥证书,证书是通过keytool生成的 <Connector port="8443" protocol="org.apache.coyote.http11.Http11Protocol" maxThreads="150" SSLEnabled="true" scheme="https" secure="true"

windows 中使用hbase 异常:java.io.IOException: Could not locate executable null\bin\winutils.exe in the Hadoop binaries.

平时一般是在windows环境下进行开发,在windows 环境下操作hbase可能会出现异常(java.io.IOException: Could not locate executable null\bin\winutils.exe in the Hadoop binaries.),以前也遇到过这个问题,今天又有小伙伴遇到这个问题,就顺带记一笔,异常信息如下: 2016-05-23 17:02:13,551 WARN [org.apache.hadoop.util.NativeCodeLoa

Hadoop与HBase中遇到的问题(续)java.io.IOException: Non-increasing Bloom keys异常

在使用Bulkload向HBase导入数据中, 自己编写Map与使用KeyValueSortReducer生成HFile时, 出现了下面的异常: java.io.IOException: Non-increasing Bloom keys: 201301025200000000000003520000000000000500 after 201311195100000000000000010000000000001600 at org.apache.hadoop.hbase.regionserv

HBase中此类异常解决记录org.apache.hadoop.ipc.RemoteException(java.io.IOException):

ERROR: Can't get master address from ZooKeeper; znode data == null   一定注意这只是问题的第一层表象,真的问题是: File /hbase/.tmp/hbase.version could only be replicated to 0 nodes instead of minReplica 网上很多都是叫用两种方式解决 stop/start  重启hbase 格式化 hdfs namenode -format,不能随随便便就格

异常: http://www.ly.com/news/visa.html: java.io.IOException: unzipBestEffort returned null

nutch 运行时异常: http://www.ly.com/news/visa.html: java.io.IOException: unzipBestEffort returned null 参考:http://www.tuicool.com/articles/faUB73 此页面采用这个是一个分段传输,而nutch爬虫则默认采用了非分段式处理,导致构造GZIP时出错,从而影响了后面的GZIP解压失败. 是否是分段传输可以在Http headers里面看到,如果是分段传输则有:transfe