|
@@ -139,6 +139,12 @@ import static org.apache.hadoop.hdfs.DFSConfigKeys.DFS_HA_NN_NOT_BECOME_ACTIVE_I
|
|
|
import static org.apache.hadoop.hdfs.DFSConfigKeys.DFS_HA_NN_NOT_BECOME_ACTIVE_IN_SAFEMODE_DEFAULT;
|
|
|
import static org.apache.hadoop.hdfs.DFSConfigKeys.DFS_IMAGE_PARALLEL_LOAD_DEFAULT;
|
|
|
import static org.apache.hadoop.hdfs.DFSConfigKeys.DFS_IMAGE_PARALLEL_LOAD_KEY;
|
|
|
+import static org.apache.hadoop.hdfs.DFSConfigKeys.DFS_NAMENODE_LOCK_DETAILED_METRICS_DEFAULT;
|
|
|
+import static org.apache.hadoop.hdfs.DFSConfigKeys.DFS_NAMENODE_LOCK_DETAILED_METRICS_KEY;
|
|
|
+import static org.apache.hadoop.hdfs.DFSConfigKeys.DFS_NAMENODE_READ_LOCK_REPORTING_THRESHOLD_MS_DEFAULT;
|
|
|
+import static org.apache.hadoop.hdfs.DFSConfigKeys.DFS_NAMENODE_READ_LOCK_REPORTING_THRESHOLD_MS_KEY;
|
|
|
+import static org.apache.hadoop.hdfs.DFSConfigKeys.DFS_NAMENODE_WRITE_LOCK_REPORTING_THRESHOLD_MS_DEFAULT;
|
|
|
+import static org.apache.hadoop.hdfs.DFSConfigKeys.DFS_NAMENODE_WRITE_LOCK_REPORTING_THRESHOLD_MS_KEY;
|
|
|
import static org.apache.hadoop.hdfs.DFSConfigKeys.DFS_NAMENODE_BLOCKPLACEMENTPOLICY_MIN_BLOCKS_FOR_WRITE_DEFAULT;
|
|
|
import static org.apache.hadoop.hdfs.DFSConfigKeys.DFS_NAMENODE_BLOCKPLACEMENTPOLICY_MIN_BLOCKS_FOR_WRITE_KEY;
|
|
|
import static org.apache.hadoop.hdfs.client.HdfsClientConfigKeys.DFS_NAMENODE_RPC_PORT_DEFAULT;
|
|
@@ -371,7 +377,10 @@ public class NameNode extends ReconfigurableBase implements
|
|
|
DFS_NAMENODE_DECOMMISSION_BACKOFF_MONITOR_PENDING_BLOCKS_PER_LOCK,
|
|
|
DFS_NAMENODE_BLOCKPLACEMENTPOLICY_MIN_BLOCKS_FOR_WRITE_KEY,
|
|
|
IPC_SERVER_LOG_SLOW_RPC,
|
|
|
- IPC_SERVER_LOG_SLOW_RPC_THRESHOLD_MS_KEY));
|
|
|
+ IPC_SERVER_LOG_SLOW_RPC_THRESHOLD_MS_KEY,
|
|
|
+ DFS_NAMENODE_LOCK_DETAILED_METRICS_KEY,
|
|
|
+ DFS_NAMENODE_WRITE_LOCK_REPORTING_THRESHOLD_MS_KEY,
|
|
|
+ DFS_NAMENODE_READ_LOCK_REPORTING_THRESHOLD_MS_KEY));
|
|
|
|
|
|
private static final String USAGE = "Usage: hdfs namenode ["
|
|
|
+ StartupOption.BACKUP.getName() + "] | \n\t["
|
|
@@ -2378,6 +2387,10 @@ public class NameNode extends ReconfigurableBase implements
|
|
|
} else if (property.equals(IPC_SERVER_LOG_SLOW_RPC) ||
|
|
|
(property.equals(IPC_SERVER_LOG_SLOW_RPC_THRESHOLD_MS_KEY))) {
|
|
|
return reconfigureLogSlowRPC(property, newVal);
|
|
|
+ } else if (property.equals(DFS_NAMENODE_LOCK_DETAILED_METRICS_KEY)
|
|
|
+ || property.equals(DFS_NAMENODE_READ_LOCK_REPORTING_THRESHOLD_MS_KEY)
|
|
|
+ || property.equals(DFS_NAMENODE_WRITE_LOCK_REPORTING_THRESHOLD_MS_KEY)) {
|
|
|
+ return reconfigureFSNamesystemLockMetricsParameters(property, newVal);
|
|
|
} else {
|
|
|
throw new ReconfigurationException(property, newVal, getConf().get(
|
|
|
property));
|
|
@@ -2736,6 +2749,48 @@ public class NameNode extends ReconfigurableBase implements
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+ private String reconfigureFSNamesystemLockMetricsParameters(final String property,
|
|
|
+ final String newVal) throws ReconfigurationException {
|
|
|
+ String result;
|
|
|
+ try {
|
|
|
+ switch (property) {
|
|
|
+ case DFS_NAMENODE_LOCK_DETAILED_METRICS_KEY: {
|
|
|
+ if (newVal != null && !newVal.equalsIgnoreCase("true") &&
|
|
|
+ !newVal.equalsIgnoreCase("false")) {
|
|
|
+ throw new IllegalArgumentException(newVal + " is not boolean value");
|
|
|
+ }
|
|
|
+ boolean enable = (newVal == null ?
|
|
|
+ DFS_NAMENODE_LOCK_DETAILED_METRICS_DEFAULT : Boolean.parseBoolean(newVal));
|
|
|
+ result = Boolean.toString(enable);
|
|
|
+ namesystem.setMetricsEnabled(enable);
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ case DFS_NAMENODE_READ_LOCK_REPORTING_THRESHOLD_MS_KEY: {
|
|
|
+ long readLockReportingThresholdMs = (newVal == null ?
|
|
|
+ DFS_NAMENODE_READ_LOCK_REPORTING_THRESHOLD_MS_DEFAULT : Long.parseLong(newVal));
|
|
|
+ result = Long.toString(readLockReportingThresholdMs);
|
|
|
+ namesystem.setReadLockReportingThresholdMs(readLockReportingThresholdMs);
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ case DFS_NAMENODE_WRITE_LOCK_REPORTING_THRESHOLD_MS_KEY: {
|
|
|
+ long writeLockReportingThresholdMs = (newVal == null ?
|
|
|
+ DFS_NAMENODE_WRITE_LOCK_REPORTING_THRESHOLD_MS_DEFAULT : Long.parseLong(newVal));
|
|
|
+ result = Long.toString(writeLockReportingThresholdMs);
|
|
|
+ namesystem.setWriteLockReportingThresholdMs(writeLockReportingThresholdMs);
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ default: {
|
|
|
+ throw new IllegalArgumentException("Unexpected property " + property + " in " +
|
|
|
+ "reconfigureFSNamesystemLockMetricsParameters");
|
|
|
+ }
|
|
|
+ }
|
|
|
+ LOG.info("RECONFIGURE* changed FSNamesystemLockMetricsParameters {} to {}", property, result);
|
|
|
+ return result;
|
|
|
+ } catch (IllegalArgumentException e){
|
|
|
+ throw new ReconfigurationException(property, newVal, getConf().get(property), e);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
@Override // ReconfigurableBase
|
|
|
protected Configuration getNewConf() {
|
|
|
return new HdfsConfiguration();
|