[ 
https://issues.apache.org/jira/browse/HDFS-5754?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13880077#comment-13880077
 ] 

Tsz Wo (Nicholas), SZE commented on HDFS-5754:
----------------------------------------------

- The patch adds the new system properties (HDFS_SERVICE_LAYOUT etc.) for 
initializing LayoutVersion.map.  It seems that it won't work for unit tests 
since a test may run both NN and DN but we only have one map.  I think we need 
two maps.  Do you agree?

- If HdfsConstants.LAYOUT_VERSION is initialized with NameNode.Feature.values() 
as below, the code in DN using HdfsConstants.LAYOUT_VERSION is incorrect.  I 
guess it needs two LAYOUT_VERSIONs.
{code}
//HdfsConstants
   public static final int LAYOUT_VERSION = LayoutVersion
-      .getCurrentLayoutVersion();
+      .getCurrentLayoutVersion(NameNode.Feature.values());
{code}

- LayoutFeatureComparator.compare(..) could be simplified as below
{code}
public int compare(LayoutFeature arg0, LayoutFeature arg1) {
  return arg0.getLayoutVersion() - arg1.getLayoutVersion();
}
{code}

- In the patch, the Feature enum in LayoutVersion, NameNode and DataNode are 
very similar.  We could add a new class FeatureInfo for reducing repeated code 
as shown in FeatureInfo.patch.

> Split LayoutVerion into NamenodeLayoutVersion and DatanodeLayoutVersion 
> ------------------------------------------------------------------------
>
>                 Key: HDFS-5754
>                 URL: https://issues.apache.org/jira/browse/HDFS-5754
>             Project: Hadoop HDFS
>          Issue Type: Sub-task
>          Components: datanode, namenode
>            Reporter: Tsz Wo (Nicholas), SZE
>            Assignee: Brandon Li
>         Attachments: HDFS-5754.001.patch, HDFS-5754.002.patch, 
> HDFS-5754.003.patch, HDFS-5754.004.patch, HDFS-5754.006.patch, 
> HDFS-5754.007.patch, HDFS-5754.008.patch
>
>
> Currently, LayoutVersion defines the on-disk data format and supported 
> features of the entire cluster including NN and DNs.  LayoutVersion is 
> persisted in both NN and DNs.  When a NN/DN starts up, it checks its 
> supported LayoutVersion against the on-disk LayoutVersion.  Also, a DN with a 
> different LayoutVersion than NN cannot register with the NN.
> We propose to split LayoutVersion into two independent values that are local 
> to the nodes:
> - NamenodeLayoutVersion - defines the on-disk data format in NN, including 
> the format of FSImage, editlog and the directory structure.
> - DatanodeLayoutVersion - defines the on-disk data format in DN, including 
> the format of block data file, metadata file, block pool layout, and the 
> directory structure.  
> The LayoutVersion check will be removed in DN registration.  If 
> NamenodeLayoutVersion or DatanodeLayoutVersion is changed in a rolling 
> upgrade, then only rollback is supported and downgrade is not.



--
This message was sent by Atlassian JIRA
(v6.1.5#6160)

Reply via email to