                        Thrift API for HDFS
                        ==================

Introduction:
============

The Hadoop Distributed File System is written in Java. An application
that wants to store/fetch data to/from HDFS can use the Java API
This means that applications that are not written in Java cannot
access HDFS in an elegant manner.

Thrift is a software framework for scalable cross-language services 
development. It combines a powerful software stack with a code generation 
engine to build services that work efficiently and seamlessly 
between C++, Java, Python, PHP, and Ruby.

This project exposes HDFS APIs using the Thrift software stack. This
allows applciations written in a myriad of languages to access
HDFS elegantly.


The Application Programming Interface (API)
===========================================
The HDFS API that is exposed through Thrift can be found in if/hadoopfs.thrift.

Compilation
===========
The compilation process creates a server org.apache.hadoop.thriftfs.HadooopThriftServer
that implements the Thrift interface defined in if/hadoopfs.thrift.

Th thrift compiler is used to generate API stubs in python, php, ruby,
cocoa, etc. The generated code is checked into the directories gen-*.
The generated java API is checked into lib/hadoopthriftapi.jar.

There is a sample python script hdfs.py in the scripts directory. This python 
script, when invoked, creates a HadoopThriftServer in the background, and then
communicates wth HDFS using the API. This script is for demonstration purposes
only.

