如何从zookeeper获取hbase元数据

xfb7svmp  于 2021-06-09  发布在  Hbase
关注(0)|答案(1)|浏览(390)

我想会有很多元数据从hbase写入zookeeper,比如region split信息或者region和regionserver信息等等。。。但当我试图获取这些信息时,我几乎什么也没有得到,我通过get命令尝试了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的完整元数据,尽管有二进制的,谢谢!

z9ju0rcb

z9ju0rcb1#

此信息是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();
}

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

相关问题