非集群client访问HBase方法

对HBase的操作,有时候需要不在集群内部,也就是说A、B、C三台主机构建HBase,现在需要主机D来操作HBase。

client是通过Zookeeper来访问HBase的,而Zookeeper通过DNS解析主机名来访问ip,通过以下两步就可以用主机D来操作HBase

  1. 把client的hosts上添加A,B,C的主机名和ip(linux是/etc/hosts,windows是c:\windows\system32\drivers\hosts)
  2. 在程序中写入:
    conf = HBaseConfiguration.create();
    conf.set(“hbase.zookeeper.quorum”,  “192.168.0.180″);
    conf.set(“hbase.zookeeper.property.clientPort”,  “3355″);


要查询HBase集群中的所有用户,可以使用HBase的Java API来实现。以下是一种可能的实现方式: ``` Configuration config = HBaseConfiguration.create(); Connection connection = ConnectionFactory.createConnection(config); Admin admin = connection.getAdmin(); HBaseProtos.SnapshotDescription snapshot = HBaseProtos.SnapshotDescription.newBuilder() .setName("user_snapshot") .setTable(TableName.valueOf("user_table")) .setType(HBaseProtos.SnapshotDescription.Type.FLUSH) .build(); admin.snapshot(snapshot); Path snapshotDir = new Path("/hbase/snapshot/user_snapshot"); FileSystem fs = FileSystem.get(config); FileStatus[] files = fs.listStatus(snapshotDir); for (FileStatus file : files) { if (file.getPath().toString().endsWith(".regioninfo")) { HRegionInfo regionInfo = HRegionInfo.loadRegionInfoFromBytes( fs.open(file.getPath()).readAllBytes() ); Set<String> users = regionInfo.getTableDesc().getValue("USER").keySet(); System.out.println("Users in region " + regionInfo.getRegionNameAsString() + ": " + users); } } admin.deleteSnapshot("user_snapshot"); admin.close(); connection.close(); ``` 以上代码中,首先创建HBase的Configuration对象,然后使用ConnectionFactory.createConnection方法创建Connection对象,接着使用Connection.getAdmin方法获取Admin对象。然后创建一个快照(Snapshot)来备份用户表,并获取快照文件所在的目录路径。接着使用FileSystem.listStatus方法获取快照目录下的所有文件,并遍历每个文件。如果文件名以.regioninfo结尾,说明该文件是一个Region的元数据文件,从中解析出用户信息并输出。最后删除备份的快照,并关闭Admin和Connection对象。 请注意,以上代码中的表名、列族名、列名等需要根据实际情况进行修改。同时,代码中的用户信息是通过Region的元数据文件中的表描述符(TableDescriptor)获取的,因此需要在创建表时将用户信息添加到表描述符中。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值