Hadoop has an abstract notion of filesystems, of which HDFS is just one implementation.
The Java abstract class org.apache.hadoop.fs.FileSystem represents the client interface to a filesystem in Hadoop, and there are several concrete implementations.
The main ones that ship with Hadoop are described in Table .

Interfaces
HTTP
HTTP By exposing its filesystem interface as a Java API, Hadoop makes it awkward for non- Java applications to access HDFS.
The HTTP REST API exposed by the WebHDFS protocol makes it easier for other languages to interact with HDFS.
Note that the HTTP interface is slower than the native Java client, so should be avoided for very large data transfers if possible.
There are two ways of accessing HDFS over HTTP: directly, where the HDFS daemons serve HTTP requests to clients; and via a proxy (or proxies), which accesses HDFS on the client’s behalf using the usual DistributedFileSystem API.
The two ways are il- lustrated in Figure 3-1. Both use the WebHDFS protocol.
