Return-Path: Delivered-To: apmail-lucene-hadoop-dev-archive@locus.apache.org Received: (qmail 28365 invoked from network); 3 Jul 2007 00:29:30 -0000 Received: from hermes.apache.org (HELO mail.apache.org) (140.211.11.2) by minotaur.apache.org with SMTP; 3 Jul 2007 00:29:30 -0000 Received: (qmail 90561 invoked by uid 500); 3 Jul 2007 00:29:29 -0000 Delivered-To: apmail-lucene-hadoop-dev-archive@lucene.apache.org Received: (qmail 90504 invoked by uid 500); 3 Jul 2007 00:29:28 -0000 Mailing-List: contact hadoop-dev-help@lucene.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: hadoop-dev@lucene.apache.org Delivered-To: mailing list hadoop-dev@lucene.apache.org Received: (qmail 90494 invoked by uid 99); 3 Jul 2007 00:29:28 -0000 Received: from herse.apache.org (HELO herse.apache.org) (140.211.11.133) by apache.org (qpsmtpd/0.29) with ESMTP; Mon, 02 Jul 2007 17:29:28 -0700 X-ASF-Spam-Status: No, hits=-100.0 required=10.0 tests=ALL_TRUSTED X-Spam-Check-By: apache.org Received: from [140.211.11.4] (HELO brutus.apache.org) (140.211.11.4) by apache.org (qpsmtpd/0.29) with ESMTP; Mon, 02 Jul 2007 17:29:25 -0700 Received: from brutus (localhost [127.0.0.1]) by brutus.apache.org (Postfix) with ESMTP id BE0757141EA for ; Mon, 2 Jul 2007 17:29:04 -0700 (PDT) Message-ID: <13404114.1183422544775.JavaMail.jira@brutus> Date: Mon, 2 Jul 2007 17:29:04 -0700 (PDT) From: "Konstantin Shvachko (JIRA)" To: hadoop-dev@lucene.apache.org Subject: [jira] Updated: (HADOOP-1286) Distributed cluster upgrade In-Reply-To: <25599383.1177123275290.JavaMail.jira@brutus> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 7bit X-Virus-Checked: Checked by ClamAV on apache.org [ https://issues.apache.org/jira/browse/HADOOP-1286?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Konstantin Shvachko updated HADOOP-1286: ---------------------------------------- Attachment: DistUpgradeFramework3.patch Fixed Findbugs warning. Implemented equals() as required for Comparable interface. > 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, 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 > 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.