HBase
:50070/
:50070/jmx
:50070/jmx?qry=Hadoop:service=NameNode,name=JvmMetrics
自定义实现:
创建项目
编写:DataNodeInfos实体类,HDFSSummary实体类,http工具类,json工具类,主体方法(使用http工具类获取jmx的json字符串,解析后,赋值到HDFSSummary实体类中并展示)
public class DataNodeInfo {//datanode的hostNameprivate String nodeName;//datanode的ip地址private String nodeAddr;//datanode的上次链接数量private int lastContact;//datanode上hdfs的已用空间GBprivate double usedSpace;//datanode的状态private String adminState;//datanode上非hdfs的空间大小GBprivate double nonDfsUsedSpace;//datanode上的总空间大小private double capacity;//datanode的blockprivate int numBlocks;private double remaining;private double blockPoolUsed;private double blockPoolUsedPerent;
get,set。。。
}
public class HdfsSummary {//"name" : "Hadoop:service=NameNode,name=JvmMetrics",//总空间大小GBprivate double total;//hdfs已使用的空间大小GBprivate double dfsUsed;//hdfs已使用空间百分比private double percentUsed;//hdfs空闲空间GBprivate double dfsFree;//hdfs是否处于safemodeprivate String safeMode;//非hdfs空间大小GBprivate double nonDfsUsed;//集群该namespace的hdfs使用容量大小private double blockPoolUsedSpace;//集群该namespace的hdfs使用容量所占百分比private double percentBlockPoolUsed;private double percentRemaining;//集群总的block数private int totalBlocks;//集群总的文件数private int totalFiles;//集群丢失的block数量private int missingBlocks;//处于可用状态的datanode汇总private List<DataNodeInfo> liveDataNodeInfos;//处于不可用状态的datanode汇总private List<DataNodeInfo> deadDataNodeInfos;//处于可用状态的datanode数量private int numLiveDataNodes;//处于不可用状态的datanode数量private int numDeadDataNodes;//坏盘的数量private int volumnFailuresTotal;public void printInfo(){System.out.println("HDFS SUMMARY INFO:");System.out.println(String.format("totalBlocks:%s\ntotalFiles:%s\nnumLiveDataNodes:%s",totalBlocks,totalFiles,numLiveDataNodes));liveDataNodeInfos.forEach(node->{System.out.println(String.format("nodeName:%s\nnumBlocks:%s",node.getNodeName(),node.getNumBlocks()));});}
get,set...
}
主体方法类