فهرست منبع

HADOOP-1766. Save memory in namenode by having BlockInfo extend Block. Contributed by Konstantin.

git-svn-id: https://svn.apache.org/repos/asf/lucene/hadoop/trunk@569019 13f79535-47bb-0310-9956-ffa450edef68
Doug Cutting 17 سال پیش
والد
کامیت
3b15298265
3فایلهای تغییر یافته به همراه18 افزوده شده و 6 حذف شده
  1. 4 0
      CHANGES.txt
  2. 7 1
      src/java/org/apache/hadoop/dfs/Block.java
  3. 7 5
      src/java/org/apache/hadoop/dfs/BlocksMap.java

+ 4 - 0
CHANGES.txt

@@ -44,6 +44,10 @@ Trunk (unreleased changes)
     HADOOP-1759.  Change file name in INode from String to byte[],
     saving memory on the namenode. (Konstantin Shvachko via cutting)
 
+    HADOOP-1766.  Save memory in namenode by having BlockInfo extend
+    Block, and replace many uses of Block with BlockInfo.
+    (Konstantin Shvachko via cutting)
+
   BUG FIXES
 
     HADOOP-1463.  HDFS report correct usage statistics for disk space

+ 7 - 1
src/java/org/apache/hadoop/dfs/Block.java

@@ -18,7 +18,6 @@
 package org.apache.hadoop.dfs;
 
 import java.io.*;
-import java.util.*;
 import org.apache.hadoop.io.*;
 
 /**************************************************
@@ -65,6 +64,13 @@ class Block implements Writable, Comparable {
     this.len = len;
   }
 
+  /**
+   */
+  public Block(Block blk) {
+    this.blkid = blk.blkid;
+    this.len = blk.len;
+  }
+
   /**
    * Find the blockid from the given filename
    */

+ 7 - 5
src/java/org/apache/hadoop/dfs/BlocksMap.java

@@ -29,7 +29,7 @@ class BlocksMap {
   /**
    * Internal class for block metadata.
    */
-  static class BlockInfo {
+  private static class BlockInfo extends Block {
     private INodeFile          inode;
       
     /** nodes could contain some null entries at the end, so 
@@ -37,7 +37,10 @@ class BlocksMap {
      *  if nodes != null then nodes[0] != null.
      */
     private DatanodeDescriptor[]           nodes;
-    private Block                          block; //block that was inserted.   
+
+    BlockInfo(Block blk) {
+      super(blk);
+    }
   }
       
   private static class NodeIterator implements Iterator<DatanodeDescriptor> {
@@ -66,8 +69,7 @@ class BlocksMap {
   private BlockInfo checkBlockInfo(Block b) {
     BlockInfo info = map.get(b);
     if (info == null) {
-      info = new BlockInfo();
-      info.block = b;
+      info = new BlockInfo(b);
       map.put(b, info);
     }
     return info;
@@ -96,7 +98,7 @@ class BlocksMap {
   /** Returns the block object it it exists in the map. */
   public Block getStoredBlock(Block b) {
     BlockInfo info = map.get(b);
-    return (info != null) ? info.block : null;
+    return (info != null) ? info : null;
   }
     
   /** Returned Iterator does not support. */