我不是 Hbase 专家,并且一直在研究 Hbase 远程连接的线程,但没有运气。
我在 EC2 实例(Ubuntu 10.4)上运行 Hbase/Hadoop 单集群。我还在另一个 ec 2 实例中的 tomcat6 服务器上运行 servlet。该计划是让 servlet 写入和读取远程 Hbase 实例。servlet 正在运行带有一些 java 例程 (ServletContextListener) 的上下文侦听器。
现在,如果我将 java 例程作为可运行的 jar 而不是 servlet 运行,一切都很好。它连接到 Hbase 并从表中写入/读取。但是在 tomcat6 上,它只是在尝试连接到 Hbase 实例时冻结。
2012-10-01 11:11:40,751 [Timer-4] INFO com.myApp.foundation.access.HBaseHandler initialise(..) - Initialisation HbaseHandler configuration ...
2012-10-01 11:11:40,763 [Timer-4] DEBUG org.apache.hadoop.conf.Configuration <init>(..) - java.io.IOException: config()
at org.apache.hadoop.conf.Configuration.<init>(Configuration.java:211)
at org.apache.hadoop.conf.Configuration.<init>(Configuration.java:198)
at org.apache.hadoop.hbase.HBaseConfiguration.<init>(HBaseConfiguration.java:33)
at com.myApp.foundation.access.HBaseHandler.initialise(HBaseHandler.java:507)
at com.myApp.foundation.access.HBaseHandler.<init>(HBaseHandler.java:53)
at com.myApp.foundation.access.HBaseHandler.getInstance(HBaseHandler.java:500)
at com.myApp.foundation.hbase.StorableRow.<clinit>(StorableRow.java:40)
at com.myApp.foundation.entities.Article.storeToHbase(Article.java:257)
at com.myApp.task.impl.HBaseArticlePersisterTask.process(HBaseArticlePersisterTask.java:101)
at com.myApp.foundation.task.QueueTask.performTask(QueueTask.java:101)
at com.myApp.runner.impl.HBasePersisterRunner$1.run(HBasePersisterRunner.java:46)
at java.util.TimerThread.mainLoop(Timer.java:512)
at java.util.TimerThread.run(Timer.java:462)
2012-10-01 11:11:40,803 [Timer-4] INFO com.myApp.foundation.access.HBaseHandler initialise(..) - Config resource zookeeper.quorum: ip-10-10-10-10.eu-west-1.compute.internal
2012-10-01 11:11:40,803 [Timer-4] INFO com.myApp.foundation.access.HBaseHandler initialise(..) - Config resource zookeeper.clientPort: 2181
2012-10-01 11:11:40,804 [Timer-4] INFO com.myApp.foundation.access.HBaseHandler initialise(..) - Config resource hbase.master.info.port: 60010
2012-10-01 11:11:40,804 [Timer-4] INFO com.myApp.foundation.access.HBaseHandler initialise(..) - Config resource hbase.master.info.bindAddress: ip-10-10-10-10.eu-west-1.compute.internal
我可以远程登录 HBase 实例。在 servlet 中,我包含了 hbase-site.xml。但正如您从日志中看到的那样,zookkeeper.quorum 和端口号都被获取了。所有必要的端口都在 Hbase 实例上打开。
有些东西告诉我 tomcat6 策略配置是罪魁祸首。但我在 catalina 日志中看不到任何内容。有没有我遗漏的其他日志或可以引导我找到正确的日志?
有人遇到过同样的问题吗?
提前谢谢了。