001/**
002 * Licensed to the Apache Software Foundation (ASF) under one
003 * or more contributor license agreements.  See the NOTICE file
004 * distributed with this work for additional information
005 * regarding copyright ownership.  The ASF licenses this file
006 * to you under the Apache License, Version 2.0 (the
007 * "License"); you may not use this file except in compliance
008 * with the License.  You may obtain a copy of the License at
009 *
010 *     http://www.apache.org/licenses/LICENSE-2.0
011 *
012 * Unless required by applicable law or agreed to in writing, software
013 * distributed under the License is distributed on an "AS IS" BASIS,
014 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
015 * See the License for the specific language governing permissions and
016 * limitations under the License.
017 */
018package org.apache.hadoop.hdfs.server.namenode;
019
020import java.util.Map;
021
022import org.apache.hadoop.classification.InterfaceAudience;
023import org.apache.hadoop.classification.InterfaceStability;
024import org.apache.hadoop.hdfs.protocol.RollingUpgradeInfo;
025
026/**
027 * This is the JMX management interface for namenode information
028 */
029@InterfaceAudience.Public
030@InterfaceStability.Stable
031public interface NameNodeMXBean {
032
033  /**
034   * Gets the version of Hadoop.
035   * 
036   * @return the version
037   */
038  public String getVersion();
039
040  /**
041   * Get the version of software running on the Namenode
042   * @return a string representing the version
043   */
044  public String getSoftwareVersion();
045
046  /**
047   * Gets the used space by data nodes.
048   * 
049   * @return the used space by data nodes
050   */
051  public long getUsed();
052  
053  /**
054   * Gets total non-used raw bytes.
055   * 
056   * @return total non-used raw bytes
057   */
058  public long getFree();
059  
060  /**
061   * Gets total raw bytes including non-dfs used space.
062   * 
063   * @return the total raw bytes including non-dfs used space
064   */
065  public long getTotal();
066  
067  
068  /**
069   * Gets the safemode status
070   * 
071   * @return the safemode status
072   * 
073   */
074  public String getSafemode();
075  
076  /**
077   * Checks if upgrade is finalized.
078   * 
079   * @return true, if upgrade is finalized
080   */
081  public boolean isUpgradeFinalized();
082
083  /**
084   * Gets the RollingUpgrade information
085   *
086   * @return Rolling upgrade information
087   */
088  public RollingUpgradeInfo.Bean getRollingUpgradeStatus();
089
090  /**
091   * Gets total used space by data nodes for non DFS purposes such as storing
092   * temporary files on the local file system
093   * 
094   * @return the non dfs space of the cluster
095   */
096  public long getNonDfsUsedSpace();
097  
098  /**
099   * Gets the total used space by data nodes as percentage of total capacity
100   * 
101   * @return the percentage of used space on the cluster.
102   */
103  public float getPercentUsed();
104  
105  /**
106   * Gets the total remaining space by data nodes as percentage of total 
107   * capacity
108   * 
109   * @return the percentage of the remaining space on the cluster
110   */
111  public float getPercentRemaining();
112
113  /**
114   * Returns the amount of cache used by the datanode (in bytes).
115   */
116  public long getCacheUsed();
117
118  /**
119   * Returns the total cache capacity of the datanode (in bytes).
120   */
121  public long getCacheCapacity();
122  
123  /**
124   * Get the total space used by the block pools of this namenode
125   */
126  public long getBlockPoolUsedSpace();
127  
128  /**
129   * Get the total space used by the block pool as percentage of total capacity
130   */
131  public float getPercentBlockPoolUsed();
132    
133  /**
134   * Gets the total numbers of blocks on the cluster.
135   * 
136   * @return the total number of blocks of the cluster
137   */
138  public long getTotalBlocks();
139  
140  /**
141   * Gets the total number of files on the cluster
142   * 
143   * @return the total number of files on the cluster
144   */
145  public long getTotalFiles();
146  
147  /**
148   * Gets the total number of missing blocks on the cluster
149   * 
150   * @return the total number of files and blocks on the cluster
151   */
152  public long getNumberOfMissingBlocks();
153  
154  /**
155   * Gets the number of threads.
156   * 
157   * @return the number of threads
158   */
159  public int getThreads();
160
161  /**
162   * Gets the live node information of the cluster.
163   * 
164   * @return the live node information
165   */
166  public String getLiveNodes();
167  
168  /**
169   * Gets the dead node information of the cluster.
170   * 
171   * @return the dead node information
172   */
173  public String getDeadNodes();
174  
175  /**
176   * Gets the decommissioning node information of the cluster.
177   * 
178   * @return the decommissioning node information
179   */
180  public String getDecomNodes();
181  
182  /**
183   * Gets the cluster id.
184   * 
185   * @return the cluster id
186   */
187  public String getClusterId();
188  
189  /**
190   * Gets the block pool id.
191   * 
192   * @return the block pool id
193   */
194  public String getBlockPoolId();
195
196  /**
197   * Get status information about the directories storing image and edits logs
198   * of the NN.
199   * 
200   * @return the name dir status information, as a JSON string.
201   */
202  public String getNameDirStatuses();
203
204  /**
205   * Get Max, Median, Min and Standard Deviation of DataNodes usage.
206   *
207   * @return the DataNode usage information, as a JSON string.
208   */
209  public String getNodeUsage();
210
211  /**
212   * Get status information about the journals of the NN.
213   *
214   * @return the name journal status information, as a JSON string.
215   */
216  public String getNameJournalStatus();
217  
218  /**
219   * Get information about the transaction ID, including the last applied 
220   * transaction ID and the most recent checkpoint's transaction ID
221   */
222  public String getJournalTransactionInfo();
223
224  /**
225   * Gets the NN start time
226   *
227   * @return the NN start time
228   */
229  public String getNNStarted();
230
231  /**
232   * Get the compilation information which contains date, user and branch
233   *
234   * @return the compilation information, as a JSON string.
235   */
236  public String getCompileInfo();
237
238  /**
239   * Get the list of corrupt files
240   *
241   * @return the list of corrupt files, as a JSON string.
242   */
243  public String getCorruptFiles();
244
245  /**
246   * Get the number of distinct versions of live datanodes
247   * 
248   * @return the number of distinct versions of live datanodes
249   */
250  public int getDistinctVersionCount();
251
252  /**
253   * Get the number of live datanodes for each distinct versions
254   * 
255   * @return the number of live datanodes for each distinct versions
256   */
257  public Map<String, Integer> getDistinctVersions();
258  
259}