代码如下

package com.hbase.HBaseAdmin;

import java.io.IOException;
import java.util.Collection;
import java.util.Map;
import java.util.Map.Entry; import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.hbase.ClusterStatus;
import org.apache.hadoop.hbase.HBaseConfiguration;
import org.apache.hadoop.hbase.RegionLoad;
import org.apache.hadoop.hbase.ServerLoad;
import org.apache.hadoop.hbase.ServerName;
import org.apache.hadoop.hbase.client.Admin;
import org.apache.hadoop.hbase.client.Connection;
import org.apache.hadoop.hbase.client.ConnectionFactory;
import org.apache.hadoop.hbase.master.RegionState;
import org.apache.hadoop.hbase.util.Bytes; /**
* @author:FengZhen
* @create:2018年9月12日
*/
public class ClusterStatusTest { private static String addr="HDP233,HDP232,HDP231";
private static String port="2181";
private static Connection connection; /**
* 获取连接
*/
public static void getConnection(){
Configuration conf = HBaseConfiguration.create(); conf.set("hbase.zookeeper.quorum",addr);
conf.set("hbase.zookeeper.property.clientPort", port);
try {
connection = ConnectionFactory.createConnection(conf);
} catch (IOException e) {
e.printStackTrace();
}
} /*
* 关闭连接
*/
public static void close() {
/**
* close connection
**/
if (connection != null) {
try {
connection.close();
} catch (IOException e) {
e.printStackTrace();
}
}
} public static void main(String[] args) {
getConnection();
try {
Admin admin = connection.getAdmin();
ClusterStatus clusterStatus = admin.getClusterStatus();
//当前活着的region服务器的数量,此数量不包括不可用region服务器
int serversSize = clusterStatus.getServersSize();
System.out.println("当前可用region服务器数量: " + serversSize); //当前存活的region服务器的列表,包括region服务器的服务、IP、RPC端口、启动时间戳等
Collection<ServerName> servers = clusterStatus.getServers();
for (ServerName serverName : servers) {
String serverNameStr = serverName.getServerName();
String hostAndPort = serverName.getHostAndPort();
int port = serverName.getPort();
Long startCode = serverName.getStartcode();
System.out.println("serverName: " + serverNameStr + ", hostAndPort: " + hostAndPort + ", port: " + port + ", startCode: " + startCode);
} int deadServersSize = clusterStatus.getDeadServers();
System.out.println("当前不可用region服务器数量: " + deadServersSize); Collection<ServerName> deadServerNames = clusterStatus.getDeadServerNames();
for (ServerName deadServerName : deadServerNames) {
String serverNameStr = deadServerName.getServerName();
String hostAndPort = deadServerName.getHostAndPort();
int port = deadServerName.getPort();
Long startCode = deadServerName.getStartcode();
System.out.println("serverName: " + serverNameStr + ", hostAndPort: " + hostAndPort + ", port: " + port + ", startCode: " + startCode);
} //平均每台region服务器上线了多少region
double averageLoad = clusterStatus.getAverageLoad();
System.out.println("平均每台region服务器上线了多少region:" + averageLoad); //集群中region的总数量
int regionsCount = clusterStatus.getRegionsCount();
System.out.println("集群中region的总数量: " + regionsCount); //集群的请求TPS(一个表达系统处理能力的性能指标,每秒处理的消息数(Transaction Per Second))
int requestsCount = clusterStatus.getRequestsCount();
System.out.println("集群的请求TPS: " + requestsCount); //当前集群的软件编译版本 1.1.2.2.6.1.0-129
String version = clusterStatus.getHBaseVersion();
System.out.println("当前集群的软件编译版本: " + version); //返回集群的唯一标识。这个值是集群第一次启动时通过UUID生成的,存在根目录下的hbase.id中
String clusterId = clusterStatus.getClusterId();
System.out.println("集群id: " + clusterId); //返回当前集群正在进行处理的region的事务列表,即移动操作、上线操作和下线操作。
//键是编码后的region名(由HRegTonInfo.getEncodeName返回),值是RegionState的实例
Map<String, RegionState> regionsInTransition = clusterStatus.getRegionsInTransition(); System.out.println(">>>>>>>>>>>>>>>>>>>>>>>ServerLoad<<<<<<<<<<<<<<<<<<<<<");
for (ServerName serverName : servers) {
System.out.println("-------------------" + serverName.getHostAndPort() + "--------------------");
//返回给定region服务器的当前负载情况
ServerLoad serverLoad = clusterStatus.getLoad(serverName);
//等同于getNumverOfRegions
int getLoad = serverLoad.getLoad();
System.out.println("当前region服务器上线的region数量getLoad: " + getLoad);
//当前region服务器上线的region数量
int getNumverOfRegions = serverLoad.getLoad();
System.out.println("当前region服务器上线的region数量getNumverOfRegions: " + getNumverOfRegions);
//返回当前region服务器这个周期内的TPS,周期可以通过参数hbase.reigonserver.msginterval来设定。
//请求数会在一个周期结束后清零,它会统计所有的API请求,如get、put、increment、delete等
long getNumberOfRequests = serverLoad.getNumberOfRequests();
System.out.println("当前region服务器这个周期内的TPS: " + getNumberOfRequests);
//JVM已使用的内存,单位为MB
int getUsedHeapMB = serverLoad.getUsedHeapMB();
System.out.println("JVM已使用的内存: " + getUsedHeapMB);
//JVM最大可使用内存,单位为MB
int getMaxHeapMB = serverLoad.getMaxHeapMB();
System.out.println("JVM最大可使用内存: " + getMaxHeapMB);
//当前region服务器的存储文件数量,即包括这个服务器管理的所有region
int getStorefiles = serverLoad.getStorefiles();
System.out.println("当前region服务器的存储文件数量: " + getStorefiles);
//当前region服务器的存储文件的总存储量,单位为MB
int getStorefileSizeInMB = serverLoad.getStorefileSizeInMB();
System.out.println("当前region服务器的存储文件的总存储量: " + getStorefileSizeInMB);
//当前region服务器的存储文件的索引大小,单位为MB
int getStorefileIndexSizeInMB = serverLoad.getStorefileIndexSizeInMB();
System.out.println("当前region服务器的存储文件的索引大小: " + getStorefileIndexSizeInMB);
//当前region服务器的已用写缓存的大小,包括这个region服务器上所有的region
int getMemstoreSizeInMB = serverLoad.getMemstoreSizeInMB();
System.out.println("当前region服务器的已用写缓存的大小: " + getMemstoreSizeInMB);
System.out.println("<<<<<<<<<<<<<<<<RegionLoad>>>>>>>>>>>>>>>>");
//返回当前region服务器中每个region的负载情况,以Map的形式返回
//键是region名,值是RegionLoad实例
Map<byte[], RegionLoad> getRegionsLoad = serverLoad.getRegionsLoad();
for (Entry<byte[], RegionLoad> value : getRegionsLoad.entrySet()) {
String key = Bytes.toString(value.getKey());
System.out.println("<<<<<<<<<<<<<<<<RegionLoad-" + key + ">>>>>>>>>>>>>>>>");
RegionLoad regionLoad = value.getValue();
//将二进制region名转换为字符串并返回
String regionName = regionLoad.getNameAsString();
System.out.println("regionName: " + regionName);
//当前region的列族数量
int getStores = regionLoad.getStores();
System.out.println("当前region的列族数量: " + getStores);
//当前region的存储文件数量
int regionGetStorefiles = regionLoad.getStorefiles();
System.out.println("当前region的存储文件数量: " + regionGetStorefiles);
//当前region的存储文件占用空间,MB为单位
int getStorefileSizeMB = regionLoad.getStorefileSizeMB();
System.out.println("当前region的存储文件占用空间: " + getStorefileSizeMB);
//当前region的存储文件的索引信息的大小,MB为单位
int getStorefileIndexSizeMB = regionLoad.getStorefileIndexSizeMB();
System.out.println("当前region的存储文件的索引信息的大小: " + getStorefileIndexSizeMB);
//当前region使用的MemStore的大小,单位为MB
int getMemStoreSizeMB = regionLoad.getMemStoreSizeMB();
System.out.println("当前region使用的MemStore的大小: " + getMemStoreSizeMB);
//当前region的本次统计周期内的TPS
long getRequestsCount = regionLoad.getRequestsCount();
System.out.println("当前region的本次统计周期内的TPS: " + getRequestsCount);
//当前region的本次统计周期内的QPS(每秒查询率QPS是对一个特定的查询服务器在规定时间内所处理流量多少的衡量标准。)
long getReadRequestsCount = regionLoad.getReadRequestsCount();
System.out.println("当前region的本次统计周期内的QPS: " + getReadRequestsCount);
//当前region的本次统计周期内的WPS
long getWriteRequestsCount = regionLoad.getWriteRequestsCount();
System.out.println("当前region的本次统计周期内的WPS: " + getWriteRequestsCount);
}
} } catch (IOException e) {
e.printStackTrace();
}
close();
} }

 输出如下

当前可用region服务器数量: 1
serverName: HDP231,16020,1535939295270, hostAndPort: HDP231:16020, port: 16020, startCode: 1535939295270
当前不可用region服务器数量: 2
serverName: HDP233,16020,1531794848784, hostAndPort: HDP233:16020, port: 16020, startCode: 1531794848784
serverName: HDP232,16020,1531128455707, hostAndPort: HDP232:16020, port: 16020, startCode: 1531128455707
平均每台region服务器上线了多少region:25.0
集群中region的总数量: 25
集群的请求TPS: 0
当前集群的软件编译版本: 1.1.2.2.6.1.0-129
集群id: 465b49e6-73eb-4845-9dc7-1eb9eaf594e6
>>>>>>>>>>>>>>>>>>>>>>>ServerLoad<<<<<<<<<<<<<<<<<<<<<
-------------------HDP231:16020--------------------
当前region服务器上线的region数量getLoad: 25
当前region服务器上线的region数量getNumverOfRegions: 25
当前region服务器这个周期内的TPS: 0
JVM已使用的内存: 153
JVM最大可使用内存: 2007
当前region服务器的存储文件数量: 9
当前region服务器的存储文件的总存储量: 0
当前region服务器的存储文件的索引大小: 0
当前region服务器的已用写缓存的大小: 0
<<<<<<<<<<<<<<<<RegionLoad>>>>>>>>>>>>>>>>
<<<<<<<<<<<<<<<<RegionLoad-hbase:meta,,1>>>>>>>>>>>>>>>>
regionName: hbase:meta,,1
当前region的列族数量: 1
/当前region的存储文件数量: 2
当前region的存储文件占用空间: 0
当前region的存储文件的索引信息的大小: 0
当前region使用的MemStore的大小: 0
当前region的本次统计周期内的TPS: 24857
当前region的本次统计周期内的QPS: 24806
当前region的本次统计周期内的WPS: 51
<<<<<<<<<<<<<<<<RegionLoad-hbase:namespace,,1531128486691.d25b2b8cb0d3d1c538437c1b89b8f8c8.>>>>>>>>>>>>>>>>
regionName: hbase:namespace,,1531128486691.d25b2b8cb0d3d1c538437c1b89b8f8c8.
当前region的列族数量: 1
/当前region的存储文件数量: 1
当前region的存储文件占用空间: 0
当前region的存储文件的索引信息的大小: 0
当前region使用的MemStore的大小: 0
当前region的本次统计周期内的TPS: 4
当前region的本次统计周期内的QPS: 4
当前region的本次统计周期内的WPS: 0
<<<<<<<<<<<<<<<<RegionLoad-socialSecurity,,1531128735425.d31a708f6a7b307c9bb2aa6818b790f8.>>>>>>>>>>>>>>>>
regionName: socialSecurity,,1531128735425.d31a708f6a7b307c9bb2aa6818b790f8.
当前region的列族数量: 2
/当前region的存储文件数量: 2
当前region的存储文件占用空间: 0
当前region的存储文件的索引信息的大小: 0
当前region使用的MemStore的大小: 0
当前region的本次统计周期内的TPS: 0
当前region的本次统计周期内的QPS: 0
当前region的本次统计周期内的WPS: 0
<<<<<<<<<<<<<<<<RegionLoad-socialSecurityHDFS,,1532677476603.5ee0df2eee28c9499f55973feab29949.>>>>>>>>>>>>>>>>
regionName: socialSecurityHDFS,,1532677476603.5ee0df2eee28c9499f55973feab29949.
当前region的列族数量: 1
/当前region的存储文件数量: 1
当前region的存储文件占用空间: 0
当前region的存储文件的索引信息的大小: 0
当前region使用的MemStore的大小: 0
当前region的本次统计周期内的TPS: 0
当前region的本次统计周期内的QPS: 0
当前region的本次统计周期内的WPS: 0
<<<<<<<<<<<<<<<<RegionLoad-socialSecurityTest,,1532671036790.32a018b498fe90f67e4d5f9154132ff8.>>>>>>>>>>>>>>>>
regionName: socialSecurityTest,,1532671036790.32a018b498fe90f67e4d5f9154132ff8.
当前region的列族数量: 2
/当前region的存储文件数量: 1
当前region的存储文件占用空间: 0
当前region的存储文件的索引信息的大小: 0
当前region使用的MemStore的大小: 0
当前region的本次统计周期内的TPS: 0
当前region的本次统计周期内的QPS: 0
当前region的本次统计周期内的WPS: 0
<<<<<<<<<<<<<<<<RegionLoad-test_create,,1536200222987.a1298f176032256ee51263781abdce80.>>>>>>>>>>>>>>>>
regionName: test_create,,1536200222987.a1298f176032256ee51263781abdce80.
当前region的列族数量: 1
/当前region的存储文件数量: 0
当前region的存储文件占用空间: 0
当前region的存储文件的索引信息的大小: 0
当前region使用的MemStore的大小: 0
当前region的本次统计周期内的TPS: 0
当前region的本次统计周期内的QPS: 0
当前region的本次统计周期内的WPS: 0
<<<<<<<<<<<<<<<<RegionLoad-test_hbase,,1535079442643.62ebe4c164f1474febc757e8af239b54.>>>>>>>>>>>>>>>>
regionName: test_hbase,,1535079442643.62ebe4c164f1474febc757e8af239b54.
当前region的列族数量: 2
/当前region的存储文件数量: 2
当前region的存储文件占用空间: 0
当前region的存储文件的索引信息的大小: 0
当前region使用的MemStore的大小: 0
当前region的本次统计周期内的TPS: 0
当前region的本次统计周期内的QPS: 0
当前region的本次统计周期内的WPS: 0
<<<<<<<<<<<<<<<<RegionLoad-test_modify,,1536732559671.ca2e08814243448e6c8742a08c8950e8.>>>>>>>>>>>>>>>>
regionName: test_modify,,1536732559671.ca2e08814243448e6c8742a08c8950e8.
当前region的列族数量: 2
/当前region的存储文件数量: 0
当前region的存储文件占用空间: 0
当前region的存储文件的索引信息的大小: 0
当前region使用的MemStore的大小: 0
当前region的本次统计周期内的TPS: 0
当前region的本次统计周期内的QPS: 0
当前region的本次统计周期内的WPS: 0
<<<<<<<<<<<<<<<<RegionLoad-test_pre_partition1,

HBase-集群状态信息的更多相关文章

  1. redis集群状态信息维护脚本

    近期在做redis相关的东西.须要把2台redis切分成16个shard. 16个主shard分布在4台128G的机器上,从shard分布在12台64G的机器上.因为机器太多,查询相关的信息不太方便. ...

  2. Dynamo涉及的算法和协议——p2p架构,一致性hash容错+gossip协议获取集群状态+向量时钟同步数据

    转自:http://www.letiantian.me/2014-06-16-dynamo-algorithm-protocol/ Dynamo是Amazon的一个分布式的键值系统,P2P架构,没有主 ...

  3. 执行redis命令redis-trib.rb查看集群信息报错cannot load such file -- redis (LoadError)

    问题描述: 在执行redis-trib.rb命令查看集群状态的时候,报错: [aiprd@hadoop1 ~]$ redis-trib.rb check Traceback (most recent ...

  4. HBase之集群状态

    import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.hbase.*; import org.apache.had ...

  5. HDFS设计思路,HDFS使用,查看集群状态,HDFS,HDFS上传文件,HDFS下载文件,yarn web管理界面信息查看,运行一个mapreduce程序,mapreduce的demo

    26 集群使用初步 HDFS的设计思路 l 设计思想 分而治之:将大文件.大批量文件,分布式存放在大量服务器上,以便于采取分而治之的方式对海量数据进行运算分析: l 在大数据系统中作用: 为各类分布式 ...

  6. HBase 集群监控系统构建

    HBase 集群监控系统构建 标签(空格分隔): Hbase 一, 集群为什么需要监控系统 总的来说是为了保证系统的稳定性,可靠性,可运维性.具体来说我认为有以下几点: 掌控集群的核心性能指标,了解集 ...

  7. ubuntu12.04+Elasticsearch2.3.3伪分布式配置,集群状态分片调整

    目录 [TOC] 1.什么是Elashticsearch 1.1 Elashticsearch介绍 Elasticsearch是一个基于Apache Lucene(TM)的开源搜索引擎.能够快速搜索数 ...

  8. hadoop 集群 加入一个新的存储节点和删除一个计算节点需要刷新集群状态命令

    加入一个新的存储节点和删除一个计算节点需要刷新集群状态命令 方式1:静态添加datanode,停止namenode方式 1.停止namenode 2.修改slaves文件,并更新到各个节点3.启动na ...

  9. Hbase集群搭建及所有配置调优参数整理及API代码运行

    最近为了方便开发,在自己的虚拟机上搭建了三节点的Hadoop集群与Hbase集群,hadoop集群的搭建与zookeeper集群这里就不再详细说明,原来的笔记中记录过.这里将hbase配置参数进行相应 ...

  10. HBase集群搭建

    HBase集群搭建 搭建环境:假设我们的linux环境已经准备好,包括网络.JDK.防火墙.主机名.免密登录等都没有问题,而且一定要有zookeeper.下面我们用3台linux虚拟机来搭建Hbase ...

随机推荐

  1. Android开发:《Gradle Recipes for Android》阅读笔记(翻译)3.5——在flavors间合并java代码

    问题: 你想要在单独的product flavors里面增加Acitivity或者其它java类. 解决方案: 创建合适的代码目录,增加java类,将它们和main代码合并. 讨论: flavors和 ...

  2. MySQL-库的操作

    05-库的操作   本节重点: 掌握库的增删改查   一.系统数据库 执行如下命令,查看系统库 show databases; nformation_schema: 虚拟库,不占用磁盘空间,存储的是数 ...

  3. [转]C#静态方法与非静态方法的比较

    http://wenku.baidu.com/view/4e1704084a7302768e9939e0.html C#的类中可以包含两种方法:C#静态方法与非静态方法.那么他们的定义有什么不同呢?他 ...

  4. angularjs 发送ajax请求的问题

    在angularjs中使用 ajax 如果使用 jquery的 ajax发送请求会遇到结果返回了,但是页面的值却没有改变,如: $scope.queryNameMatch = function() { ...

  5. java.lang.ClassFormatError: Truncated class file

    之前跑的很好的程序,因为我本地IDE出了问题的原因,倒是编译的错误的class文件,结果点击的时候报这样的错误,后来重新clean了工程,重新打包解压启动,问题依旧. 解决办法: 把tomcat的wo ...

  6. FW 配置一个私有的Docker仓库

    思维 66 3月1日 发布 建分支 0 分支 收藏 0 收藏 我们在本地开发时,如果内网能部署一台Docker服务器,无疑会极大的方便镜像的分享发布,有些私有镜像就是可以直接放到内网服务器上,省去了不 ...

  7. 在Tomcat配置JNDI数据源的三种方式

    最近使用到了在tomcat下配置数据源的内容,在这里转载一篇文章记录下 转载自: http://blog.csdn.net/dyllove98/article/details/7706218 在我过去 ...

  8. Nuxt使用element-ui

    废话不多说,在Nuxt中引入Nuxt其实很简单,分下面几步 一.安装element-ui依赖 打开nuxt项目以后,在Terminal中通过 npm i element-ui -S 即可安装eleme ...

  9. python多线程与多进程的区别

    在UNIX平台上,当某个进程终结之后,该进程需要被其父进程调用wait,否则进程成为僵尸进程(Zombie).所以,有必要对每个Process对象调用join()方法 (实际上等同于wait).对于多 ...

  10. linux安装jdk_1.8

    转载自http://blog.csdn.net/ldl22847/article/details/7605650 1.下载jdk的rpm安装包,这里以jdk-8u141-linux-x64.rpm为例 ...