hbase的admin可用api汇总
来源:互联网 发布:淘宝便宜有趣的小玩意 编辑:程序博客网 时间:2024/06/07 23:15
hbase的admin接口提供了一系列可以获得集群访问状态的api,如果是做hbase的集群监控系统,通过这些api或许可以帮你获得关于当前集群访问情况的数据,并简单介绍这些api返回的信息和一些使用姿势。
admin.listTableNames():返回集群的table列表
admin.getClusterStatus():返回一个ClusterStatus类,该类描述了集群整体的一些状态,部分有用的状态列出如下:
regionserver的数量:clusterStatus.getServerSize();
regionserver的列表:clusterStatus.getServers(),返回类型:List<ServerName>
挂掉的regionserver数量:clusterStatus.getDeadServers();
挂掉的regionserver名字:clusterStatus.getDeadSErverNames(),返回类型:ServerName
region的数量:clusterStatus.getRegionsCount();
平均负载:clusterStatus.getAverageLoad();
已知regionserver的名字,可以获取regionserver上的负载信息,具体方法如下:
ServerLoad serverload = clusterStatus.getLoad(serverName);
serveLoad中维护了关于当前regonserver的一些负载信息,常用的如下:
读请求计数:serverLoad.getReadRequestsCount();
写请求计数:serverLoad.getWriteRequestsCount();
每秒请求数:serverLoad.getRequestsPerSecond();
关键是从serverLoad中可以获得regionload列表,如下一段代码演示了如何获取regionload列表并按region名称归类
ClusterStatus clusterStatus = admin.getClusterStatus();for(ServerName serverName : clusterStatus.getServers()) { ServerLoad serverLoad = clusterStatus.getLoad(serverName); for(Map.Entry<byte[], RegionLoad> regionload : serverLoad.getRegionsLoad().entrySet()) { String regionName = Bytes.toString(regionload.getKey()); result.put(regionName, regionload.getValue()); }}
regionLoad与serverLoad类似,维护了region的一些负载信息,常用如下:
读请求计数:regionLoad.getReadRequestsCount();
写请求计数:regionLoad.getWriteRequestsCount();
regon名称:regionLoad.getNameAsString();
请求总计数:regionLoad.getRequestsCount();
该region所属的table名:regionLoad.getNameAsString().split(",")[0]
以下一段代码演示了依据表名获取归属该表的region,并将这些region按照regionserver进行归类:
Map<String, List<String>> result = new HashMap<>();try { ClusterStatus clusterStatus = admin.getClusterStatus(); for(ServerName serverName : serverNames) { List<String> regions = new ArrayList<>(); ServerLoad serverLoad = clusterStatus.getLoad(serverName); Map<byte[], RegionLoad> regionLoads = serverLoad.getRegionsLoad(); for(Map.Entry<byte[], RegionLoad> entry : regionLoads.entrySet()) { String uniqueName = new String(entry.getKey()).split(",")[0]; //该region所属的table名; if (uniqueName.equals(tableName)) { regions.add(new String(entry.getKey())); } } result.put(serverName.getServerName(), regions); }} finally { if(admin != null) {admin.close();}}
通过上面这段代码,可以看出如何综合地使用clusterStatus,ServerLoad和RegionLoad。
- hbase的admin可用api汇总
- 使用JAVA API和MapReduce读取HBase里的数据(可用作HBase数据清洗)
- HBase的一些常用admin函数
- MySQL可用的API
- HBase 的Java API
- HBase的Java API
- hbase基本的api
- Hbase的API使用
- Hbase的API
- HBase admin用户权限不足
- hbase-shell + hbase的java api
- 监控Hbase是否可用的外挂程序
- 搭建高可用的hbase集群
- 查看天气可用的api
- [hbase]使用HBase的Java API查询HBase(2)
- [hbase]使用HBase的Java api查询HBase
- Java 访问 Hbase 的API
- api学习:hbase的filter
- MyBatis-----3、MyBatis分页插件PageHelper
- Ubuntu 安装Srilm
- JDK源码分析(2)-java.util.LinkedList
- Tiny210(S5PV210) U-BOOT(四)----Nand Flash原理(1)
- The Python Challenge 题解
- hbase的admin可用api汇总
- RecycleView的layoutManager.setStackFromEnd(true);layoutManager.setReverseLayout(true);
- 204. Count Primes
- 1619-7 张良 十月二十七号总结 [连续第二十七天]
- php培训相关
- Git 的简单命令
- 【Linux学习笔记】获取文件属性 — stat()、fstat()、lstat()小结
- 在ROS中使用usb摄像头跑ORB SLAM2
- 118. Pascal's Triangle (杨辉三角)