I am attempting to connect to Phoenix via SquirrelSQL and not having much luck. I am using Phoenix-3.0 on Hbase with CDH4.3.0 (Hbase 0.96.4-cdh4.3.0), and SquirrelSQL 3.5.3. Our Hbase environment is protected with Kerberos.
I have modified the sqlline script to include the correct libraries and modifications to the Java command, and that is working fine. Here is what I am doing to try and get SquirrelSQL working. I have tried on both a Mac and Linux system. I start up off kinit'ing prior to starting SquirrelSQL. 1) Copy hbase-site.xml and core-site.xml to lib directory of SquirrelSQL 2) Open SquirrelSQL->Drivers->Add New 3) I add phoenix-3.0.0-incubating-client-minimal.jar, all of its dependancies, hadoop-common, hadoop-auth and the hbase-security jar from CDH distribution to the extra class path 4) List Drivers and select the Phoenix driver. Adding the driver at this point succeeds without error. I then proceed to setup the connection and click test, it will hang for a minute and then gives me the following stack trace. java.util.concurrent.ExecutionException: java.lang.RuntimeException: java.lang.RuntimeException: java.lang.ClassNotFoundException: Class org.apache.hadoop.hbase.ipc.SecureRpcEngine not found at java.util.concurrent.FutureTask.report(FutureTask.java:122) at java.util.concurrent.FutureTask.get(FutureTask.java:202) at net.sourceforge.squirrel_sql.client.mainframe.action.OpenConnectionCommand.awaitConnection(OpenConnectionCommand.java:132) at net.sourceforge.squirrel_sql.client.mainframe.action.OpenConnectionCommand.access$100(OpenConnectionCommand.java:45) at net.sourceforge.squirrel_sql.client.mainframe.action.OpenConnectionCommand$2.run(OpenConnectionCommand.java:115) at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471) at java.util.concurrent.FutureTask.run(FutureTask.java:262) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) at java.lang.Thread.run(Thread.java:744) Caused by: java.lang.RuntimeException: java.lang.RuntimeException: java.lang.ClassNotFoundException: Class org.apache.hadoop.hbase.ipc.SecureRpcEngine not found at net.sourceforge.squirrel_sql.client.mainframe.action.OpenConnectionCommand.executeConnect(OpenConnectionCommand.java:175) at net.sourceforge.squirrel_sql.client.mainframe.action.OpenConnectionCommand.access$000(OpenConnectionCommand.java:45) at net.sourceforge.squirrel_sql.client.mainframe.action.OpenConnectionCommand$1.run(OpenConnectionCommand.java:104) ... 5 more Caused by: java.lang.RuntimeException: java.lang.ClassNotFoundException: Class org.apache.hadoop.hbase.ipc.SecureRpcEngine not found at org.apache.hadoop.conf.Configuration.getClass(Configuration.java:1587) at org.apache.hadoop.hbase.ipc.HBaseRPC.getProtocolEngine(HBaseRPC.java:99) at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.ensureZookeeperTrackers(HConnectionManager.java:629) at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.getMaster(HConnectionManager.java:684) at org.apache.hadoop.hbase.client.HBaseAdmin.<init>(HBaseAdmin.java:126) at org.apache.phoenix.query.ConnectionQueryServicesImpl.ensureTableCreated(ConnectionQueryServicesImpl.java:739) at org.apache.phoenix.query.ConnectionQueryServicesImpl.createTable(ConnectionQueryServicesImpl.java:1021) at org.apache.phoenix.schema.MetaDataClient.createTableInternal(MetaDataClient.java:1156) at org.apache.phoenix.schema.MetaDataClient.createTable(MetaDataClient.java:422) at org.apache.phoenix.compile.CreateTableCompiler$2.execute(CreateTableCompiler.java:183) at org.apache.phoenix.jdbc.PhoenixStatement.executeMutation(PhoenixStatement.java:226) at org.apache.phoenix.jdbc.PhoenixStatement.executeUpdate(PhoenixStatement.java:908) at org.apache.phoenix.query.ConnectionQueryServicesImpl.init(ConnectionQueryServicesImpl.java:1351) at org.apache.phoenix.jdbc.PhoenixDriver.getConnectionQueryServices(PhoenixDriver.java:131) at org.apache.phoenix.jdbc.PhoenixEmbeddedDriver.connect(PhoenixEmbeddedDriver.java:112) at net.sourceforge.squirrel_sql.fw.sql.SQLDriverManager.getConnection(SQLDriverManager.java:133) at net.sourceforge.squirrel_sql.client.mainframe.action.OpenConnectionCommand.executeConnect(OpenConnectionCommand.java:167) ... 7 more Caused by: java.lang.ClassNotFoundException: Class org.apache.hadoop.hbase.ipc.SecureRpcEngine not found at org.apache.hadoop.conf.Configuration.getClassByName(Configuration.java:1493) at org.apache.hadoop.conf.Configuration.getClass(Configuration.java:1585) ... 23 more FYI, I have also tried to include the hadoop, hbase and phoenix jar's in the lib directory of SquirrelSQL itself, however when adding the driver and selecting List Drivers SquirrelSQL just hangs forever. Any help or insight would be greatly appreciated. The one thing I am not sure about is the Kerberos integration, and wether or not I will need to wait or include PHOENIX-19. However this patch appears to be for passing the principal and keytab to the driver, not using a ticket cache. I also don't think that is my problem right now, as it does not appear to be getting far enough to authenticate at this point. Thanks Justin
