Browse Source

commit deb8c8f2c2b18659ad2b263b94b4af8cd0c58701
Author: Tanping Wang <tanping@yahoo-inc.com>
Date: Mon Sep 20 14:59:47 2010 -0700

[]add hostname to name node and data node MXBean.


git-svn-id: https://svn.apache.org/repos/asf/hadoop/common/branches/branch-0.20-security-patches@1077718 13f79535-47bb-0310-9956-ffa450edef68

Owen O'Malley 14 years ago
parent
commit
75cd9c88ca

+ 6 - 0
src/hdfs/org/apache/hadoop/hdfs/server/datanode/DataNode.java

@@ -1834,6 +1834,12 @@ public class DataNode extends Configured
     return NetUtils.createSocketAddr(address);
   }
 
+  
+  @Override // DataNodeMXBean
+  public String getHostName() {
+    return this.machineName;
+  }
+  
   @Override // DataNodeMXBean
   public String getVersion() {
     return VersionInfo.getVersion();

+ 5 - 0
src/hdfs/org/apache/hadoop/hdfs/server/datanode/DataNodeMXBean.java

@@ -23,6 +23,11 @@ package org.apache.hadoop.hdfs.server.datanode;
  */
 public interface DataNodeMXBean {
   
+  /**
+   * @return the host name
+   */
+  public String getHostName();
+  
   /**
    * Gets the version of Hadoop.
    * 

+ 9 - 3
src/hdfs/org/apache/hadoop/hdfs/server/namenode/FSNamesystem.java

@@ -341,6 +341,7 @@ public class FSNamesystem implements FSConstants, FSNamesystemMBean,
 
   // precision of access times.
   private long accessTimePrecision = 0;
+  private String nameNodeHostName;
   
   /**
    * FSNamesystem constructor.
@@ -414,6 +415,9 @@ public class FSNamesystem implements FSConstants, FSNamesystemMBean,
       dnsToSwitchMapping.resolve(new ArrayList<String>(hostsReader.getHosts()));
     }
     
+    InetSocketAddress socAddr = NameNode.getAddress(conf);
+    this.nameNodeHostName = socAddr.getHostName();
+    
     registerWith(DefaultMetricsSystem.INSTANCE);
   }
 
@@ -5159,9 +5163,11 @@ public class FSNamesystem implements FSConstants, FSNamesystemMBean,
     return authMethod;
   }
   
-  /**
-   * Class representing Namenode information for JMX interfaces
-   */
+  @Override // NameNodeMXBean
+  public String getHostName() {
+    return this.nameNodeHostName;
+  }
+  
   @Override // NameNodeMXBean
   public String getVersion() {
     return VersionInfo.getVersion();

+ 5 - 0
src/hdfs/org/apache/hadoop/hdfs/server/namenode/NameNodeMXBean.java

@@ -23,6 +23,11 @@ package org.apache.hadoop.hdfs.server.namenode;
  */
 public interface NameNodeMXBean {
 
+  /**
+   * @return the host name
+   */
+  public String getHostName();
+  
   /**
    * Gets the version of Hadoop.
    * 

+ 4 - 1
src/test/org/apache/hadoop/hdfs/server/datanode/TestDataNodeMXBean.java

@@ -45,7 +45,10 @@ public class TestDataNodeMXBean {
       MBeanServer mbs = ManagementFactory.getPlatformMBeanServer(); 
       ObjectName mxbeanName = new ObjectName(
           "Hadoop:service=DataNode,name=DataNodeInfo");
-          // get attribute "Version"
+      // get attribute "HostName"
+      String hostname = (String) mbs.getAttribute(mxbeanName, "HostName");
+      Assert.assertEquals(datanode.getHostName(), hostname);
+      // get attribute "Version"
       String version = (String)mbs.getAttribute(mxbeanName, "Version");
       Assert.assertEquals(datanode.getVersion(),version);
       // get attribute "RpcPort"

+ 3 - 0
src/test/org/apache/hadoop/hdfs/server/namenode/TestNameNodeMXBean.java

@@ -47,6 +47,9 @@ public class TestNameNodeMXBean {
       MBeanServer mbs = ManagementFactory.getPlatformMBeanServer();
       ObjectName mxbeanName = new ObjectName(
         "Hadoop:service=NameNode,name=NameNodeInfo");
+      // get attribute "HostName"
+      String hostname = (String) mbs.getAttribute(mxbeanName, "HostName");
+      Assert.assertEquals(fsn.getHostName(), hostname);
       // get attribute "Version"
       String version = (String) mbs.getAttribute(mxbeanName, "Version");
       Assert.assertEquals(fsn.getVersion(), version);