| <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" |
| "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> |
| <!-- |
| Licensed to the Apache Software Foundation (ASF) under one or more |
| contributor license agreements. See the NOTICE file distributed with |
| this work for additional information regarding copyright ownership. |
| The ASF licenses this file to You under the Apache License, Version 2.0 |
| (the "License"); you may not use this file except in compliance with |
| the License. You may obtain a copy of the License at |
| |
| http://www.apache.org/licenses/LICENSE-2.0 |
| |
| Unless required by applicable law or agreed to in writing, software |
| distributed under the License is distributed on an "AS IS" BASIS, |
| WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| See the License for the specific language governing permissions and |
| limitations under the License. |
| --> |
| <html xmlns="http://www.w3.org/1999/xhtml"> |
| <head> |
| <meta http-equiv="X-UA-Compatible" content="IE=edge" /> |
| <link rel="stylesheet" type="text/css" href="/static/bootstrap-3.0.2/css/bootstrap.min.css" /> |
| <link rel="stylesheet" type="text/css" href="/static/dataTables.bootstrap.css" /> |
| <link rel="stylesheet" type="text/css" href="/static/hadoop.css" /> |
| <title>Namenode information</title> |
| </head> |
| <body> |
| |
| <header class="navbar navbar-inverse bs-docs-nav" role="banner"> |
| <div class="container"> |
| <div class="navbar-header"> |
| <div class="navbar-brand">Hadoop</div> |
| </div> |
| |
| <ul class="nav navbar-nav" id="ui-tabs"> |
| <li><a href="#tab-overview">Overview</a></li> |
| <li><a href="#tab-datanode">Datanodes</a></li> |
| <li><a href="#tab-datanode-volume-failures">Datanode Volume Failures</a></li> |
| <li><a href="#tab-snapshot">Snapshot</a></li> |
| <li><a href="#tab-startup-progress">Startup Progress</a></li> |
| <li class="dropdown"> |
| <a href="#" class="dropdown-toggle" data-toggle="dropdown">Utilities <b class="caret"></b></a> |
| <ul class="dropdown-menu"> |
| <li><a href="explorer.html">Browse the file system</a></li> |
| <li><a href="logs">Logs</a></li> |
| </ul> |
| </li> |
| </ul> |
| </div> |
| </header> |
| |
| <div class="container"> |
| |
| <div id="alert-panel"> |
| <div class="alert alert-danger"> |
| <button type="button" class="close" onclick="$('#alert-panel').hide();">×</button> |
| <div class="alert-body" id="alert-panel-body"></div> |
| </div> |
| </div> |
| |
| <div class="tab-content"> |
| <div class="tab-pane" id="tab-overview"></div> |
| <div class="tab-pane" id="tab-datanode"></div> |
| <div class="tab-pane" id="tab-datanode-volume-failures"></div> |
| <div class="tab-pane" id="tab-snapshot"></div> |
| <div class="tab-pane" id="tab-startup-progress"></div> |
| </div> |
| |
| <div class="row"> |
| <hr /> |
| <div class="col-xs-2"><p>Hadoop, {release-year-token}.</p></div> |
| </div> |
| </div> |
| |
| <script type="text/x-dust-template" id="tmpl-dfshealth"> |
| |
| {#nn} |
| {@if cond="{DistinctVersionCount} > 1 || '{RollingUpgradeStatus}'.length || !'{UpgradeFinalized}'"} |
| <div class="alert alert-dismissable alert-info"> |
| <button type="button" class="close" data-dismiss="alert" aria-hidden="true">×</button> |
| |
| {#RollingUpgradeStatus} |
| {@if cond="{finalizeTime} > 0"} |
| <p>Rolling upgrade finalized at {#helper_date_tostring value="{finalizeTime}"/}. </p> |
| {:else} |
| <p>Rolling upgrade started at {#helper_date_tostring value="{startTime}"/}. </br> |
| {#createdRollbackImages} |
| Rollback image has been created. Proceed to upgrade daemons. |
| {:else} |
| Rollback image has not been created. |
| {/createdRollbackImages} |
| </p> |
| {/if} |
| {/RollingUpgradeStatus} |
| |
| {@if cond="{DistinctVersionCount} > 1"} |
| There are {DistinctVersionCount} versions of datanodes currently live: |
| {#DistinctVersions} |
| {key} ({value}) {@sep},{/sep} |
| {/DistinctVersions} |
| {/if} |
| |
| {^UpgradeFinalized} |
| <p>Upgrade in progress. Not yet finalized.</p> |
| {/UpgradeFinalized} |
| </div> |
| {/if} |
| |
| {@eq key=nnstat.State value="active"} |
| {@if cond="{NumberOfMissingBlocks} > 0"} |
| <div class="alert alert-dismissable alert-warning"> |
| <button type="button" class="close" data-dismiss="alert" aria-hidden="true">×</button> |
| |
| <p>There are {NumberOfMissingBlocks} missing blocks. The following files may be corrupted:</p> |
| <br/> |
| <div class="well"> |
| {#CorruptFiles} |
| {.}<br/> |
| {/CorruptFiles} |
| </div> |
| <p>Please check the logs or run fsck in order to identify the missing blocks.{@if cond="{NumberOfSnapshottableDirs} > 0"} Please run fsck with -includeSnapshots in order to see detailed reports about snapshots.{/if} See the Hadoop FAQ for common causes and potential solutions.</p> |
| </div> |
| {/if} |
| {/eq} |
| {/nn} |
| |
| <div class="page-header"><h1>Overview {#nnstat}<small>'{HostAndPort}' ({State})</small>{/nnstat}</h1></div> |
| |
| <table class="table table-bordered table-striped"> |
| {#HAInfo} |
| <tr><th>Namespace:</th><td>{Namespace}</td></tr> |
| <tr><th>Namenode ID:</th><td>{NamenodeID}</td></tr> |
| {/HAInfo} |
| {#nn} |
| <tr><th>Started:</th><td>{NNStartedTimeInMillis|date_tostring}</td></tr> |
| <tr><th>Version:</th><td>{Version}</td></tr> |
| <tr><th>Compiled:</th><td>{CompileInfo|format_compile_info}</td></tr> |
| <tr><th>Cluster ID:</th><td>{ClusterId}</td></tr> |
| <tr><th>Block Pool ID:</th><td>{BlockPoolId}</td></tr> |
| {/nn} |
| </table> |
| |
| <div class="page-header"><h1>Summary</h1></div> |
| <p> |
| Security is {#nnstat}{#SecurityEnabled}on{:else}off{/SecurityEnabled}{/nnstat}.</p> |
| <p>{#nn}{#Safemode}{.}{:else}Safemode is off.{/Safemode}{/nn}</p> |
| |
| <p> |
| {#fs} |
| {FilesTotal|fmt_number} files and directories, {BlocksTotal|fmt_number} blocks = {ObjectsTotal|fmt_number} total filesystem object(s). |
| {#helper_fs_max_objects/} |
| {/fs} |
| </p> |
| {#mem.HeapMemoryUsage} |
| <p>Heap Memory used {used|fmt_bytes} of {committed|fmt_bytes} Heap Memory. Max Heap Memory is {@eq key=max value="-1" type="number"}<unbounded>{:else}{max|fmt_bytes}{/eq}.</p> |
| {/mem.HeapMemoryUsage} |
| |
| {#mem.NonHeapMemoryUsage} |
| <p>Non Heap Memory used {used|fmt_bytes} of {committed|fmt_bytes} Commited Non Heap Memory. Max Non Heap Memory is {@eq key=max value="-1" type="number"}<unbounded>{:else}{max|fmt_bytes}{/eq}.</p> |
| {/mem.NonHeapMemoryUsage} |
| |
| {#nn} |
| <table class="table table-bordered table-striped"> |
| <tr><th> Configured Capacity:</th><td>{Total|fmt_bytes}</td></tr> |
| <tr><th> DFS Used:</th><td>{Used|fmt_bytes} ({PercentUsed|fmt_percentage})</td></tr> |
| <tr><th> Non DFS Used:</th><td>{NonDfsUsedSpace|fmt_bytes}</td></tr> |
| <tr><th> DFS Remaining:</th><td>{Free|fmt_bytes} ({PercentRemaining|fmt_percentage})</td></tr> |
| <tr><th> Block Pool Used:</th><td>{BlockPoolUsedSpace|fmt_bytes} ({PercentBlockPoolUsed|fmt_percentage})</td></tr> |
| <tr><th> DataNodes usages% (Min/Median/Max/stdDev): </th> |
| <td>{#NodeUsage.nodeUsage}{min} / {median} / {max} / {stdDev}{/NodeUsage.nodeUsage}</td></tr> |
| {/nn} |
| |
| {#fs} |
| <tr><th><a href="#tab-datanode">Live Nodes</a></th><td>{NumLiveDataNodes} (Decommissioned: {NumDecomLiveDataNodes}, In Maintenance: {NumInMaintenanceLiveDataNodes})</td></tr> |
| <tr><th><a href="#tab-datanode">Dead Nodes</a></th><td>{NumDeadDataNodes} (Decommissioned: {NumDecomDeadDataNodes}, In Maintenance: {NumInMaintenanceDeadDataNodes})</td></tr> |
| <tr><th><a href="#tab-datanode">Decommissioning Nodes</a></th><td>{NumDecommissioningDataNodes}</td></tr> |
| <tr><th><a href="#tab-datanode">Entering Maintenance Nodes</a></th><td> {NumEnteringMaintenanceDataNodes}</td></tr> |
| <tr><th><a href="#tab-datanode-volume-failures">Total Datanode Volume Failures</a></th><td>{VolumeFailuresTotal} ({EstimatedCapacityLostTotal|fmt_bytes})</td></tr> |
| {@eq key=nnstat.State value="active"} |
| <tr><th title="Excludes missing blocks.">Number of Under-Replicated Blocks</th><td>{UnderReplicatedBlocks}</td></tr> |
| <tr><th>Number of Blocks Pending Deletion</th><td>{PendingDeletionBlocks}</td></tr> |
| {/eq} |
| <tr><th>Block Deletion Start Time</th><td>{BlockDeletionStartTime|date_tostring}</td></tr> |
| {/fs} |
| |
| {#fsn} |
| <tr><th>Last Checkpoint Time</th><td>{@if cond="{LastCheckpointTime} === 0"}Never{:else}{LastCheckpointTime|date_tostring}{/if}</td></tr> |
| {/fsn} |
| </table> |
| |
| <div class="page-header"><h1>NameNode Journal Status</h1></div> |
| <p><b>Current transaction ID:</b> {nn.JournalTransactionInfo.LastAppliedOrWrittenTxId}</p> |
| <table class="table" title="NameNode Journals"> |
| <thead> |
| <tr><th>Journal Manager</th><th>State</th></tr> |
| </thead> |
| <tbody> |
| {#nn.NameJournalStatus} |
| <tr><td>{manager}</td><td>{stream}</td></tr> |
| {/nn.NameJournalStatus} |
| </tbody> |
| </table> |
| |
| <div class="page-header"><h1>NameNode Storage</h1></div> |
| <table class="table" title="NameNode Storage"> |
| <thead><tr><td><b>Storage Directory</b></td><td><b>Type</b></td><td><b>State</b></td></tr></thead> |
| {#nn.NameDirStatuses} |
| {#active}{#helper_dir_status type="Active"/}{/active} |
| {#failed}{#helper_dir_status type="Failed"/}{/failed} |
| {/nn.NameDirStatuses} |
| </table> |
| <div class="page-header"><h1>DFS Storage Types</h1></div> |
| <small> |
| <table class="table"> |
| <thead> |
| <tr> |
| <th>Storage Type</th> |
| <th>Configured Capacity</th> |
| <th>Capacity Used</th> |
| <th>Capacity Remaining</th> |
| <th>Block Pool Used</th> |
| <th>Nodes In Service</th> |
| </tr> |
| </thead> |
| {#blockstats.StorageTypeStats} |
| <tr> |
| <td>{key}</td> |
| <td>{value.capacityTotal|fmt_bytes}</td> |
| <td>{value.capacityUsed|fmt_bytes} ({value.capacityUsedPercentage|fmt_percentage})</td> |
| <td>{value.capacityRemaining|fmt_bytes} ({value.capacityRemainingPercentage|fmt_percentage})</td> |
| <td>{value.blockPoolUsed|fmt_bytes}</td> |
| <td>{value.nodesInService}</td> |
| </tr> |
| {/blockstats.StorageTypeStats} |
| </table> |
| </small> |
| </script> |
| |
| <script type="text/x-dust-template" id="tmpl-snapshot"> |
| <div class="page-header"><h1>Snapshot Summary</h1></div> |
| <div class="page-header"><h1><small>Snapshottable directories: {@size key=SnapshottableDirectories}{/size}</small></div> |
| <small> |
| <table class="table"> |
| <thead> |
| <tr> |
| <th>Path</th> |
| <th>Snapshot Number</th> |
| <th>Snapshot Quota</th> |
| <th>Modification Time</th> |
| <th>Permission</th> |
| <th>Owner</th> |
| <th>Group</th> |
| </tr> |
| </thead> |
| {#SnapshottableDirectories} |
| <tr> |
| <td>{path}</td> |
| <td>{snapshotNumber}</td> |
| <td>{snapshotQuota}</td> |
| <td>{modificationTime|date_tostring}</td> |
| <td>{permission|helper_to_permission}</td> |
| <td>{owner}</td> |
| <td>{group}</td> |
| </tr> |
| {/SnapshottableDirectories} |
| </table> |
| </small> |
| |
| <div class="page-header"><h1><small>Snapshotted directories: {@size key=Snapshots}{/size}</small></div> |
| |
| <small> |
| <table class="table"> |
| <thead> |
| <tr> |
| <th>Snapshot ID</th> |
| <th>Snapshot Directory</th> |
| <th>Modification Time</th> |
| </tr> |
| </thead> |
| {#Snapshots} |
| <tr> |
| <td>{snapshotID}</td> |
| <td>{snapshotDirectory}</td> |
| <td>{modificationTime|date_tostring}</td> |
| </tr> |
| {/Snapshots} |
| </table> |
| </small> |
| </script> |
| |
| <script type="text/x-dust-template" id="tmpl-datanode"> |
| <div class="page-header"><h1>Datanode Information</h1></div> |
| <div> |
| <ul class="dfshealth-node-legend"> |
| <li class="dfshealth-node-icon dfshealth-node-alive">In service</li> |
| <li class="dfshealth-node-icon dfshealth-node-down">Down</li> |
| <li class="dfshealth-node-icon dfshealth-node-decommissioned">Decommissioned</li> |
| <li class="dfshealth-node-icon dfshealth-node-down-decommissioned">Decommissioned & dead</li> |
| <li class="dfshealth-node-icon dfshealth-node-down-maintenance">In Maintenance & dead</li> |
| </ul> |
| </div> |
| <div class="page-header"><h1><small>Datanode usage histogram</small></h1></div> |
| <small><div id="datanode-usage-histogram"></div></small> |
| <div class="page-header"><h1><small>In operation</small></h1></div> |
| <small> |
| <table class="table" id="table-datanodes"> |
| <thead> |
| <tr> |
| <th>Node</th> |
| <th>Http Address</th> |
| <th>Last contact</th> |
| <th>Last Block Report</th> |
| <th style="width:180px; text-align:center">Capacity</th> |
| <th>Blocks</th> |
| <th>Block pool used</th> |
| <th>Version</th> |
| </tr> |
| </thead> |
| {#LiveNodes} |
| <tr> |
| <td ng-value="{state}-{name}" class="dfshealth-node-icon dfshealth-node-{state}">{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> |
| <td ng-value="{usedPercentage}"> |
| <div> |
| <div style="display:inline-block; float: left; padding-right: 10px;">{capacity|fmt_bytes}</div> |
| <div class="clearfix progress dfshealth-node-capacity-bar" title="Non DFS: {nonDfsUsedSpace|fmt_bytes}, Used: {used|fmt_bytes}"> |
| <div class="progress-bar {#helper_usage_bar value="{usedPercentage}"/}" style="width: {usedPercentage}%"> |
| </div> |
| </div> |
| </div> |
| </td> |
| <td title="Blocks Scheduled : {blockScheduled}">{numBlocks}</td> |
| <td ng-value="{blockPoolUsedPercent}">{blockPoolUsed|fmt_bytes} ({blockPoolUsedPercent|fmt_percentage})</td> |
| <td>{version}</td> |
| </tr> |
| {/LiveNodes} |
| {#DeadNodes} |
| <tr class="danger"> |
| <td ng-value="{state}-{name}" class="dfshealth-node-icon dfshealth-node-{state}">{name} ({xferaddr})</td> |
| <td></td> |
| <td>{#helper_relative_time value="{lastContact}"/}</td> |
| <td></td> |
| <td></td> |
| <td></td> |
| <td></td> |
| </tr> |
| {/DeadNodes} |
| </table> |
| </small> |
| |
| <div class="page-header"><h1><small>Entering Maintenance</small></h1></div> |
| <small> |
| {?EnteringMaintenanceNodes} |
| <table class="table"> |
| <thead> |
| <tr> |
| <th>Node</th> |
| <th>Under replicated blocks</th> |
| <th>Blocks with no live replicas</th> |
| <th>Under Replicated Blocks <br/>In files under construction</th> |
| </tr> |
| </thead> |
| {#EnteringMaintenanceNodes} |
| <tr> |
| <td>{name} ({xferaddr})</td> |
| <td>{underReplicatedBlocks}</td> |
| <td>{maintenanceOnlyReplicas}</td> |
| <td>{underReplicateInOpenFiles}</td> |
| </tr> |
| {/EnteringMaintenanceNodes} |
| </table> |
| {:else} |
| No nodes are entering maintenance. |
| {/EnteringMaintenanceNodes} |
| </small> |
| |
| <div class="page-header"><h1><small>Decommissioning</small></h1></div> |
| <small> |
| {?DecomNodes} |
| <table class="table"> |
| <thead> |
| <tr> |
| <th>Node</th> |
| <th>Under replicated blocks</th> |
| <th>Blocks with no live replicas</th> |
| <th>Under Replicated Blocks <br/>In files under construction</th> |
| </tr> |
| </thead> |
| {#DecomNodes} |
| <tr> |
| <td>{name} ({xferaddr})</td> |
| <td>{underReplicatedBlocks}</td> |
| <td>{decommissionOnlyReplicas}</td> |
| <td>{underReplicateInOpenFiles}</td> |
| </tr> |
| {/DecomNodes} |
| </table> |
| {:else} |
| No nodes are decommissioning |
| {/DecomNodes} |
| </small> |
| </script> |
| |
| <script type="text/x-dust-template" id="tmpl-datanode-volume-failures"> |
| <div class="page-header"><h1>Datanode Volume Failures</h1></div> |
| <small> |
| {?LiveNodes} |
| <table class="table"> |
| <thead> |
| <tr> |
| <th>Node</th> |
| <th>Last Failure Date</th> |
| <th>Failed Volumes</th> |
| <th>Estimated Capacity Lost</th> |
| <th>Failed Storage Locations</th> |
| </tr> |
| </thead> |
| {#LiveNodes} |
| <tr> |
| <td>{name} ({xferaddr})</td> |
| <td>{#helper_date_tostring value="{lastVolumeFailureDate}"/}</td> |
| <td>{volfails}</td> |
| <td>{estimatedCapacityLostTotal|fmt_bytes}</td> |
| <td>{#failedStorageLocations}{.}{@sep}<br />{/sep}{/failedStorageLocations}</td> |
| </tr> |
| {/LiveNodes} |
| </table> |
| {:else} |
| There are no reported volume failures. |
| {/LiveNodes} |
| </small> |
| </script> |
| |
| <script type="text/x-dust-template" id="tmpl-startup-progress"> |
| <div class="page-header"><h1>Startup Progress</h1></div> |
| <p>Elapsed Time: {elapsedTime|fmt_time}, Percent Complete: {percentComplete|fmt_percentage}</p> |
| <table class="table"> |
| <thead> |
| <tr class="active"> |
| <th>Phase</th> |
| <th style="text-align:center">Completion</th> |
| <th style="text-align:center">Elapsed Time</th> |
| </tr> |
| </thead> |
| <tbody> |
| {#phases} |
| <tr class="phase"> |
| <td class="startupdesc">{desc} {file} {size|fmt_bytes}</td> |
| <td style="text-align:center">{percentComplete|fmt_percentage}</td> |
| <td style="text-align:center">{elapsedTime|fmt_time}</td> |
| </tr> |
| {#steps root_file=file} |
| <tr class="step"> |
| <td class="startupdesc">{stepDesc} {stepFile} {stepSize|fmt_bytes} ({count}/{total})</td> |
| <td style="text-align:center">{percentComplete|fmt_percentage}</td> |
| <td></td> |
| </tr> |
| {/steps} |
| {/phases} |
| </tbody> |
| </table> |
| </script> |
| |
| <script type="text/javascript" src="/static/jquery-1.10.2.min.js"> |
| </script><script type="text/javascript" src="/static/jquery.dataTables.min.js"> |
| </script><script type="text/javascript" src="/static/bootstrap-3.0.2/js/bootstrap.min.js"> |
| </script><script type="text/javascript" src="/static/dataTables.bootstrap.js"> |
| </script><script type="text/javascript" src="/static/moment.min.js"> |
| </script><script type="text/javascript" src="/static/dust-full-2.0.0.min.js"> |
| </script><script type="text/javascript" src="/static/dust-helpers-1.1.1.min.js"> |
| </script><script type="text/javascript" src="/static/dfs-dust.js"> |
| </script><script type="text/javascript" src="/static/d3-v4.1.1.min.js"> |
| </script><script type="text/javascript" src="dfshealth.js"> |
| </script> |
| </body> |
| </html> |