[ 
https://issues.apache.org/jira/browse/HADOOP-2885?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12577168#action_12577168
 ] 

Doug Cutting commented on HADOOP-2885:
--------------------------------------

Sanjay asks: "which of the two interfaces is hdfs's interface?"

For HDFS to date, the advertised public interface is fs.FileSystem.  We've 
talked that someday, when we feel the wire protocol is stable, we might make it 
a public interface, to permit Java-free clients, but we're not there yet.  
Making the wire protocol public will substantially impact its ability to evolve.

(1) is my first choice.

Folks can easily repackage jars, so the number of jars should not be a big 
factor in this.  This issue is primarily about what's public and what's 
private, and HDFS's implementation should be private.

The discrepancy from KFS and S3 seems reasonable: HDFS is explicitly designed 
to implement Hadoop's FileSystem API, while KFS and S3 are not, and need some 
adapter code.  That adapter code is simple enough that we can include it in 
core.  We do not include their entire implementation in core, and HDFS does not 
require adapter code, since it directly implements the FileSystem API.  These 
differences account for the discrepancy.

So I don't see any of (1)'s cons as significant.

Eric says: "it would be terrific if we did not need to recompile a client to 
run against two dot releases of hadoop".  That has more to do with the 
stability of the abstract FileSystem API rather than changes to HDFS's wire 
protocol.  We should already guarantee that.  Our back-compatiblity goal is 
that, if an application compiles against release X without warnings, it should 
be able to upgrade to X+1 without recompilation, but will have to recompile and 
fix new warnings before upgrading to X+2.  However we've not always met this 
goal...

> Restructure the hadoop.dfs package
> ----------------------------------
>
>                 Key: HADOOP-2885
>                 URL: https://issues.apache.org/jira/browse/HADOOP-2885
>             Project: Hadoop Core
>          Issue Type: Sub-task
>          Components: dfs
>            Reporter: Sanjay Radia
>            Assignee: Sanjay Radia
>            Priority: Minor
>             Fix For: 0.17.0
>
>         Attachments: Prototype dfs package.png
>
>
> This Jira proposes restructurign the package hadoop.dfs.
> 1. Move all server side and internal protocols (NN-DD etc) to 
> hadoop.dfs.server.*
> 2. Further breakdown of dfs.server.
> - dfs.server.namenode.*
> - dfs.server.datanode.*
> - dfs.server.balancer.*
> - dfs.server.common.* - stuff shared between the various servers
> - dfs.protocol.*  - internal protocol between DN, NN and Balancer etc.
> 3. Client interface:
> - hadoop.dfs.DistributedFileSystem.java
> - hadoop.dfs.ChecksumDistributedFileSystem.java
> - hadoop.dfs.HftpFilesystem.java
> - hadoop.dfs.protocol.* - the client side protocol

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to