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

Sanjay Radia commented on HADOOP-2885:
--------------------------------------




As far as hadoop goes, the interface is fs.FileSystem.
What is the interface of hdfs which implements fs.FileSystem?
* fs.hdfs.DistributedFileSystem
* fs.hdfs.theProtocol

Even though we may consider the above two interfaces to be private, it is worth 
discussing which of the
two interfaces is hdfs's interface. 

*Analogy*
For NFS, the wire protocol is the interface.
 Proposal 2 would be the most suitable if we consider the HDFS protocol to be 
the interface. Proposal 1 would also
be okay as long hdfs supplies 2 jars, Proposal 1 has the advantage that there 
can be other impls of the client side 
wrappers that talk the hdfs protocol. (for example other wrappers could do 
client side caching while
keeping the protocol same). 

For Posix, libc is the interface. The system calls are like the protocol that 
libc uses to talk to the kernel.
Each new version of posix would ship new impls of libc and the system calls. 
Apps link dynamically with libc.
In a distributed system, distributing a new wrapper to all clients  is hard to 
do since the 
clients are distributed and do not link dyanamically with the wrapper.
Jini for example provides a way for the clients to pull the new wrapper by means
of dynamic class loading across the wire (this were heated discussion over this 
in the java commnunity).
We have no plans dynamically load classes  across the wire. But none the less, 
the OS view of its
interface is a useful analogy. Proposal 1 would be most suitable for this view.

> 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