From a96ea528cc9f3d25d4a135fd8538ce4d59e6afb8 Mon Sep 17 00:00:00 2001 From: Tsz-Wo Nicholas Sze Date: Thu, 21 Apr 2016 15:41:50 -0700 Subject: [PATCH] HDFS-10309 Balancer doesn't honor dfs.blocksize value defined with suffix k(kilo), m(mega), g(giga). Contributed by Amit Anand --- .../hadoop/hdfs/server/balancer/Balancer.java | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/balancer/Balancer.java b/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/balancer/Balancer.java index 6f01ae16020..4e94b87fab1 100644 --- a/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/balancer/Balancer.java +++ b/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/balancer/Balancer.java @@ -230,6 +230,15 @@ static long getLong(Configuration conf, String key, long defaultValue) { return v; } + static long getLongBytes(Configuration conf, String key, long defaultValue) { + final long v = conf.getLongBytes(key, defaultValue); + LOG.info(key + " = " + v + " (default=" + defaultValue + ")"); + if (v <= 0) { + throw new HadoopIllegalArgumentException(key + " = " + v + " <= " + 0); + } + return v; + } + static int getInt(Configuration conf, String key, int defaultValue) { final int v = conf.getInt(key, defaultValue); LOG.info(key + " = " + v + " (default=" + defaultValue + ")"); @@ -261,10 +270,10 @@ static int getInt(Configuration conf, String key, int defaultValue) { DFSConfigKeys.DFS_DATANODE_BALANCE_MAX_NUM_CONCURRENT_MOVES_KEY, DFSConfigKeys.DFS_DATANODE_BALANCE_MAX_NUM_CONCURRENT_MOVES_DEFAULT); - final long getBlocksSize = getLong(conf, + final long getBlocksSize = getLongBytes(conf, DFSConfigKeys.DFS_BALANCER_GETBLOCKS_SIZE_KEY, DFSConfigKeys.DFS_BALANCER_GETBLOCKS_SIZE_DEFAULT); - final long getBlocksMinBlockSize = getLong(conf, + final long getBlocksMinBlockSize = getLongBytes(conf, DFSConfigKeys.DFS_BALANCER_GETBLOCKS_MIN_BLOCK_SIZE_KEY, DFSConfigKeys.DFS_BALANCER_GETBLOCKS_MIN_BLOCK_SIZE_DEFAULT); @@ -279,10 +288,10 @@ static int getInt(Configuration conf, String key, int defaultValue) { this.sourceNodes = p.getSourceNodes(); this.runDuringUpgrade = p.getRunDuringUpgrade(); - this.maxSizeToMove = getLong(conf, + this.maxSizeToMove = getLongBytes(conf, DFSConfigKeys.DFS_BALANCER_MAX_SIZE_TO_MOVE_KEY, DFSConfigKeys.DFS_BALANCER_MAX_SIZE_TO_MOVE_DEFAULT); - this.defaultBlockSize = getLong(conf, + this.defaultBlockSize = getLongBytes(conf, DFSConfigKeys.DFS_BLOCK_SIZE_KEY, DFSConfigKeys.DFS_BLOCK_SIZE_DEFAULT); }