[
https://issues.apache.org/jira/browse/HADOOP-1286?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#action_12509748
]
Hadoop QA commented on HADOOP-1286:
-----------------------------------
+0, new Findbugs warnings
http://issues.apache.org/jira/secure/attachment/12360984/DistUpgradeFramework4.patch
applied and successfully tested against trunk revision r552548,
but there appear to be new Findbugs warnings introduced by this patch.
New Findbugs warnings:
http://lucene.zones.apache.org:8080/hudson/job/Hadoop-Patch/357/artifact/trunk/build/test/findbugs/newPatchFindbugsWarnings.html
Test results:
http://lucene.zones.apache.org:8080/hudson/job/Hadoop-Patch/357/testReport/
Console output:
http://lucene.zones.apache.org:8080/hudson/job/Hadoop-Patch/357/console
> 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: DistUpgradeFramework3.patch,
> DistUpgradeFramework4.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.