Issue Details (XML | Word | Printable)

Key: HADOOP-4430
Type: Bug Bug
Status: Closed Closed
Resolution: Fixed
Priority: Blocker Blocker
Assignee: Suresh Srinivas
Reporter: Suresh Srinivas
Votes: 0
Watchers: 1
Operations

If you were logged in you would be able to see more operations.
Hadoop Common

Namenode Web UI capacity report is inconsistent with Balancer

Created: 16/Oct/08 05:56 PM   Updated: 08/Jul/09 04:43 PM
Return to search
Component/s: None
Affects Version/s: 0.19.0
Fix Version/s: 0.19.0

Time Tracking:
Not Specified

File Attachments:
  Size
Text File Licensed for inclusion in ASF works HADOOP-4430.patch 2008-10-17 10:49 PM Suresh Srinivas 22 kB
Text File Licensed for inclusion in ASF works HADOOP-4430.patch 2008-10-17 09:43 PM Suresh Srinivas 22 kB
Text File Licensed for inclusion in ASF works HADOOP-4430.patch 2008-10-17 06:43 PM Suresh Srinivas 22 kB
Issue Links:
Blocker
 

Hadoop Flags: Reviewed, Incompatible change
Release Note:
Changed reporting in the NameNode Web UI to more closely reflect the behavior of the re-balancer. Removed no longer used config parameter dfs.datanode.du.pct from hadoop-default.xml.
Resolution Date: 20/Oct/08 06:17 PM


 Description  « Hide
Solution to 2816 changed
  • Total Capacity definition from (the disk space of all data directories) to (the disk space of all the data directories - the reserved space)
  • We added a new element Present Capacity to the report. It is set to (Used Capacity + Remaining Capacity)
  • We changed the Used Percentage reported from (Used Capacity)/(Total Capacity) to (Used Capacity)/(Present Capacity)
  • All these changes are displayed on Namenode Web UI.

Balancer functionality
Balancer script is started with a threshold parameter. It tries to move the blocks from the nodes that have Used % that is more than (Cluster average + threshold) to the nodes that have less than (Cluster average - threshold). Essentially balancer gets all the datanodes used % to with in (the Cluster average +/- threshold).

Inconsistencies due to the change in 2816
When MapReduce jobs are run, temporary files are generated. This eats away a lot of space from Present Capacity. The difference between the Total Capacity and the Present Capacity can be huge. Currently balancer computes Used Percentage based (Used Capacity)/(Total Capacity). The Used % the balancer uses could be significantly different from Used % displayed on the Namenode Web UI. When balancer is done balancing, the Namenode Used % might still appear unbalanced.



 All   Comments   Work Log   Change History   Subversion Commits      Sort Order: Ascending order - Click to sort in descending order
Suresh Srinivas added a comment - 16/Oct/08 06:40 PM
Proposed solution:
  • The definition of "Configured Capacity" from 2816 will be retained.
  • The "DFS Used %" will be changed from (DFS Used)/(Present Capacity) to (DFS Used)/(Configured Capacity)
  • "Present Capacity" introduced in 2816 should be same as "Configured Capacity", if the MapReduce generated temporary files do not take more than the reserved space. When the temporary files use more than the reserved space, "Present Capacity" reduces proportionally. With this change, "Present Capacity" data is removed. Instead, the extra space exceeding reserved space used by temporary files, is reported as "Non DFS Used" space.
  • New "DFS Remaining %" will be added to explicitly to indicate remaining % space for DFS used.
  • Currently a percentage factor, as defined by "dfs.datanode.du.pct", is used to reduce the actual remaining space to calculate the DFS Remaining. This does not serve any purpose (see the comments in 2816). This will be removed.

Here are the definition of data reported on the Web UI:
Configured Capacity: Disk space corresponding to all the data directories - Reserved space as defined by dfs.datanode.du.reserved
DFS Used: Space used by DFS
Non DFS Used: 0 if the temporary files do not exceed reserved space. Otherwise this is the size by which temporary files exceed the reserved space and encroach into the DFS configured space.
DFS Remaining: (Configured Capacity - DFS Used - Non DFS Used)
DFS Used %: (DFS Used / Configured Capacity) * 100
DFS Remaining % = (DFS Remaining / Configured Capacity) * 100


Robert Chansler added a comment - 16/Oct/08 06:40 PM
We really want this in 0.19 to avoid operational confusion. A successful execution of the rebalancer should result in the appearance of balance on the home page!

Suresh Srinivas added a comment - 17/Oct/08 06:43 PM
The changes are based on the solution presented in an earlier comment.

Here is the test-patch result:
[exec] +1 overall.

[exec] +1 @author. The patch does not contain any @author tags.

[exec] +1 tests included. The patch appears to include 3 new or modified tests.

[exec] +1 javadoc. The javadoc tool did not generate any warning messages.

[exec] +1 javac. The applied patch does not increase the total number of javac compiler warnings.

[exec] +1 findbugs. The patch does not introduce any new Findbugs warnings.


Hairong Kuang added a comment - 17/Oct/08 08:58 PM
1. DatanodeInfo.append() line 190: u should be nonDFSUsed.
2. FSNamesystem.getCapacityUsedNodnDFS() line 3306: return should be out of the synchronized block.
3. FSnamesystem.getCapacityRemainingPercent() line 3324: the calculation is not consistent with that in DatanodeInfo.getRemainingPercent().

Suresh Srinivas added a comment - 17/Oct/08 09:43 PM
Thanks Hairong for the review. I have attached a new patch with the suggested changes.

Suresh Srinivas added a comment - 17/Oct/08 10:49 PM
Previous patch does not build. Attaching a new one.

Hairong Kuang added a comment - 17/Oct/08 10:53 PM
+1. The patch looks good to me.

Hadoop QA added a comment - 18/Oct/08 08:07 AM
+1 overall. Here are the results of testing the latest attachment
http://issues.apache.org/jira/secure/attachment/12392389/HADOOP-4430.patch
against trunk revision 705831.

+1 @author. The patch does not contain any @author tags.

+1 tests included. The patch appears to include 3 new or modified tests.

+1 javadoc. The javadoc tool did not generate any warning messages.

+1 javac. The applied patch does not increase the total number of javac compiler warnings.

+1 findbugs. The patch does not introduce any new Findbugs warnings.

+1 Eclipse classpath. The patch retains Eclipse classpath integrity.

+1 core tests. The patch passed core unit tests.

+1 contrib tests. The patch passed contrib unit tests.

Test results: http://hudson.zones.apache.org/hudson/job/Hadoop-Patch/3492/testReport/
Findbugs warnings: http://hudson.zones.apache.org/hudson/job/Hadoop-Patch/3492/artifact/trunk/build/test/findbugs/newPatchFindbugsWarnings.html
Checkstyle results: http://hudson.zones.apache.org/hudson/job/Hadoop-Patch/3492/artifact/trunk/build/test/checkstyle-errors.html
Console output: http://hudson.zones.apache.org/hudson/job/Hadoop-Patch/3492/console

This message is automatically generated.


Hairong Kuang added a comment - 20/Oct/08 06:17 PM
I just committed this. Thank you, Suresh!

Raghu Angadi added a comment - 20/Oct/08 06:18 PM
What is the worst case possible if some one upgrades without noting the changes?

Suresh Srinivas added a comment - 20/Oct/08 06:49 PM
This change is mainly related to Web UI. It provides better clarity to how the file system capacity is represented on Web UI. This should not affect any functionality post upgrade.

Hudson added a comment - 23/Oct/08 09:56 PM