HDFS-15991. Add location into datanode info for NameNodeMXBean (#2933)
Signed-off-by: Takanobu Asanuma <tasanuma@apache.org>
This commit is contained in:
parent
bbf62a0562
commit
b968fa0957
|
@ -406,7 +406,7 @@
|
|||
</thead>
|
||||
{#EnteringMaintenanceNodes}
|
||||
<tr>
|
||||
<td>{name} ({xferaddr})</td>
|
||||
<td>{location}/{name} ({xferaddr})</td>
|
||||
<td>{underReplicatedBlocks}</td>
|
||||
<td>{maintenanceOnlyReplicas}</td>
|
||||
<td>{underReplicateInOpenFiles}</td>
|
||||
|
|
|
@ -6485,6 +6485,7 @@ public class FSNamesystem implements Namesystem, FSNamesystemMBean,
|
|||
.put("infoAddr", node.getInfoAddr())
|
||||
.put("infoSecureAddr", node.getInfoSecureAddr())
|
||||
.put("xferaddr", node.getXferAddr())
|
||||
.put("location", node.getNetworkLocation())
|
||||
.put("lastContact", getLastContact(node))
|
||||
.put("usedSpace", getDfsUsed(node))
|
||||
.put("adminState", node.getAdminState().toString())
|
||||
|
@ -6534,6 +6535,7 @@ public class FSNamesystem implements Namesystem, FSNamesystemMBean,
|
|||
.put("decommissioned", node.isDecommissioned())
|
||||
.put("adminState", node.getAdminState().toString())
|
||||
.put("xferaddr", node.getXferAddr())
|
||||
.put("location", node.getNetworkLocation())
|
||||
.build();
|
||||
info.put(node.getHostName() + ":" + node.getXferPort(), innerinfo);
|
||||
}
|
||||
|
@ -6555,6 +6557,7 @@ public class FSNamesystem implements Namesystem, FSNamesystemMBean,
|
|||
Map<String, Object> innerinfo = ImmutableMap
|
||||
.<String, Object> builder()
|
||||
.put("xferaddr", node.getXferAddr())
|
||||
.put("location", node.getNetworkLocation())
|
||||
.put("underReplicatedBlocks",
|
||||
node.getLeavingServiceStatus().getUnderReplicatedBlocks())
|
||||
.put("decommissionOnlyReplicas",
|
||||
|
@ -6582,6 +6585,7 @@ public class FSNamesystem implements Namesystem, FSNamesystemMBean,
|
|||
Map<String, Object> attrMap = ImmutableMap
|
||||
.<String, Object> builder()
|
||||
.put("xferaddr", node.getXferAddr())
|
||||
.put("location", node.getNetworkLocation())
|
||||
.put("underReplicatedBlocks",
|
||||
node.getLeavingServiceStatus().getUnderReplicatedBlocks())
|
||||
.put("maintenanceOnlyReplicas",
|
||||
|
|
|
@ -326,7 +326,7 @@
|
|||
{#LiveNodes}
|
||||
<tr>
|
||||
<td ng-value="{state}">{state}</td>
|
||||
<td ng-value="{state}-{name}" class="dfshealth-node-icon dfshealth-node-{state}">{name} ({xferaddr})</td>
|
||||
<td ng-value="{state}-{name}" class="dfshealth-node-icon dfshealth-node-{state}">{location}/{name} ({xferaddr})</td>
|
||||
<td ng-value="{state}-{name}"><a href='{dnWebAddress}'>{dnWebAddress}</a></td>
|
||||
<td ng-value="{lastContact}">{lastContact}s</td>
|
||||
<td ng-value="{lastBlockReport}">{lastBlockReport}m</td>
|
||||
|
@ -349,7 +349,7 @@
|
|||
{#DeadNodes}
|
||||
<tr class="danger">
|
||||
<td ng-value="{state}">{state}</td>
|
||||
<td ng-value="{state}-{name}" class="dfshealth-node-icon dfshealth-node-{state}">{name} ({xferaddr})</td>
|
||||
<td ng-value="{state}-{name}" class="dfshealth-node-icon dfshealth-node-{state}">{location}/{name} ({xferaddr})</td>
|
||||
<td></td>
|
||||
<td>{#helper_relative_time value="{lastContact}"/}</td>
|
||||
<td></td>
|
||||
|
@ -378,7 +378,7 @@
|
|||
</thead>
|
||||
{#EnteringMaintenanceNodes}
|
||||
<tr>
|
||||
<td>{name} ({xferaddr})</td>
|
||||
<td>{location}/{name} ({xferaddr})</td>
|
||||
<td>{underReplicatedBlocks}</td>
|
||||
<td>{maintenanceOnlyReplicas}</td>
|
||||
<td>{underReplicateInOpenFiles}</td>
|
||||
|
@ -404,7 +404,7 @@
|
|||
</thead>
|
||||
{#DecomNodes}
|
||||
<tr>
|
||||
<td>{name} ({xferaddr})</td>
|
||||
<td>{location}/{name} ({xferaddr})</td>
|
||||
<td>{underReplicatedBlocks}</td>
|
||||
<td>{decommissionOnlyReplicas}</td>
|
||||
<td>{underReplicateInOpenFiles}</td>
|
||||
|
@ -433,7 +433,7 @@ No nodes are decommissioning.
|
|||
</thead>
|
||||
{#LiveNodes}
|
||||
<tr>
|
||||
<td>{name} ({xferaddr})</td>
|
||||
<td>{location}/{name} ({xferaddr})</td>
|
||||
<td>{#helper_date_tostring value="{lastVolumeFailureDate}"/}</td>
|
||||
<td>{volfails}</td>
|
||||
<td>{estimatedCapacityLostTotal|fmt_bytes}</td>
|
||||
|
|
|
@ -112,7 +112,7 @@ public class TestNameNodeMXBean {
|
|||
MiniDFSCluster cluster = null;
|
||||
|
||||
try {
|
||||
cluster = new MiniDFSCluster.Builder(conf).numDataNodes(2).build();
|
||||
cluster = new MiniDFSCluster.Builder(conf).numDataNodes(4).build();
|
||||
cluster.waitActive();
|
||||
|
||||
// Set upgrade domain on the first DN.
|
||||
|
@ -171,7 +171,7 @@ public class TestNameNodeMXBean {
|
|||
"LiveNodes"));
|
||||
Map<String, Map<String, Object>> liveNodes =
|
||||
(Map<String, Map<String, Object>>) JSON.parse(alivenodeinfo);
|
||||
assertTrue(liveNodes.size() == 2);
|
||||
assertTrue(liveNodes.size() == 4);
|
||||
for (Map<String, Object> liveNode : liveNodes.values()) {
|
||||
assertTrue(liveNode.containsKey("nonDfsUsedSpace"));
|
||||
assertTrue(((Long)liveNode.get("nonDfsUsedSpace")) >= 0);
|
||||
|
@ -195,6 +195,27 @@ public class TestNameNodeMXBean {
|
|||
assertFalse(xferAddr.equals(dnXferAddrInMaintenance) ^ inMaintenance);
|
||||
}
|
||||
assertEquals(fsn.getLiveNodes(), alivenodeinfo);
|
||||
|
||||
// Put the third DN to decommissioning state.
|
||||
DatanodeDescriptor decommissioningNode = dm.getDatanode(
|
||||
cluster.getDataNodes().get(2).getDatanodeId());
|
||||
decommissioningNode.startDecommission();
|
||||
|
||||
// Put the fourth DN to decommissioned state.
|
||||
DatanodeDescriptor decommissionedNode = dm.getDatanode(
|
||||
cluster.getDataNodes().get(3).getDatanodeId());
|
||||
decommissionedNode.setDecommissioned();
|
||||
|
||||
// Assert the location field is included in the mxbeanName
|
||||
// under different states
|
||||
String alivenodeinfo1 = (String) (mbs.getAttribute(mxbeanName,
|
||||
"LiveNodes"));
|
||||
Map<String, Map<String, Object>> liveNodes1 =
|
||||
(Map<String, Map<String, Object>>) JSON.parse(alivenodeinfo1);
|
||||
for (Map<String, Object> liveNode : liveNodes1.values()) {
|
||||
assertTrue(liveNode.containsKey("location"));
|
||||
}
|
||||
|
||||
// get attributes DeadNodes
|
||||
String deadNodeInfo = (String) (mbs.getAttribute(mxbeanName,
|
||||
"DeadNodes"));
|
||||
|
|
Loading…
Reference in New Issue