You are viewing a plain text version of this content. The canonical link for it is here.
Posted to common-commits@hadoop.apache.org by Apache Wiki <wi...@apache.org> on 2014/06/24 19:58:26 UTC

[Hadoop Wiki] Update of "MovingToJdk7and8" by AndrewWang

Dear Wiki user,

You have subscribed to a wiki page or wiki category on "Hadoop Wiki" for change notification.

The "MovingToJdk7and8" page has been changed by AndrewWang:
https://wiki.apache.org/hadoop/MovingToJdk7and8

New page:
= How to transition Hadoop to JDK7 and JDK8 =

There has been discussion on common-dev about how we're going to bump the minimum supported JDK version for Hadoop.

A number of proposals have surfaced, but let's start by going over some of the concerns to frame the discussion.

== Background ==

Our compatibility guidelines are documented at http://wiki.apache.org/hadoop/Compatibility

The meaningful ones here are that dropping support for a JDK and changing libraries exposed on the classpath are both incompatible changes. This means any proposals that involve either of these two things requires a new major release. This means dropping support for JDK6, bumping the Guava version, etc, cannot happen before a Hadoop 3.x release.

branch-2 right now still supports JDK6. branch-2 works on JDK7, and there are anecdotal reports that it works on JDK8 too, with a little work.

JDK7 is also EOL in April 2015, so we would like to avoid another JDK6 situation where we're stuck on JDK7 after it's EOL.

Guava is especially a pain point for us (as well as Hadoop users), since it's very quick with its deprecate-and-remove cycle for APIs, and also dropping support for old JDK versions. The fact that we leak our classpath to userapps is definitely limiting our upgrade options. Classpath isolation would give us a lot more freedom here, either via OSGI or shading all our dependencies.

>From a vendor point of view, both Cloudera and Hortonworks released branch-2 based distros this year (2014), so it's likely that they will be doing development on branch-2 for the next year or two.

= Proposals =

Listed in roughly chronological order. Not attaching names to keep this disinterested.

== Proposal A ==
 * Keep branch-2 the way it is, same JDK support and libraries. Keep rolling branch-2 releases.
 * Move trunk to JDK8 now, along with bumping library versions.
 * Release a Hadoop 3 in 2015 before JDK7 EOL

== Proposal B ==

 * Rename branch-2 to branch-3, so Hadoop 2.6 becomes Hadoop 3.0. Trunk becomes Hadoop 4.
 * branch-3 would drop support for JDK6, update libraries like Guava and Jetty, no other compatibility changes with branch-2
 * branch-4 would drop support for JDK7, update libraries like Guava and Jetty, no other compatibility changes with branch-3
 * Release branch-3 in 2014 as a more immediate fix
 * Release branch-4 in 2015 before JDK7 EOL

== Proposal C ==

 * Drop support for JDK6 in an intermediate branch-2 release, e.g. hadoop-2.30, but retain the same library versions.
 * Drop support for JDK7 in another intermediate branch-2 release, e.g. hadoop-2.50, but again retain the same library versions.

= Discussion =

== Proposal A ==
 * Need to wait until 2015 before we can officially drop support for JDK6

== Proposal B ==
 * This results in two new major releases in less than a year, which is potentially painful for users

== Proposal C ==
 * Dropping support for a JDK in a minor release is incompatible, so this would require a change to our compatibility guidelines.