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.

Reply via email to