HttpFSは、すべてのHDFSファイルシステム操作(読み取りと書き込み)をサポートするREST HTTPゲートウェイを提供するサーバーです。そして、webhdfs REST HTTP APIと相互運用可能です。
HttpFSは、異なるバージョンのHadoopを実行するクラスタ間でデータ転送を行うために使用できます(RPCのバージョン管理の問題を克服)。たとえば、Hadoop DistCPを使用します。
HttpFSは、ファイアウォールの背後にあるクラスタ上のHDFS内のデータにアクセスするために使用できます(HttpFSサーバーはゲートウェイとして機能し、クラスタへのファイアウォールを通過することを許可される唯一のシステムです)。
HttpFSは、HTTPユーティリティ(curlやwgetなど)と他の言語(Java以外)からのHTTPライブラリPerlを使用して、HDFS内のデータにアクセスするために使用できます。
webhdfsクライアントファイルシステム実装を使用して、Hadoopファイルシステムコマンド(hadoop fs
)ラインツールと、Hadoop FileSystem Java APIを使用してJavaアプリケーションからHttpFSにアクセスできます。
HttpFSには、Hadoop擬似認証とHTTP SPNEGO Kerberos、およびその他のプラグ可能な認証メカニズムをサポートする組み込みセキュリティがあります。また、Hadoopプロキシユーザーサポートも提供します。
HttpFSは、Hadoop NameNodeとは別のサービスです。
HttpFS自体は、Java Jetty Webアプリケーションです。
HttpFS HTTP WebサービスAPIコールは、HDFSファイルシステム操作にマップされるHTTP RESTコールです。たとえば、curl
Unixコマンドを使用すると
$ curl 'http://httpfs-host:14000/webhdfs/v1/user/foo/README.txt?op=OPEN&user.name=foo'
は、HDFS /user/foo/README.txt
ファイルの内容を返します。
$ curl 'http://httpfs-host:14000/webhdfs/v1/user/foo?op=LISTSTATUS&user.name=foo'
は、HDFS /user/foo
ディレクトリの内容をJSON形式で返します。
$ curl 'http://httpfs-host:14000/webhdfs/v1/user/foo?op=GETTRASHROOT&user.name=foo'
は、/
が暗号化ゾーンの場合、パス/user/foo/.Trash
を返し、暗号化ゾーンの場合、パス/.Trash/foo
を返します。詳細はこちら暗号化ゾーンのゴミ箱パスについて。
$ curl -X POST 'http://httpfs-host:14000/webhdfs/v1/user/foo/bar?op=MKDIRS&user.name=foo'
は、HDFS /user/foo/bar
ディレクトリを作成します。