You are viewing a plain text version of this content. The canonical link for it is here.
Posted to common-dev@hadoop.apache.org by Sanjay Radia <sr...@yahoo-inc.com> on 2008/11/14 19:13:54 UTC
Hadoop 1.0 Interface Classification Discussion
One of the tasks/prerequisites for Hadoop 1.0 is to decide which
interfaces are
external facing and which are internal facing.
An interface declared java-public is not necessarily a hadoop
public/external interface. Instead I use the terms external and
internal to
avoid confusion with a java class's public and private tag.
What does external and internal mean: Any application can use Hadoop's
external interface;
however, they should not use any hadoop internal interfaces.
Further it is helpful to classify the stability levels of interfaces.
I have used a interface taxonomy that I have derived from OpenSolaris
(http://redirect.corp.yahoo.com/?url=http%3A%2F%2Fwww.opensolaris.org%2Fos%2Fcommunity%2Farc%2Fpolicies%2Finterface-taxonomy%2F%23Advice
)
-------------
Release terminology used below:
Standard release numbering:
- Only bug fixes in dot releases: m.x.y
- no changes to API, disk format, protocols or config etc.
- new features in major (m.0) and minor (m.x.0) releases
-------------
Here is a *strawman* breakdown of our various interfaces along
with their
visibility and stability.
There is sure to be debate over this. Is this classification useful?
What interfaces are not covered below?
* External-stable (can break compatibility at major releases)
- Filesystem, MapReduce, Config, shell CLI and shell CLI output
- Mapred.lib (stable after cleanup)
- HDFS-JMX MBeans?
* External-evolving (can break compatibility at minor releases)
(Evolving does not mean that we will break compatibility for trivial
reasons
at a minor release; we have the freedom to break compatibility
when there is good reason.)
- Core APIs that we are not ready to declare as stable: RPC and
IPC APIs , Metrics,
- alternatively classify these core APIs as Internal-
Evolving
- Job logs - should this be stable ?
* External-Not an interface
- Hadoop Web GUI
* Internal-stable - (can break compatibility at major releases)
- Intra HDFS and MR protocols (rolling upgrades in the future)
* Internal-evolving (can break compatibility at minor releases)
- TT-to-task umbilical cord
* Internal-private
- System logs, etc.
- The rest of the Hadoop classes and interfaces.
We need to remove all internal interfaces from the hadoop-external
javadoc.
Add javadoc tag to interfaces to reflect stability?