尝试仅远程连接hbase时,相同的代码在本地工作:
这是一个程序:
public static void main(String[] args) throws IOException {
HBaseConfiguration hconfig = new HBaseConfiguration(new Configuration());
hconfig.set("hbase.zookeeper.quorum", "192.168.*.***");
hconfig.set("hbase.master", "192.168.*.***:60000");
hconfig.set("hbase.zookeeper.property.clientPort","2181");
HTableDescriptor htable = new HTableDescriptor("User");
htable.addFamily( new HColumnDescriptor("Id"));
htable.addFamily( new HColumnDescriptor("Name"));
System.out.println( "Connecting..." );
HBaseAdmin hbase_admin = new HBaseAdmin( hconfig );
System.out.println( "Creating Table..." );
hbase_admin.createTable( htable );
System.out.println("Done!");
}
在这行之后抛出一个错误:
HBaseAdmin hbase_admin = new HBaseAdmin( hconfig );
错误:
15/10/06 11:22:05 INFO zookeeper.ClientCnxn: Session establishment complete on server quickstart.cloudera/192.168.*.***:2181, sessionid = 0x1503670c5dc00b5, negotiated timeout = 60000
Creating Table...
15/10/06 11:23:02 INFO client.RpcRetryingCaller: Call exception, tries=10, retries=35, started=57048 ms ago, cancelled=false, msg=
15/10/06 11:23:23 INFO client.RpcRetryingCaller: Call exception, tries=11, retries=35, started=78252 ms ago, cancelled=false, msg=
这些是我的jar文件:
commons-configuration-1.6.jar
commons-lang-2.5.jar
commons-logging-1.1.1.jar
hadoop-core-1.0.0.jar
hadoop-common-1.0.0.jar
hbase-server-1.0.0-cdh5.4.2.jar
hbase-client-1.0.0-cdh5.4.2.jar
hbase-0.92.0.jar log4j-1.2.16.jar
slf4j-api-1.5.8.jar
slf4j-log4j12-1.5.8.jar
zookeeper-3.4.2.jar
并包含位于hadoop路径中的所有jar文件 /usr/lib/hbase/lib/
我已经将hbase-site.xml文件复制到我的项目中,还将远程ip地址添加到etc/host文件中。
在远程hbase中创建一个新表并尝试使用java客户机从hbase获取表列表时,我遇到了一些问题!
但是使用相同的jar文件,我可以做更多的操作,比如get、put和其他一些操作,除了创建表和列表表之外!
请帮我个忙。
3条答案
按热度按时间8ulbf1ek1#
既然您能够执行put和get,就不应该是jar问题。你能尝试添加这个属性吗
zookeeper.znode.parent
hbase config中的值为“/hbase unsecure”。它是根znode,将包含hbase创建/使用的所有znode。在zookeeper客户端jar中,该值是“/hbase”。将其与配置xml文件进行比较。你可以看看这里3htmauhk2#
在pom.xml文件中添加以下依赖项
不要单独设置hbase配置详细信息,而是将hbase-site.xml和core-site.xml作为资源添加到
Configuration
对象并使用它一旦有了配置对象,就创建
Connection
然后得到Admin
对象然后可以使用以下代码段创建hbase表以及列族。
有关更多详细信息,请参阅
对于工作代码示例,您可以参考以下内容
kokeuurv3#
我也有类似的问题。我通过在hbase节点中打开以下端口修复了此问题:
60000
60010
60020
9090
在centos 7中:
更多信息请点击此处