从Tomcat 6 Servlet远程连接到Hbase

从Tomcat 6 Servlet远程连接到Hbase,tomcat,hadoop,amazon-ec2,hbase,Tomcat,Hadoop,Amazon Ec2,Hbase,我不是Hbase方面的专家,一直在浏览Hbase远程连接的线程,但运气不好 我在EC2实例(Ubuntu 10.4)上运行Hbase/Hadoop单集群。我还在另一个EC2实例中的tomcat6服务器上运行servlet。该计划是让servlet写入和读取远程Hbase实例。servlet正在运行带有一些java例程的contextlistener(ServletContextListener) 现在,如果我将java例程作为可运行的jar而不是servlet运行,那么一切都很好。它连接到Hba

我不是Hbase方面的专家,一直在浏览Hbase远程连接的线程,但运气不好

我在EC2实例(Ubuntu 10.4)上运行Hbase/Hadoop单集群。我还在另一个EC2实例中的tomcat6服务器上运行servlet。该计划是让servlet写入和读取远程Hbase实例。servlet正在运行带有一些java例程的contextlistener(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
<代码> 2012-10-01 11:11:40751 [ Timer-4]信息COM.MyApp.Fuff.Access .HbaseDebug初始化(…)-初始化HbaseHunter配置… 2012-10-01 11:11:40763[Timer-4]调试org.apache.hadoop.conf.Configuration(..)-java.io.IOException:config() 位于org.apache.hadoop.conf.Configuration(Configuration.java:211) 位于org.apache.hadoop.conf.Configuration(Configuration.java:198) 位于org.apache.hadoop.hbase.HBaseConfiguration.(HBaseConfiguration.java:33) 在COM.MyApp.Fun.Access .HbasHuttRel.IrrimeIe(HbaseDealer-java:507) 在COM.MyApp.Fun.Access .HbasHutter中。(HbaseDealer-java:53) 在COM.MyApp.Fun.Access .HbasHuttHelt.GeExt实例(HbaseDealer-java):500) 在com。MyAPP。基金会。HBASE. StutabReWOW(Sturabrou.java:40) 在COM.MyApp.Frase.Sturtual.Trest.TrutoTHBASE(To.java:257) 位于com.myApp.task.impl.HBaseArticlePersisterTask.process(HBaseArticlePersisterTask.java:101) 在COM.MyApp.Fask.Teal. QuealTeaseQuePrimeTebug(QuealTeask.java 101) 位于com.myApp.runner.impl.HBasePersisterRunner$1.run(HBasePersisterRunner.java:46) 位于java.util.TimerThread.mainLoop(Timer.java:512) 在java.util.TimerThread.run(Timer.java:462) 2012-10-11:11:40803[Timer-4]信息COM.MyApp.Fuff.Access .HbaseDebug初始化(…)-CONFIG资源ZooKeEP.QuRUM:IP-10-10-10-EU-West-1计算机内部 2012-10-11:11:40803[Timer-4]信息COM.MyApp.Fuff.Access .HbaseDebug初始化(…)-CONFIG资源ZooKeEP.CclitPoto: 2181 2012-10-11:11:40804[Timer-4]信息COM.MyApp.Fuff.Access .HbaseDebug初始化(…)-CONFIG资源Hbas.Mask.Ifo.Po.: 60010 2012-10-11:11:40804[Timer-4]信息COM.MyApp.Fuff.Access .HbaseDebug初始化(…)-CONFIG资源Hbas.Mask.Ifo.bdNoto:IP-10-10-10-EU-West-1计算机内部 我可以远程登录HBase实例。在servlet中,我包含了hbase-site.xml。但是,正如您从日志中看到的,zookkeeper.quorum与端口号一起被提取。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
有些事情告诉我tomcat6策略配置是罪魁祸首。但我在卡塔琳娜的日志里什么也没看到。是否有我丢失的其他日志,或者可以引导我找到正确的日志

有人经历过同样的问题吗


非常感谢。

更新:我用更新版本的Ubuntu12.0在ec2实例上部署了servlet,它成功了。我的旧实例(不工作的实例)正在运行9.10。这对任何人都有意义吗?谢天谢地,似乎是Tomcat6安全经理才是罪魁祸首。在logging.properties中启用了Tomcat“精细”日志记录级别。这暴露了java.lang.RuntimePermission“shutdownHooks”的访问权限异常。这反过来又暴露了其他所需的权限: