HttpFS是一个提供REST HTTP网关的服务器,支持所有HDFS文件系统操作(读写)。它与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'
以JSON格式返回HDFS目录/user/foo
中的内容。
$ curl 'http://httpfs-host:14000/webhdfs/v1/user/foo?op=GETTRASHROOT&user.name=foo'
返回路径 /user/foo/.Trash
,如果 /
是加密区域,则返回路径 /.Trash/foo
。关于加密区域中的回收站路径,请参阅更多详情。
$ curl -X PUT 'http://httpfs-host:14000/webhdfs/v1/user/foo/bar?op=MKDIRS&user.name=foo'
创建HDFS目录 /user/foo/bar
。