从Tomcat 6 Servlet远程连接到Hbase
我不是Hbase方面的专家,一直在浏览Hbase远程连接的线程,但运气不好 我在EC2实例(Ubuntu 10.4)上运行Hbase/Hadoop单集群。我还在另一个EC2实例中的tomcat6服务器上运行servlet。该计划是让servlet写入和读取远程Hbase实例。servlet正在运行带有一些java例程的contextlistener(ServletContextListener) 现在,如果我将java例程作为可运行的jar而不是servlet运行,那么一切都很好。它连接到Hbase并从表中写入/读取。但在tomcat6上,它只是在尝试连接到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
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”的访问权限异常。这反过来又暴露了其他所需的权限: