繁体   English   中英

无法通过Java连接到Hbase

[英]Unable to Connect to Hbase through Java

我正在尝试从Java连接到Hbase。 Hbase -Version 1.0.0但我无法连接它。 请告诉我我刚加入Hbase时缺少的东西。 这是我的代码

public class HbaseAddRetrieveData{
    public static void main(String[] args) throws IOException {
        TableName tableName = TableName.valueOf("stock-prices");


    Configuration conf = HBaseConfiguration.create();
    conf.set("hbase.master","LocalHost:60000");
    conf.set("hbase.zookeeper.property.clientPort", "2181");
    conf.set("hbase.zookeeper.quorum", "LocalHost");
    conf.set("zookeeper.znode.parent", "/hbase-unsecure");
    System.out.println("Config set");
    Connection conn = ConnectionFactory.createConnection(conf);
    System.out.println("Connection");
    Admin admin = conn.getAdmin();
    if (!admin.tableExists(tableName)) {
        System.out.println("In admin");
        admin.createTable(new HTableDescriptor(tableName).addFamily(new HColumnDescriptor("cf")));
    }

    Table table = conn.getTable(tableName);
    Put p = new Put(Bytes.toBytes("AAPL10232015"));
    p.addColumn(Bytes.toBytes("cf"), Bytes.toBytes("close"), Bytes.toBytes(119));
    table.put(p);

    Result r = table.get(new Get(Bytes.toBytes("AAPL10232015")));
    System.out.println(r);
}

以下是我面临的错误:

Exception in thread "main" org.apache.hadoop.hbase.client.RetriesExhaustedException: Can't get the locations
at org.apache.hadoop.hbase.client.RpcRetryingCallerWithReadReplicas.getRegionLocations(RpcRetryingCallerWithReadReplicas.java:305)
at org.apache.hadoop.hbase.client.ScannerCallableWithReplicas.call(ScannerCallableWithReplicas.java:131)
at org.apache.hadoop.hbase.client.ScannerCallableWithReplicas.call(ScannerCallableWithReplicas.java:56)
at org.apache.hadoop.hbase.client.RpcRetryingCaller.callWithoutRetries(RpcRetryingCaller.java:200)
at org.apache.hadoop.hbase.client.ClientScanner.call(ClientScanner.java:287)
at org.apache.hadoop.hbase.client.ClientScanner.nextScanner(ClientScanner.java:267)
at org.apache.hadoop.hbase.client.ClientScanner.initializeScannerInConstruction(ClientScanner.java:139)
at org.apache.hadoop.hbase.client.ClientScanner.<init>(ClientScanner.java:134)
at org.apache.hadoop.hbase.client.HTable.getScanner(HTable.java:823)
at org.apache.hadoop.hbase.MetaTableAccessor.fullScan(MetaTableAccessor.java:601)
at org.apache.hadoop.hbase.MetaTableAccessor.tableExists(MetaTableAccessor.java:365)
at org.apache.hadoop.hbase.client.HBaseAdmin.tableExists(HBaseAdmin.java:281)
at com.tcs.healthcare.HbaseRetrieveData.main(HbaseRetrieveData.java:32)

请通过这个指导我

改变L在本地主机l和“H”为“h”的

Configuration conf = HBaseConfiguration.create();
    conf.set("hbase.master","localhost:60000");
    conf.set("hbase.zookeeper.property.clientPort", "2181");
    conf.set("hbase.zookeeper.quorum", "localhost");
    conf.set("zookeeper.znode.parent", "/hbase-unsecure");

如果使用的是远程计算机,则使用conf.set(“ hbase.master”,“ remotehost:60000”); 即使它不起作用,也请检查类路径中的所有jar(远程)

如果您正在使用Maven,则可以指向群集中存在的jar。

您可以转到集群并检查以下命令以了解远程计算机中存在的jar版本。

`hbase classpath`

客户端计算机中应该有相同版本的jar。 对于远程计算机中的hbasex.jar,如果您正在使用hbasey.jar,则它将无法连接。

此外,请从客户端计算机检查您是否可以ping服务器/群集。 通常会有防火墙限制。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM