I'm running a pseudo-distributed (for the moment) Hadoop server with
HBase on the same server running with 1 master and 1 region. HBase is
successfully talking to HDFS, has created the hbase directory, etc. In
addition, the master/region server are talking just fine. When I try
to connect with the HBase client, I see the following client-side
error:
java.io.IOException: java.io.IOException: Unknown protocol to name
node: org.apache.hadoop.hbase.ipc.TransactionalRegionInterface
at
org.apache.hadoop.hbase.regionserver.HRegionServer.getProtocolVersion(HRegionServer.java:2140)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.apache.hadoop.hbase.ipc.HBaseRPC$Server.call(HBaseRPC.java:632)
at org.apache.hadoop.hbase.ipc.HBaseServer$Handler.run(HBaseServer.java:895)
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
at java.lang.reflect.Constructor.newInstance(Unknown Source)
at
org.apache.hadoop.hbase.RemoteExceptionHandler.decodeRemoteException(RemoteExceptionHandler.java:95)
at
org.apache.hadoop.hbase.client.HConnectionManager$TableServers.getHRegionConnection(HConnectionManager.java:729)
at
org.apache.hadoop.hbase.client.HConnectionManager$TableServers.locateRootRegion(HConnectionManager.java:773)
at
org.apache.hadoop.hbase.client.HConnectionManager$TableServers.locateRegion(HConnectionManager.java:448)
at
org.apache.hadoop.hbase.client.HConnectionManager$TableServers.locateRegion(HConnectionManager.java:423)
at
org.apache.hadoop.hbase.client.HConnectionManager$TableServers.locateRegionInMeta(HConnectionManager.java:498)
at
org.apache.hadoop.hbase.client.HConnectionManager$TableServers.locateRegion(HConnectionManager.java:457)
at
org.apache.hadoop.hbase.client.HConnectionManager$TableServers.relocateRegion(HConnectionManager.java:430)
at
org.apache.hadoop.hbase.client.HConnectionManager$TableServers.getRegionLocation(HConnectionManager.java:289)
at
org.apache.hadoop.hbase.client.ServerCallable.instantiateServer(ServerCallable.java:57)
at
org.apache.hadoop.hbase.client.ScannerCallable.instantiateServer(ScannerCallable.java:66)
at
org.apache.hadoop.hbase.client.HConnectionManager$TableServers.getRegionServerWithRetries(HConnectionManager.java:827)
at org.apache.hadoop.hbase.client.MetaScanner.metaScan(MetaScanner.java:56)
at org.apache.hadoop.hbase.client.MetaScanner.metaScan(MetaScanner.java:30)
at
org.apache.hadoop.hbase.client.HConnectionManager$TableServers.listTables(HConnectionManager.java:311)
at
org.apache.hadoop.hbase.client.HConnectionManager$TableServers.tableExists(HConnectionManager.java:264)
at
org.apache.hadoop.hbase.client.HBaseAdmin.tableExists(HBaseAdmin.java:108)
at
org.apache.jackrabbit.hadoop.HBasePersistenceManager.init(HBasePersistenceManager.java:104)
at
org.apache.jackrabbit.core.RepositoryImpl.createPersistenceManager(RepositoryImpl.java:1339)
...
2009-03-15 11:54:06,387 DEBUG stacks[main]
org.apache.hadoop.hbase.ipc.HBaseClient$Connection.sendParam(HBaseClient.java:466):
IPC Client (47) connection to /10.10.115.21:60000 from an unknown user
sending #32
2009-03-15 11:54:06,409 DEBUG stacks[IPC Client (47) connection to
/10.10.115.21:60000 from an unknown user]
org.apache.hadoop.hbase.ipc.HBaseClient$Connection.receiveResponse(HBaseClient.java:501):
IPC Client (47) connection to /10.10.115.21:60000 from an unknown user
got value #32
On the server side, I see:
2009-03-15 11:54:05,278 INFO org.apache.hadoop.ipc.HBaseServer: IPC
Server handler 7 on 60020, call
getProtocolVersion(org.apache.hadoop.hbase.ipc.TransactionalRegionInterface,
15) from 10.178.0.52:64001: error: java.io.IOException: Unknown
protocol to name node:
org.apache.hadoop.hbase.ipc.TransactionalRegionInterface
java.io.IOException: Unknown protocol to name node:
org.apache.hadoop.hbase.ipc.TransactionalRegionInterface
at
org.apache.hadoop.hbase.regionserver.HRegionServer.getProtocolVersion(HRegionServer.java:2140)
at sun.reflect.GeneratedMethodAccessor3.invoke(Unknown Source)
at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.apache.hadoop.hbase.ipc.HBaseRPC$Server.call(HBaseRPC.java:632)
at
org.apache.hadoop.hbase.ipc.HBaseServer$Handler.run(HBaseServer.java:895)
I'm using Hadoop 0.19.1 with HBase 0.19.0. It was hard to debug to see
why it is sending the subinterface name instead of the interface name
(HRegionInterface), so I can't tell if it is a bug on my end, HBase's
end or something in between. Any help would be appreciated!