You are viewing a plain text version of this content. The canonical link for it is here.
Posted to common-commits@hadoop.apache.org by ar...@apache.org on 2015/06/15 20:06:41 UTC

hadoop git commit: HDFS-7240. Introduce STORAGE_CONTAINER_SERVICE as a new NodeType. (Contributed by Arpit Agarwal)

Repository: hadoop
Updated Branches:
  refs/heads/HDFS-7240 e721a39e2 -> 1f32463ba


HDFS-7240. Introduce STORAGE_CONTAINER_SERVICE as a new NodeType. (Contributed by Arpit Agarwal)


Project: http://git-wip-us.apache.org/repos/asf/hadoop/repo
Commit: http://git-wip-us.apache.org/repos/asf/hadoop/commit/1f32463b
Tree: http://git-wip-us.apache.org/repos/asf/hadoop/tree/1f32463b
Diff: http://git-wip-us.apache.org/repos/asf/hadoop/diff/1f32463b

Branch: refs/heads/HDFS-7240
Commit: 1f32463baaef0efc4fcdf4597b1080337596d3c3
Parents: e721a39
Author: Arpit Agarwal <ar...@apache.org>
Authored: Mon Jun 15 11:04:02 2015 -0700
Committer: Arpit Agarwal <ar...@apache.org>
Committed: Mon Jun 15 11:04:02 2015 -0700

----------------------------------------------------------------------
 .../hadoop-hdfs/CHANGES-HDFS-7240.txt           |  3 ++
 .../apache/hadoop/hdfs/protocolPB/PBHelper.java | 39 +++++++++++++++++++-
 .../hdfs/server/common/HdfsServerConstants.java |  3 +-
 .../hdfs/server/protocol/NamespaceInfo.java     | 22 ++++++++---
 .../StorageContainerManager.java                |  4 +-
 .../hadoop-hdfs/src/main/proto/hdfs.proto       |  8 ++++
 6 files changed, 70 insertions(+), 9 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/hadoop/blob/1f32463b/hadoop-hdfs-project/hadoop-hdfs/CHANGES-HDFS-7240.txt
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs/CHANGES-HDFS-7240.txt b/hadoop-hdfs-project/hadoop-hdfs/CHANGES-HDFS-7240.txt
index a98d407..71a1ec8 100644
--- a/hadoop-hdfs-project/hadoop-hdfs/CHANGES-HDFS-7240.txt
+++ b/hadoop-hdfs-project/hadoop-hdfs/CHANGES-HDFS-7240.txt
@@ -4,3 +4,6 @@
 
     HDFS-8392. Ozone: DataNode support for multiple datasets. (Arpit Agarwal)
 
+    HDFS-8456. Ozone: Introduce STORAGE_CONTAINER_SERVICE as a new NodeType.
+    (Arpit Agarwal)
+

http://git-wip-us.apache.org/repos/asf/hadoop/blob/1f32463b/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/protocolPB/PBHelper.java
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/protocolPB/PBHelper.java b/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/protocolPB/PBHelper.java
index c9a9c33..9f451ec 100644
--- a/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/protocolPB/PBHelper.java
+++ b/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/protocolPB/PBHelper.java
@@ -353,7 +353,8 @@ public class PBHelper {
   public static StorageInfoProto convert(StorageInfo info) {
     return StorageInfoProto.newBuilder().setClusterID(info.getClusterID())
         .setCTime(info.getCTime()).setLayoutVersion(info.getLayoutVersion())
-        .setNamespceID(info.getNamespaceID()).build();
+        .setNamespceID(info.getNamespaceID())
+        .setNodeType(convert(info.getNodeType())).build();
   }
 
   public static StorageInfo convert(StorageInfoProto info, NodeType type) {
@@ -572,9 +573,43 @@ public class PBHelper {
 
   public static NamespaceInfo convert(NamespaceInfoProto info) {
     StorageInfoProto storage = info.getStorageInfo();
+
+    // The default node type must be NAME_NODE for wire compatibility.
     return new NamespaceInfo(storage.getNamespceID(), storage.getClusterID(),
         info.getBlockPoolID(), storage.getCTime(), info.getBuildVersion(),
-        info.getSoftwareVersion(), info.getCapabilities());
+        info.getSoftwareVersion(),
+        storage.hasNodeType() ? convert(storage.getNodeType()) : NodeType.NAME_NODE,
+        info.getCapabilities());
+  }
+
+  public static NodeType convert(StorageInfoProto.NodeTypeProto nodeType) {
+    switch(nodeType) {
+    case NAME_NODE:
+      return NodeType.NAME_NODE;
+    case DATA_NODE:
+      return NodeType.DATA_NODE;
+    case JOURNAL_NODE:
+      return NodeType.JOURNAL_NODE;
+    case STORAGE_CONTAINER_SERVICE:
+      return NodeType.STORAGE_CONTAINER_SERVICE;
+    default:
+      throw new IllegalArgumentException("Unrecognized NodeType " + nodeType);
+    }
+  }
+
+  public static StorageInfoProto.NodeTypeProto convert(NodeType nodeType) {
+    switch(nodeType) {
+    case NAME_NODE:
+      return StorageInfoProto.NodeTypeProto.NAME_NODE;
+    case DATA_NODE:
+      return StorageInfoProto.NodeTypeProto.DATA_NODE;
+    case JOURNAL_NODE:
+      return StorageInfoProto.NodeTypeProto.JOURNAL_NODE;
+    case STORAGE_CONTAINER_SERVICE:
+      return StorageInfoProto.NodeTypeProto.STORAGE_CONTAINER_SERVICE;
+    default:
+      throw new IllegalArgumentException("Unrecognized NodeType " + nodeType);
+    }
   }
 
   public static NamenodeCommand convert(NamenodeCommandProto cmd) {

http://git-wip-us.apache.org/repos/asf/hadoop/blob/1f32463b/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/common/HdfsServerConstants.java
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/common/HdfsServerConstants.java b/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/common/HdfsServerConstants.java
index 26a7ab3..de732a6 100644
--- a/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/common/HdfsServerConstants.java
+++ b/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/common/HdfsServerConstants.java
@@ -115,7 +115,8 @@ public interface HdfsServerConstants {
   enum NodeType {
     NAME_NODE,
     DATA_NODE,
-    JOURNAL_NODE
+    JOURNAL_NODE,
+    STORAGE_CONTAINER_SERVICE
   }
 
   /** Startup options for rolling upgrade. */

http://git-wip-us.apache.org/repos/asf/hadoop/blob/1f32463b/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/protocol/NamespaceInfo.java
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/protocol/NamespaceInfo.java b/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/protocol/NamespaceInfo.java
index dfdf449..b0507d2 100644
--- a/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/protocol/NamespaceInfo.java
+++ b/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/protocol/NamespaceInfo.java
@@ -67,7 +67,12 @@ public class NamespaceInfo extends StorageInfo {
 
   // defaults to enabled capabilites since this ctor is for server
   public NamespaceInfo() {
-    super(NodeType.NAME_NODE);
+    this(NodeType.NAME_NODE);
+  }
+
+  // defaults to enabled capabilites since this ctor is for server
+  public NamespaceInfo(NodeType nodeType) {
+    super(nodeType);
     buildVersion = null;
     capabilities = CAPABILITIES_SUPPORTED;
   }
@@ -75,16 +80,17 @@ public class NamespaceInfo extends StorageInfo {
   // defaults to enabled capabilites since this ctor is for server
   public NamespaceInfo(int nsID, String clusterID, String bpID,
       long cT, String buildVersion, String softwareVersion) {
-    this(nsID, clusterID, bpID, cT, buildVersion, softwareVersion,
-        CAPABILITIES_SUPPORTED);
+    this(nsID, clusterID, bpID, cT, buildVersion,
+         softwareVersion, NodeType.NAME_NODE,
+         CAPABILITIES_SUPPORTED);
   }
 
   // for use by server and/or client
   public NamespaceInfo(int nsID, String clusterID, String bpID,
       long cT, String buildVersion, String softwareVersion,
-      long capabilities) {
+      NodeType nodeType, long capabilities) {
     super(HdfsServerConstants.NAMENODE_LAYOUT_VERSION, nsID, clusterID, cT,
-        NodeType.NAME_NODE);
+        nodeType);
     blockPoolID = bpID;
     this.buildVersion = buildVersion;
     this.softwareVersion = softwareVersion;
@@ -96,6 +102,12 @@ public class NamespaceInfo extends StorageInfo {
     this(nsID, clusterID, bpID, cT, Storage.getBuildVersion(),
         VersionInfo.getVersion());
   }
+
+  public NamespaceInfo(int nsID, String clusterID, String bpID,
+                       long cT, NodeType nodeType) {
+    this(nsID, clusterID, bpID, cT, Storage.getBuildVersion(),
+         VersionInfo.getVersion(), nodeType, CAPABILITIES_SUPPORTED);
+  }
   
   public long getCapabilities() {
     return capabilities;

http://git-wip-us.apache.org/repos/asf/hadoop/blob/1f32463b/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/storagecontainer/StorageContainerManager.java
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/storagecontainer/StorageContainerManager.java b/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/storagecontainer/StorageContainerManager.java
index cce9507..06b99a8 100644
--- a/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/storagecontainer/StorageContainerManager.java
+++ b/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/storagecontainer/StorageContainerManager.java
@@ -27,6 +27,7 @@ import org.apache.hadoop.hdfs.protocolPB.DatanodeProtocolPB;
 import org.apache.hadoop.hdfs.protocolPB.DatanodeProtocolServerSideTranslatorPB;
 import org.apache.hadoop.hdfs.server.blockmanagement.BlockManager;
 import org.apache.hadoop.hdfs.server.blockmanagement.BlocksMap;
+import org.apache.hadoop.hdfs.server.common.HdfsServerConstants.NodeType;
 import org.apache.hadoop.hdfs.server.namenode.NameNode;
 import org.apache.hadoop.hdfs.server.namenode.Namesystem;
 import org.apache.hadoop.hdfs.server.protocol.*;
@@ -253,7 +254,8 @@ public class StorageContainerManager
   }
 
   private NamespaceInfo unprotectedGetNamespaceInfo() {
-    return new NamespaceInfo(1, "random", "random", 2);
+    return new NamespaceInfo(1, "random", "random", 2,
+        NodeType.STORAGE_CONTAINER_SERVICE);
   }
 
   @Override

http://git-wip-us.apache.org/repos/asf/hadoop/blob/1f32463b/hadoop-hdfs-project/hadoop-hdfs/src/main/proto/hdfs.proto
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs/src/main/proto/hdfs.proto b/hadoop-hdfs-project/hadoop-hdfs/src/main/proto/hdfs.proto
index 86fb462..2df5955 100644
--- a/hadoop-hdfs-project/hadoop-hdfs/src/main/proto/hdfs.proto
+++ b/hadoop-hdfs-project/hadoop-hdfs/src/main/proto/hdfs.proto
@@ -421,6 +421,14 @@ message StorageInfoProto {
   required uint32 namespceID = 2;    // File system namespace ID
   required string clusterID = 3;     // ID of the cluster
   required uint64 cTime = 4;         // File system creation time
+
+  enum NodeTypeProto {
+    NAME_NODE = 1;
+    DATA_NODE = 2;
+    JOURNAL_NODE = 3;
+    STORAGE_CONTAINER_SERVICE = 4;
+  }
+  optional NodeTypeProto nodeType = 5;
 }
 
 /**