如何从Zookeeper获取Hbase元数据

时间:2016-01-26 15:07:17

标签: hbase apache-zookeeper

我认为会有很多元数据从Hbase写入Zookeeper,例如Region拆分信息或Region和RegionServer信息......但是当我试图获取这些信息时,我几乎什么都没有,我试过了通过命令获取Zookeeper中的/ Hbase的子文件夹,但我得到的数据如下:

[zk: localhost:2181(CONNECTED) 40] get /hbase/meta-region-server
�regionserver:60020w��#�yPBUF
test008.tv.local�����Ч*
cZxid = 0xe0000018f
ctime = Mon Jan 25 10:39:58 PST 2016
mZxid = 0xe0000018f
mtime = Mon Jan 25 10:39:58 PST 2016
pZxid = 0xe0000018f
cversion = 0
dataVersion = 0
aclVersion = 0
ephemeralOwner = 0x0
dataLength = 73
numChildren = 0

可以在Zoookeeper中获取关于HBase的完整元数据,虽然有二进制文件,谢谢!

1 个答案:

答案 0 :(得分:1)

此信息是HBase对其当前配置的持久存储。它不是直接访问,而是通过API访问。此信息全部包含在ClusterStatus类中,可以从Admin接口的实例获取。以编程方式,您可以使用以下代码获取此信息。

导入,因此很清楚需要哪些类

import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.hbase.ClusterStatus;
import org.apache.hadoop.hbase.HConstants;
import org.apache.hadoop.hbase.client.Admin;
import org.apache.hadoop.hbase.client.Connection;
import org.apache.hadoop.hbase.client.ConnectionFactory;

示例:

public ClusterStatus getClusterStatus(String zkConnectionInfo) throws IOException {
    /* this is the minimum configuration info */
    configuration = new Configuration();
    configuration.set(HConstants.ZOOKEEPER_QUORUM, zkConnectionInfo);
    // can be /hbase, /hbase-secure, etc
    configuration.set(HConstants.ZOOKEEPER_ZNODE_PARENT, "/hbase");

    Connection connection = ConnectionFactory.createConnection(configuration);
    Admin admin = connection.getAdmin();
    return admin.getClusterStatus();
}

这是一个例子。通常最好从站点xml文件创建Configuration对象。例如,此设置不会处理群集所需的任何类型的安全配置。