+1 for making this guarantee explicit. It also definitely seems like a good idea to test mixed versions in bigtop.
HDFS is not immune to "new client, old server" scenarios because the HDFS client gets bundled into a lot of places. Colin On Mar 20, 2014 10:55 AM, "Chris Nauroth" <cnaur...@hortonworks.com> wrote: > Our use of protobuf helps mitigate a lot of compatibility concerns, but > there still can be situations that require careful coding on our part. > When adding a new field to a protobuf message, the client might need to do > a null check, even if the server-side implementation in the new version > always populates the field. When adding a whole new RPC endpoint, the > client might need to consider the possibility that the RPC endpoint isn't > there on an old server, and degrade gracefully after the RPC fails. The > original issue in MAPREDUCE-4052 concerned the script commands passed in a > YARN container submission, where protobuf doesn't provide any validation > beyond the fact that they're strings. > > Forward compatibility is harder than backward compatibility, and testing is > a big challenge. Our test suites in the Hadoop repo don't cover this. > Does anyone know if anything in Bigtop tries to run with mixed versions? > > I agree that we need to make it clear in the language that upgrading client > alone is insufficient to get access to new server-side features, including > new YARN APIs. Thanks for the suggestions, Steve. > > Chris Nauroth > Hortonworks > http://hortonworks.com/ > > > > On Thu, Mar 20, 2014 at 5:53 AM, Steve Loughran <ste...@hortonworks.com > >wrote: > > > I'm clearly supportive of this, though of course the testing costs needed > > to back up the assertion make it more expensive than just a statement. > > > > Two issues > > > > -we'd need to make clear that new cluster features that a client can > invoke > > won't be available. You can't expect snapshot or symlink support running > > against a -2.2.0 cluster, even if the client supports it. > > > > -in YARN, there are no guarantees that an app compiled against later YARN > > APIs will work in old clusters. Because YARN apps upload themselves to > the > > server, and run with their hadoop, hdfs & yarn libraries. We have to do a > > bit of introspection in our code already to support this situation. The > > compatibility doc would need to be clear on that too: "YARN apps that use > > new APIs (including new fields in datastructures) can expect link > > exceptions" > > > > > > > > > > > > On 20 March 2014 04:25, Vinayakumar B <vinayakuma...@huawei.com> wrote: > > > > > +1, I agree with your point Chris. It depends on the client application > > > how they using the hdfs jars in their classpath. > > > > > > As implementation already supports the compatibility (through > protobuf), > > > No extra code changes required to support new Client + old server. > > > > > > I feel it will be good to explicitly mention about the compatibility of > > > existing APIs in both versions. > > > > > > Anyway this is not applicable for the new APIs in latest client and > this > > > is understood. We can make it explicit in the document though. > > > > > > > > > Regards, > > > Vinayakumar B > > > > > > -----Original Message----- > > > From: Chris Nauroth [mailto:cnaur...@hortonworks.com] > > > Sent: 20 March 2014 05:36 > > > To: common-dev@hadoop.apache.org > > > Cc: mapreduce-...@hadoop.apache.org; hdfs-...@hadoop.apache.org; > > > yarn-...@hadoop.apache.org > > > Subject: Re: [DISCUSS] Clarification on Compatibility Policy: Upgraded > > > Client + Old Server > > > > > > I think this kind of compatibility issue still could surface for HDFS, > > > particularly for custom applications (i.e. something not executed via > > > "hadoop jar" on a cluster node, where the client classes ought to be > > > injected into the classpath automatically). Running DistCP between 2 > > > clusters of different versions could result in a 2.4.0 client calling a > > > 2.3.0 NameNode. Someone could potentially pick up the 2.4.0 WebHDFS > > > client as a dependency and try to use it to make HTTP calls to a 2.3.0 > > HDFS > > > cluster. > > > > > > Chris Nauroth > > > Hortonworks > > > http://hortonworks.com/ > > > > > > > > > > > > On Wed, Mar 19, 2014 at 4:28 PM, Vinod Kumar Vavilapalli < > > > vino...@apache.org > > > > wrote: > > > > > > > It makes sense only for YARN today where we separated out the > clients. > > > > HDFS is still a monolithic jar so this compatibility issue is kind of > > > > invalid there. > > > > > > > > +vinod > > > > > > > > On Mar 19, 2014, at 1:59 PM, Chris Nauroth <cnaur...@hortonworks.com > > > > > > wrote: > > > > > > > > > I'd like to discuss clarification of part of our compatibility > > policy. > > > > > Here is a link to the compatibility documentation for release > 2.3.0: > > > > > > > > > > > > > > > http://hadoop.apache.org/docs/r2.3.0/hadoop-project-dist/hadoop-common > > > > /Compatibility.html#Wire_compatibility > > > > > > > > > > For convenience, here are the specific lines in question: > > > > > > > > > > Client-Server compatibility is required to allow users to continue > > > > > using the old clients even after upgrading the server (cluster) to > a > > > > > later version (or vice versa). For example, a Hadoop 2.1.0 client > > > > > talking to a Hadoop 2.3.0 cluster. > > > > > > > > > > Client-Server compatibility is also required to allow upgrading > > > > individual > > > > > components without upgrading others. For example, upgrade HDFS from > > > > version > > > > > 2.1.0 to 2.2.0 without upgrading MapReduce. > > > > > > > > > > Server-Server compatibility is required to allow mixed versions > > > > > within an active cluster so the cluster may be upgraded without > > > > > downtime in a > > > > rolling > > > > > fashion. > > > > > > > > > > Notice that there is no specific mention of upgrading the client > > > > > ahead of the server. (There is no clause for "upgraded client + > old > > > > > server".) Based on my experience, this is a valid use case when a > > > > > user wants to > > > > pick > > > > > up a client-side bug fix ahead of the cluster administrator's > > > > > upgrade schedule. > > > > > > > > > > Is it our policy to maintain client compatibility with old clusters > > > > within > > > > > the same major release? I think many of us have assumed that the > > > > > answer > > > > is > > > > > yes and coded our new features accordingly, but it isn't made > > > > > explicit in the documentation. Do we all agree that the answer is > > > > > yes, or is it possibly up for debate depending on the change in > > > > > question? In RFC 2119 lingo, is it a MUST or a SHOULD? Either > way, > > > > > I'd like to update the > > > > policy > > > > > text to make our decision clear. After we have consensus, I can > > > > volunteer > > > > > to file an issue and patch the text of the policy. > > > > > > > > > > This discussion started initially in MAPREDUCE-4052, which involved > > > > > changing our scripting syntax for MapReduce YARN container > > submissions. > > > > We > > > > > settled the question there by gating the syntax change behind a > > > > > configuration option. By default, it will continue using the > > > > > existing syntax currently understood by the pre-2.4.0 NodeManager, > > > > > thus preserving compatibility. We wanted to open the policy > > > > > question for wider > > > > discussion > > > > > though. > > > > > > > > > > Thanks, everyone. > > > > > > > > > > Chris Nauroth > > > > > Hortonworks > > > > > http://hortonworks.com/ > > > > > > > > > > -- > > > > > CONFIDENTIALITY NOTICE > > > > > NOTICE: This message is intended for the use of the individual or > > > > > entity > > > > to > > > > > which it is addressed and may contain information that is > > > > > confidential, privileged and exempt from disclosure under > applicable > > > > > law. If the reader of this message is not the intended recipient, > > > > > you are hereby notified > > > > that > > > > > any printing, copying, dissemination, distribution, disclosure or > > > > > forwarding of this communication is strictly prohibited. If you > have > > > > > received this communication in error, please contact the sender > > > > immediately > > > > > and delete it from your system. Thank You. > > > > > > > > > > > > -- > > > > CONFIDENTIALITY NOTICE > > > > NOTICE: This message is intended for the use of the individual or > > > > entity to which it is addressed and may contain information that is > > > > confidential, privileged and exempt from disclosure under applicable > > > > law. If the reader of this message is not the intended recipient, you > > > > are hereby notified that any printing, copying, dissemination, > > > > distribution, disclosure or forwarding of this communication is > > > > strictly prohibited. If you have received this communication in > error, > > > > please contact the sender immediately and delete it from your system. > > > Thank You. > > > > > > > > > > -- > > > CONFIDENTIALITY NOTICE > > > NOTICE: This message is intended for the use of the individual or > entity > > > to which it is addressed and may contain information that is > > confidential, > > > privileged and exempt from disclosure under applicable law. If the > reader > > > of this message is not the intended recipient, you are hereby notified > > that > > > any printing, copying, dissemination, distribution, disclosure or > > > forwarding of this communication is strictly prohibited. If you have > > > received this communication in error, please contact the sender > > immediately > > > and delete it from your system. Thank You. > > > > > > > -- > > CONFIDENTIALITY NOTICE > > NOTICE: This message is intended for the use of the individual or entity > to > > which it is addressed and may contain information that is confidential, > > privileged and exempt from disclosure under applicable law. If the reader > > of this message is not the intended recipient, you are hereby notified > that > > any printing, copying, dissemination, distribution, disclosure or > > forwarding of this communication is strictly prohibited. If you have > > received this communication in error, please contact the sender > immediately > > and delete it from your system. Thank You. > > > > -- > CONFIDENTIALITY NOTICE > NOTICE: This message is intended for the use of the individual or entity to > which it is addressed and may contain information that is confidential, > privileged and exempt from disclosure under applicable law. If the reader > of this message is not the intended recipient, you are hereby notified that > any printing, copying, dissemination, distribution, disclosure or > forwarding of this communication is strictly prohibited. If you have > received this communication in error, please contact the sender immediately > and delete it from your system. Thank You. >