HBase-集群状态信息
代码如下
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-集群状态信息的更多相关文章
- redis集群状态信息维护脚本
近期在做redis相关的东西.须要把2台redis切分成16个shard. 16个主shard分布在4台128G的机器上,从shard分布在12台64G的机器上.因为机器太多,查询相关的信息不太方便. ...
- Dynamo涉及的算法和协议——p2p架构,一致性hash容错+gossip协议获取集群状态+向量时钟同步数据
转自:http://www.letiantian.me/2014-06-16-dynamo-algorithm-protocol/ Dynamo是Amazon的一个分布式的键值系统,P2P架构,没有主 ...
- 执行redis命令redis-trib.rb查看集群信息报错cannot load such file -- redis (LoadError)
问题描述: 在执行redis-trib.rb命令查看集群状态的时候,报错: [aiprd@hadoop1 ~]$ redis-trib.rb check Traceback (most recent ...
- HBase之集群状态
import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.hbase.*; import org.apache.had ...
- HDFS设计思路,HDFS使用,查看集群状态,HDFS,HDFS上传文件,HDFS下载文件,yarn web管理界面信息查看,运行一个mapreduce程序,mapreduce的demo
26 集群使用初步 HDFS的设计思路 l 设计思想 分而治之:将大文件.大批量文件,分布式存放在大量服务器上,以便于采取分而治之的方式对海量数据进行运算分析: l 在大数据系统中作用: 为各类分布式 ...
- HBase 集群监控系统构建
HBase 集群监控系统构建 标签(空格分隔): Hbase 一, 集群为什么需要监控系统 总的来说是为了保证系统的稳定性,可靠性,可运维性.具体来说我认为有以下几点: 掌控集群的核心性能指标,了解集 ...
- ubuntu12.04+Elasticsearch2.3.3伪分布式配置,集群状态分片调整
目录 [TOC] 1.什么是Elashticsearch 1.1 Elashticsearch介绍 Elasticsearch是一个基于Apache Lucene(TM)的开源搜索引擎.能够快速搜索数 ...
- hadoop 集群 加入一个新的存储节点和删除一个计算节点需要刷新集群状态命令
加入一个新的存储节点和删除一个计算节点需要刷新集群状态命令 方式1:静态添加datanode,停止namenode方式 1.停止namenode 2.修改slaves文件,并更新到各个节点3.启动na ...
- Hbase集群搭建及所有配置调优参数整理及API代码运行
最近为了方便开发,在自己的虚拟机上搭建了三节点的Hadoop集群与Hbase集群,hadoop集群的搭建与zookeeper集群这里就不再详细说明,原来的笔记中记录过.这里将hbase配置参数进行相应 ...
- HBase集群搭建
HBase集群搭建 搭建环境:假设我们的linux环境已经准备好,包括网络.JDK.防火墙.主机名.免密登录等都没有问题,而且一定要有zookeeper.下面我们用3台linux虚拟机来搭建Hbase ...
随机推荐
- CodeIgniter框架——表单辅助函数总结
首先第一步就是载入辅助函数: $this->load->helper('form'); 函数解析: 1.form_open() 创建一个开始form标签,相对于你的配置文档中的基础URL. ...
- timus1965(不错的贪心)
题意是:给你一个1-n的排列,要你把这个排列分成两个序列,且这个两个序列都满足单调性. 题解: 1.首先假设找出的两个序列都是单调递增的(都是单调递减的同理) 那么很容易可以想到,将新加入的数放入到某 ...
- [Docker]学习笔记--简单介绍
学习docker已经有一段时间了,一直没有静下心来好好总结一下. 最近用docker搭了一整套Gitlab的持续集成环境.(会在下一篇中详细的讲解具体步骤,敬请期待) 感觉是时候写点东西和大家一起分享 ...
- FZU2030(括号匹配)
题目链接:http://acm.hust.edu.cn/vjudge/contest/view.action?cid=110977#problem/E 题目大意:略 题目思路:数据范围很小,可以搜索, ...
- 【BZOJ3730】震波 动态树分治+线段树
[BZOJ3730]震波 Description 在一片土地上有N个城市,通过N-1条无向边互相连接,形成一棵树的结构,相邻两个城市的距离为1,其中第i个城市的价值为value[i].不幸的是,这片土 ...
- 禁止向 HTML 页面输出未经安全过滤或未正确转义的用户数据。
https://github.com/alibaba/p3c/blob/master/阿里巴巴Java开发手册(详尽版).pdf 5. [强制]禁止向 HTML 页面输出未经安全过滤或未正确转义的用户 ...
- 【转】IBM PowerVM虚拟化技术笔记
1. 从CPU虚拟化的角度, 分区(partition)可以分成两大类:Micro-partition和Dedicated-procesor.前者可以将物理处理器以0.01的 粒度分配给微分区,分区创 ...
- PEP8 Python 编码规范整理(Python)
add by zhj: 这个是豆瓣网友整理的PEP8,算是PEP8的一个简易版本,因为原PEP8内容太多,所以建议先看这篇文章,然后再看PEP8中文翻译 原文:http://www.douban.co ...
- sql server监控图解
- Simple Tips for Collection in Python
I believe that the following Python code is really not hard to understand. But I think we should use ...