[ https://issues.apache.org/jira/browse/HADOOP-1286?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#action_12512061 ]
Hudson commented on HADOOP-1286: -------------------------------- Integrated in Hadoop-Nightly #152 (See [http://lucene.zones.apache.org:8080/hudson/job/Hadoop-Nightly/152/]) > Distributed cluster upgrade > --------------------------- > > Key: HADOOP-1286 > URL: https://issues.apache.org/jira/browse/HADOOP-1286 > Project: Hadoop > Issue Type: Improvement > Components: dfs > Affects Versions: 0.13.0 > Reporter: Konstantin Shvachko > Assignee: Konstantin Shvachko > Fix For: 0.14.0 > > Attachments: DistUpgradeFramework6.patch, Upgradeable.java > > > Some data layout changes in HDFS require more than just a version upgrade > introduced in HADOOP-702, > because the cluster can function properly only when all components have > upgraded, and the components > need to communicate to each other and exchange data before they can perform > the upgrade. > The CRC upgrade discussed in HADOOP-1134 is one of such examples. Future > enhancements like > implementation of appends can change block meta-data and may require > distributed upgrades. > Distributed upgrade (DU) starts with a version upgrade (VU) so that at any > time one could rollback > all changes and start over. > When VU is finished the name-node enters safe mode and persistently records > that the DU have been started. > It will also need to write a record when DU is finished. This is necessary to > report unfinished upgrades in case > of failure or for monitoring. > The actual upgrade code from version vO to vN should be implemented in a > separate UpgradeObject class, > which implements interface Upgradeable. > We create a new UpgradeObject for each pair of versions vO to vN that require > a DU. > We keep a (hard coded) table that determines which UpgradeObject(s) are > applicable for the version pairs. > Something like: > || Old version || New version || class names || > | vO1 | vN1 | NameUpgradeObject1, DataUpgradeObject1 | > | vO2 | vN2 | NameUpgradeObject2, DataUpgradeObject2 | > where vO1 < vN1 < vO2 < vN2 ... > Now, if we need to upgrade from version version vX to version vY, we look for > all pairs <vOi, vNi> > in the table such that vX < vOi < vNi < vY and perform corresponding DUs one > after another as they appear in the table. > Each DU can and most probably should contain multiple UpgradeObjects. > I'd define one object for the name-node and one for the data-nodes. > The upgrade objects (in the same row) can communicate to each other either > via existing protocols or using > temporary protocols defined exclusively for this particular upgrade objects. > I envision that some DUs will need to use old (vO) protocols to exchange the > pre-upgrade data, > and new (vN) protocols to reoport the upgraded data. > UpgradeObjects should be able to bypass safe mode restrictions, be able to > +modify+ name-node data. -- This message is automatically generated by JIRA. - You can reply to this email to add a comment to the issue online.