Hi, We're building an analytics server with HBase using Jetty. I have experimented with the Thrift API + PHP over the past few days and got it working, but needed the filter functionality which has not been released yet. So I decided to switch to the Java API and run it with a Jetty server.
My Jetty server is setup on crunch2.in.escapemg.com:8888. Hbase is setup on the same machine, with all the configuration settings according to the "Getting Started" guide. We are using Hbase version 0.20.1. Just doing a quick scanning test with this code: HBaseConfiguration config = new HBaseConfiguration(); HTable table = new HTable(config, "Guts"); Scan s = new Scan(); s.addColumn(Bytes.toBytes("user:"),Bytes.toBytes("theme")); ResultScanner scanner = table.getScanner(s); int count = 0; int limit = 10; try { for (Result rr = scanner.next(); rr != null; rr = scanner.next()) { if (count <= limit) { response.getOutputStream().write( rr.getRow() ); count++; } } } finally { scanner.close(); } I get this error, which states (I think) that the HBase is throwing a connection error: [exec] 14:56:14,197 DEBUG [24109...@qtp-15206466-0,Configuration] java.io.IOException: config() [exec] at org.apache.hadoop.conf.Configuration.<init>(Configuration.java:210) [exec] at org.apache.hadoop.conf.Configuration.<init>(Configuration.java:197) [exec] at org.apache.hadoop.hbase.HBaseConfiguration.<init>(HBaseConfiguration.java:33) [exec] at com.grooveshark.HBaseHandler.handle(HBaseHandler.java:25) [exec] at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152) [exec] at org.mortbay.jetty.Server.handle(Server.java:326) [exec] at org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:536) [exec] at org.mortbay.jetty.HttpConnection$RequestHandler.headerComplete(HttpConnection.java:913) [exec] at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:539) [exec] at org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:212) [exec] at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:405) [exec] at org.mortbay.jetty.bio.SocketConnector$Connection.run(SocketConnector.java:228) [exec] at org.mortbay.thread.QueuedThreadPool$PoolThread.run(QueuedThreadPool.java:582) [exec] [exec] 2010-01-20 14:56:14.697::WARN: / [exec] java.lang.NoClassDefFoundError: org/apache/zookeeper/Watcher [exec] at java.lang.ClassLoader.defineClass1(Native Method) [exec] at java.lang.ClassLoader.defineClass(ClassLoader.java:621) [exec] at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:124) [exec] at java.net.URLClassLoader.defineClass(URLClassLoader.java:260) [exec] at java.net.URLClassLoader.access$000(URLClassLoader.java:56) [exec] at java.net.URLClassLoader$1.run(URLClassLoader.java:195) [exec] at java.security.AccessController.doPrivileged(Native Method) [exec] at java.net.URLClassLoader.findClass(URLClassLoader.java:188) [exec] at java.lang.ClassLoader.loadClass(ClassLoader.java:307) [exec] at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301) [exec] at java.lang.ClassLoader.loadClass(ClassLoader.java:252) [exec] at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:320) [exec] at org.apache.hadoop.hbase.client.HConnectionManager.getClientZooKeeperWatcher(HConnectionManager.java:151) [exec] at org.apache.hadoop.hbase.client.HConnectionManager$TableServers.getZooKeeperWrapper(HConnectionManager.java:885) [exec] at org.apache.hadoop.hbase.client.HConnectionManager$TableServers.locateRootRegion(HConnectionManager.java:901) [exec] at org.apache.hadoop.hbase.client.HConnectionManager$TableServers.locateRegion(HConnectionManager.java:580) [exec] at org.apache.hadoop.hbase.client.HConnectionManager$TableServers.locateRegion(HConnectionManager.java:556) [exec] at org.apache.hadoop.hbase.client.HConnectionManager$TableServers.locateRegionInMeta(HConnectionManager.java:630) [exec] at org.apache.hadoop.hbase.client.HConnectionManager$TableServers.locateRegion(HConnectionManager.java:589) [exec] at org.apache.hadoop.hbase.client.HConnectionManager$TableServers.locateRegion(HConnectionManager.java:556) [exec] at org.apache.hadoop.hbase.client.HConnectionManager$TableServers.locateRegionInMeta(HConnectionManager.java:630) [exec] at org.apache.hadoop.hbase.client.HConnectionManager$TableServers.locateRegion(HConnectionManager.java:593) [exec] at org.apache.hadoop.hbase.client.HConnectionManager$TableServers.locateRegion(HConnectionManager.java:556) [exec] at org.apache.hadoop.hbase.client.HTable.<init>(HTable.java:127) [exec] at org.apache.hadoop.hbase.client.HTable.<init>(HTable.java:105) [exec] at com.grooveshark.HBaseHandler.handle(HBaseHandler.java:27) [exec] at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152) [exec] at org.mortbay.jetty.Server.handle(Server.java:326) [exec] at org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:536) [exec] at org.mortbay.jetty.HttpConnection$RequestHandler.headerComplete(HttpConnection.java:913) [exec] at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:539) [exec] at org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:212) [exec] at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:405) [exec] at org.mortbay.jetty.bio.SocketConnector$Connection.run(SocketConnector.java:228) [exec] at org.mortbay.thread.QueuedThreadPool$PoolThread.run(QueuedThreadPool.java:582) [exec] Caused by: java.lang.ClassNotFoundException: org.apache.zookeeper.Watcher [exec] at java.net.URLClassLoader$1.run(URLClassLoader.java:200) [exec] at java.security.AccessController.doPrivileged(Native Method) [exec] at java.net.URLClassLoader.findClass(URLClassLoader.java:188) [exec] at java.lang.ClassLoader.loadClass(ClassLoader.java:307) [exec] at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301) [exec] at java.lang.ClassLoader.loadClass(ClassLoader.java:252) [exec] at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:320) [exec] ... 35 more After doing a mailing list search, it seemed that other configuration problems were fixed by upgrading to 0.20.2 which I have not yet done. Is this the problem or is there something simple I am overlooking? I have also added my hbase-site.xml and hbase-default.xml to my lib and conf directories to my working classpath. I am confused because I was able to connect via thrift, and I also have a BulkImporter MapReduce script to load the logging data into HBase that works fine, but have been unable to locate my error in this case.