有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

如何使用Java库(org.apache.hadoop.Hbase.client)从不同的网络连接Hbase?

我有一个使用内部网络的Hadoop集群(ip范围是192.168.0.0/24),我想使用java库(org.apache.Hadoop.hbase.client)连接hbase 从Windows 7上使用不同网络的开发计算机(ip超出网络203.252.x.x),但我无法连接hbase

我有个问题

  1. 我的代码错了吗

  2. 可以使用Java库(org.apache.hadoop.hbase.client)吗?我应该使用thrift协议吗?(我不想节俭)

你知道吗?还是评论

多谢各位

这是我连接Hbase的代码


 public class TestBase {
     public static void main(String[] args) throws MasterNotRunningException, ZooKeeperConnectionException, ServiceException, IOException {

    Configuration configuration = HBaseConfiguration.create();

    configuration.set("hbase.master", "203.252.x.x"); // master info
    configuration.set("hbase.master.port", "6000");
    configuration.set("hbase.zookeeper.quorum", "203.252.x.x");
    configuration.set("hbase.zookeeper.property.clientPort", "2181");
    configuration.set("zookeeper.znode.parent", "/hbase-unsecure"); 

    HBaseAdmin.checkHBaseAvailable(configuration);

    HTable table = null;
    table = new HTable(configuration, "weatherData");

    Scan scan = new Scan();

    scan.setTimeRange(1L, 1435633313526L);
    ResultScanner scanner = null;
    scanner = table.getScanner(scan);

    for (Result rr = scanner.next(); rr != null; rr = scanner.next()) {
        System.out.println(Bytes.toString(rr.getRow())
                + " => "
                + Bytes.toString(rr.getValue(Bytes.toBytes("temp"),
                        Bytes.toBytes("max"))));
    }
       table.close();
       scanner.close();
    }
}

这就是Eclipse中的错误代码

log4j:WARN No appenders could be found for logger (org.apache.hadoop.metrics2.lib.MutableMetricsFactory).
log4j:WARN Please initialize the log4j system properly.
log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for more info.
Exception in thread "main" org.apache.hadoop.hbase.MasterNotRunningException: com.google.protobuf.ServiceException: java.net.UnknownHostException: unknown host: datanode2
at org.apache.hadoop.hbase.client.ConnectionManager$HConnectionImplementation$StubMaker.makeStub(ConnectionManager.java:1661)
at enter code hereorg.apache.hadoop.hbase.client.ConnectionManager$HConnectionImplementation$MasterServiceStubMaker.makeStub(ConnectionManager.java:1687)
at org.apache.hadoop.hbase.client.ConnectionManager$HConnectionImplementation.getKeepAliveMasterService(ConnectionManager.java:1904)
at org.apache.hadoop.hbase.client.ConnectionManager$HConnectionImplementation.isMasterRunning(ConnectionManager.java:932)
at enter code hereorg.apache.hadoop.hbase.client.HBaseAdmin.checkHBaseAvailable(HBaseAdmin.java:2409)
at TestBase.main(TestBase.java:28)
Caused by: com.google.protobuf.ServiceException: java.net.UnknownHostException: unknown host: datanode2
at org.apache.hadoop.hbase.ipc.RpcClient.callBlockingMethod(RpcClient.java:1739)
at org.apache.hadoop.hbase.ipc.RpcClient$BlockingRpcChannelImplementation.callBlockingMethod(RpcClient.java:1777)
at org.apache.hadoop.hbase.protobuf.generated.MasterProtos$MasterService$BlockingStub.isMasterRunning(MasterProtos.java:42561)
at org.apache.hadoop.hbase.client.ConnectionManager$HConnectionImplementation$MasterServiceStubMaker.isMasterRunning(ConnectionManager.java:1698)
at org.apache.hadoop.hbase.client.ConnectionManager$HConnectionImplementation$StubMaker.makeStubNoRetries(ConnectionManager.java:1607)
at org.apache.hadoop.hbase.client.ConnectionManager$HConnectionImplementation$StubMaker.makeStub(ConnectionManager.java:1633)
... 5 more
Caused by: java.net.UnknownHostException: unknown host: datanode2
at org.apache.hadoop.hbase.ipc.RpcClient$Connection.<init>(RpcClient.java:501)
at org.apache.hadoop.hbase.ipc.RpcClient.createConnection(RpcClient.java:325)
at org.apache.hadoop.hbase.ipc.RpcClient.getConnection(RpcClient.java:1614)
at org.apache.hadoop.hbase.ipc.RpcClient.call(RpcClient.java:1494)
at org.apache.hadoop.hbase.ipc.RpcClient.callBlockingMethod(RpcClient.java:1724)
... 10 more

共 (2) 个答案

  1. # 1 楼答案

    HBase主DNS名称映射到HBase的ip地址可能有问题。主人确保您已经设置了DNS服务器,或者您可以尝试在我的GNU/Linux机器上找到类似的东西。例如配置“/etc/hostname”:在尝试连接到主节点的计算机上设置HBase主节点的名称)和“/etc/hosts”

    希望你能在你的Windows机器上设置它

    以下是GNU/Linux方式的有用链接:

    http://sujee.net/2012/03/08/getting-dns-right-for-hadoop-hbase-clusters/#.XULnEZNKhTZ

  2. # 2 楼答案

    您无法访问群集的节点。检查防火墙和网络设置。确保端口也已打开以进行连接

    这是堆栈跟踪中的错误:

    Exception in thread "main" org.apache.hadoop.hbase.MasterNotRunningException: com.google.protobuf.ServiceException: java.net.UnknownHostException: unknown host: datanode2
    

    此外,您不需要在代码中指定HBase群集属性。将hbase放在站点上。xml在java的类路径中,只需实例化连接