与java客户端的hbase连接

与java客户端的hbase连接,java,maven,hadoop,hbase,Java,Maven,Hadoop,Hbase,我有一个java程序(eclipse、Maven、windows7)来填充Hbase,它存在于一个服务的VirtualBox上, 当我从eclipse运行该程序时,它运行良好 但是当我使用Maven中的汇编插件创建了一个可执行jar并从cmd或cygwin运行它时,我得到了这个错误 > [2016-05-03 14:46:44,663][DEBUG] Reading reply sessionid:0x154769ed563000a, packet:: clientPath:null se

我有一个java程序
(eclipse、Maven、windows7)
来填充
Hbase
,它存在于一个服务的
VirtualBox
上, 当我从
eclipse
运行该程序时,它运行良好

但是当我使用
Maven
中的
汇编插件创建了一个
可执行jar
并从
cmd
cygwin
运行它时,我得到了这个错误

> [2016-05-03 14:46:44,663][DEBUG] Reading reply sessionid:0x154769ed563000a, packet:: clientPath:null serverPath:null finished:false header:: 300,4  replyHeader:: 300,3632,-101  request:: '/hbase-unsecure/meta-region-server,F  response:: [2016-05-03 14:46:44,663][DEBUG] hconnection-0x6b63f5ff-0x154769ed563000a, quorum=sandbox:2181, baseZNode=/hbase-unsecure Unable to get data of znode /hbase-unsecure/meta-region-server because node does not exist (not an error) [2016-05-03 14:46:44,663][DEBUG] Looked up meta region location, connection=org.apache.hadoop.hbase.client.ZooKeeperRegistry@695e5335; servers = null [2016-05-03 14:46:44,689][DEBUG] Closing scanner id=-1

>org.apache.hadoop.hbase.client.RetriesExhaustedException: Can't get the locations
        at org.apache.hadoop.hbase.client.RpcRetryingCallerWithReadReplicas.getRegionLocations(RpcRetryingCallerWithReadReplicas.java:312)
        at org.apache.hadoop.hbase.client.ScannerCallableWithReplicas.call(ScannerCallableWithReplicas.java:153)
        at org.apache.hadoop.hbase.client.ScannerCallableWithReplicas.call(ScannerCallableWithReplicas.java:61)
        at org.apache.hadoop.hbase.client.RpcRetryingCaller.callWithoutRetries(RpcRetryingCaller.java:200)
        at org.apache.hadoop.hbase.client.ClientScanner.call(ClientScanner.java:320)
        at org.apache.hadoop.hbase.client.ClientScanner.nextScanner(ClientScanner.java:295)
        at org.apache.hadoop.hbase.client.ClientScanner.initializeScannerInConstruction(ClientScanner.java:160)
        at org.apache.hadoop.hbase.client.ClientScanner.<init>(ClientScanner.java:155)
        at org.apache.hadoop.hbase.client.HTable.getScanner(HTable.java:811)
        at org.apache.hadoop.hbase.MetaTableAccessor.fullScan(MetaTableAccessor.java:602)
        at org.apache.hadoop.hbase.MetaTableAccessor.tableExists(MetaTableAccessor.java:366)
        at org.apache.hadoop.hbase.client.HBaseAdmin.tableExists(HBaseAdmin.java:303)
        at org.apache.hadoop.hbase.client.HBaseAdmin.tableExists(HBaseAdmin.java:313)
[2016-05-03 14:46:44663][DEBUG]阅读回复会话ID:0x154769ed563000a,数据包::clientPath:null服务器路径:null完成:假头::300,4回复头::3003632,-101请求:'/hbase不安全/元区域服务器,F响应::[2016-05-03 14:46:44663][DEBUG]hconnection 0x6b63f5ff-0x154769ed563000a,quorum=sandbox:2181,baseZNode=/hbase unsecure无法获取znode/hbase unsecure/meta region服务器的数据,因为节点不存在(不是错误)[2016-05-03 14:46:44663][DEBUG]查找了meta region位置,connection=org.apache.hadoop.hbase.client。ZooKeeperRegistry@695e5335; servers=null[2016-05-03 14:46:44689][DEBUG]正在关闭扫描程序id=-1
>org.apache.hadoop.hbase.client.retriesHaustedException:无法获取位置
位于org.apache.hadoop.hbase.client.rpcretryingcallerwithreadreplications.getRegionLocations(rpcretryingcallerwithreadreplications.java:312)
位于org.apache.hadoop.hbase.client.scannercallablewithreplications.call(scannercallablewithreplications.java:153)
位于org.apache.hadoop.hbase.client.scannercallablewithreplications.call(scannercallablewithreplications.java:61)
位于org.apache.hadoop.hbase.client.RpcRetryingCaller.callWithoutRetries(RpcRetryingCaller.java:200)
位于org.apache.hadoop.hbase.client.ClientScanner.call(ClientScanner.java:320)
位于org.apache.hadoop.hbase.client.ClientScanner.nextScanner(ClientScanner.java:295)
位于org.apache.hadoop.hbase.client.ClientScanner.initializeScannerInConstruction(ClientScanner.java:160)
位于org.apache.hadoop.hbase.client.ClientScanner.(ClientScanner.java:155)
位于org.apache.hadoop.hbase.client.HTable.getScanner(HTable.java:811)
位于org.apache.hadoop.hbase.MetaTableAccessor.fullScan(MetaTableAccessor.java:602)
位于org.apache.hadoop.hbase.MetaTableAccessor.tableExists(MetaTableAccessor.java:366)
位于org.apache.hadoop.hbase.client.HBaseAdmin.tableExists(HBaseAdmin.java:303)
位于org.apache.hadoop.hbase.client.HBaseAdmin.tableExists(HBaseAdmin.java:313)

你们谁能帮我一下吗?

下面的一些信息可能会有帮助。在具有“hbase”命令的virtualbox中运行这些命令

连接后,可以在zkcli提示符下运行:

ls /
请粘贴上述命令的输出。“/hbase unsecure”的baseZnode似乎不存在。一般来说,碱基znode为“/hbase”

请按照@RamPrasadG的建议,用java代码交叉检查正在运行的程序的类路径

System.out.println(System.getProperty("java.classpath"))

下面的一些信息可能会有所帮助。在具有“hbase”命令的virtualbox中运行这些命令

连接后,可以在zkcli提示符下运行:

ls /
请粘贴上述命令的输出。“/hbase unsecure”的baseZnode似乎不存在。一般来说,碱基znode为“/hbase”

请按照@RamPrasadG的建议,用java代码交叉检查正在运行的程序的类路径

System.out.println(System.getProperty("java.classpath"))

需要更多的代码片段才能正确猜测。此外,作为独立jar(如-cp)执行时,需要交叉检查eclipse.classspath文件项与类路径项。似乎已建立Hbase连接。但是扫描结果时会引发异常,不是吗?谢谢你的回复@RamPrasadG,我想问题是我在
eclipse
中使用
MapReduce位置插件
,当我创建
JAR
时,我没有做任何特别的事情,你认为这就是问题所在吗?我不认为mapreduce位置插件是问题所在。我已经执行了很多次hbase独立程序,但我没有使用过这样的插件。类路径中有hbase-site.xml之类的内容。。正如我前面所说的,您需要交叉检查类路径条目,正如您所提到的,在eclipse中,如果我在
jar
中正确设置了主类,那么你的意思是交叉检查类路径条目吗?请在成功运行Vs jar时检查eclipse.class路径文件-classpath条目选项需要更多代码片段才能正确猜测。此外,作为独立jar(如-cp)执行时,需要交叉检查eclipse.classspath文件项与类路径项。似乎已建立Hbase连接。但是扫描结果时会引发异常,不是吗?谢谢你的回复@RamPrasadG,我想问题是我在
eclipse
中使用
MapReduce位置插件
,当我创建
JAR
时,我没有做任何特别的事情,你认为这就是问题所在吗?我不认为mapreduce位置插件是问题所在。我已经执行了很多次hbase独立程序,但我没有使用过这样的插件。类路径中有hbase-site.xml之类的内容。。正如我前面所说的,您需要交叉检查类路径条目,正如您所提到的,在eclipse中,它在工作,而从独立的jar它不是。@RamPrasadG你的意思是
交叉检查类路径条目
如果我在
jar
中正确设置了主类,请在成功运行Vs jar时检查eclipse.class路径文件-类路径条目选项谢谢你的回答,我刚刚重新启动了
Hbase
服务,一切都很顺利,我接受了你的回答,因为你给了我线索:)@omar:你说“当我从eclipse运行程序时,它运行得很好。”如果Hbase zookeeper