看NameNode的JMX界面时,我们可能会发现有些指标是重复的。
举个例子:NumLiveDataNodes。
这个指标在
Hadoop:service=NameNode,name=FSNamesystem
和
Hadoop:service=NameNode,name=FSNamesystemState
里都有。
而且不光NumLiveDataNodes这个指标。这两个项下面很多东西都是重的。这是为什么呢?
解答:
FSNamesystem和FSNamesystemState这两个有重复值的原因是:
1、FSNamesystem类中用@Metrics标注的就会在FSNamesystem下面。
2、FSNamesystem实现了FSNamesystemMBean接口。启动nn的时候注册了一个名为“FSNamesystemState”的MBean。 而这个接口里的方法就会出现在FSNamesystemState里。
3、HDFS恰好在重写的接口方法上又添加了@Metrics注解,就导致既出现在FSNamesystem里也出现在FSNamesystemState里。
反例:StaleDataNodes
源码如下: