On Oct 21, 2008, at 5:23 PM, Konstantin Shvachko wrote:

Sanjay Radia wrote:
 >>          o  Can't remove deprecated classes or methods until 2.0

Dhruba Borthakur wrote:
> 1. APIs that are deprecated in x.y release can be removed in (x+1). 0 release.

Current rule is that apis deprecated in M.x.y can be remove in M.(x +2).0
I don't think we want neither relax nor stiffen this requirement.


I think we want to strengthen this to : removal of deprecated methods/ classes only on major releases
Isn't this what major and minor releases mean?
I believe that is what customers will expect from a 1.0 release - stability till 2.0. Are you worried that maintaining old methods is too much burden because there will be too many of them?


sanjay


> 2.  Old 1.x clients can connect to new 1.y servers, where x <= y but
> the old clients might get reduced functionality or performance. 1.x
> clients might not be able to connect to 2.z servers.
>
> 3. HDFS disk format can change from 1.x to 1.y release and is
> transparent to user-application. A cluster when rolling back to 1.x
> from 1,y will revert back to the old disk format.
>
>> * In a major release transition [ ie from a release x.y to a release >> (x+1).0], a user should be able to read data from the cluster running the
>> old version.
>
> I think this is a good requirement to have. This will be very useful
> when we run multiple clusters, especially across data centers
> (HADOOP-4058 is a use-case).

I don't see anything about compatibility model going from 1.*.* to 2.0.0.
Does that mean we do not provide compatibility between those?
Does that mean compatibility between 1.*.* and 2.*.* is provided by distcp?
Or another way to ask the same question: will HDFS-1 and HDFS-2 be
as different as ext2 and ext3?
I am not saying this is bad just want it to be clarified.

May be we should somehow structure this discussion into sections, e.g.:
- deprecation rules;
- client/server communication compatibility;
- inter version data format compatibility;
    = meta-data compatibility
    = block data compatibility

--Konstantin

>> --------
>> What does Hadoop 1.0 mean?
>> * Standard release numbering: Only bug fixes in 1.x.y releases and new
>> features in 1.x.0 releases.
>> * No need for client recompilation when upgrading from 1.x to 1.y, where
>> x <= y
>>          o  Can't remove deprecated classes or methods until 2.0
>>     * Old 1.x clients can connect to new 1.y servers, where x <= y
>> * New FileSystem clients must be able to call old methods when talking to >> old servers. This generally will be done by having old methods continue to >> use old rpc methods. However, it is legal to have new implementations of old >> methods call new rpcs methods, as long as the library transparently handles
>> the fallback case for old servers.
>> -----------------
>>
>> A couple of  additional compatibility requirements:
>>
>> * HDFS metadata and data is preserved across release changes, both major and
>> minor. That is,
>> whenever a release is upgraded, the HDFS metadata from the old release will
>> be converted automatically
>> as needed.
>>
>> The above has been followed so far in Hadoop; I am just documenting it in
>> the 1.0 requirements list.
>>
>> * In a major release transition [ ie from a release x.y to a release >> (x+1).0], a user should be able to read data from the cluster running the >> old version. (OR shall we generalize this to: from x.y to (x +i).z ?)
>>
>> The motivation: data copying across clusters is a common operation for many
>> customers
>> (for example this is routinely at done at Yahoo.). Today, http (or hftp) >> provides a guaranteed compatible way of copying data across versions. >> Clearly one cannot force a customer to simultaneously update all its hadoop
>> clusters on to
>> a new major release. The above documents this requirement; we can satisfy it
>> via the http/hftp mechanism or some other mechanism.
>>
>> Question: is one is willing to break applications that operate across >> clusters (ie an application that accesses data across clusters that cross a >> major release boundary? I asked the operations team at Yahoo that run our >> hadoop clusters. We currently do not have any applicaions that access data >> across clusters as part of a MR job. The reason being that Hadoop routinely >> breaks wire compatibility across releases and so such apps would be very >> unreliable. However, the copying of data across clusters is t is crucial and
>> needs to be supported.
>>
>> Shall we add a stronger requirement for 1.0: wire compatibility across >> major versions? This can be supported by class loading or other games. Note >> we can wait to provide this when 2.0 happens. If Hadoop provided this >> guarantee then it would allow customers to partition their data across >> clusters without risking apps breaking across major releases due to wire
>> incompatibility issues.
>>
>>
>>
>


Reply via email to