视频1 视频21 视频41 视频61 视频文章1 视频文章21 视频文章41 视频文章61 推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37 推荐39 推荐41 推荐43 推荐45 推荐47 推荐49 关键词1 关键词101 关键词201 关键词301 关键词401 关键词501 关键词601 关键词701 关键词801 关键词901 关键词1001 关键词1101 关键词1201 关键词1301 关键词1401 关键词1501 关键词1601 关键词1701 关键词1801 关键词1901 视频扩展1 视频扩展6 视频扩展11 视频扩展16 文章1 文章201 文章401 文章601 文章801 文章1001 资讯1 资讯501 资讯1001 资讯1501 标签1 标签501 标签1001 关键词1 关键词501 关键词1001 关键词1501 专题2001
HDFSHttpFS操作实战
2020-11-09 12:57:53 责编:小采
文档


HttpFS是提供REST HTTP接口的服务器,可以支持全部HDFS文件系统操作(读和写),它通过webhdfs REST HTTP API来进行交互。这个功能由cloudera提供给Apache主分支。 HttpFS可以用于在不同的Hadoop版本间传输数据(避免了RPC版本问题),例如使用Hadoop DistCP

HttpFS是提供REST HTTP接口的服务器,可以支持全部HDFS文件系统操作(读和写),它通过webhdfs REST HTTP API来进行交互。这个功能由cloudera提供给Apache主分支。
HttpFS可以用于在不同的Hadoop版本间传输数据(避免了RPC版本问题),例如使用Hadoop DistCP。
HTTP可以用于访问防火墙内的HDFS集群数据(HttpFS可以作为一个网关角色,是唯一可以穿过防火墙访问内部集群数据的系统)。
HttpFS可以通过HTTP工具(比如curl和wget)和各种编程语言的HTTP包(不局限Java)来访问数据。
webhdfs 客户端文件系统实现可以使用HDFS文件系统命令行命令(如hadoop dfs)以及使用HDFS Java API来访问HttpFS。
HttpFS内置安全特性支持Hadoop伪身份验证和HTTP SPNEGO Kerberos 和其他插件式(pluggable )验证机制。它还提供了Hadoop代理用户的支持。

HttpFS如何工作?

HttpFS是一个运行于绑定Tomcat中的Java Web应用,于Hadoop NameNode。
HttpFS HTTP web-service API调用是 映射HDFS文件操作命令的HTTP REST调用,例如:

$ curl http://httpfs-host:14000/webhdfs/v1/user/foo/README.txt 返回HDFS中/user/foo/README.txt目录的内容。
$ curl http://httpfs-host:14000/webhdfs/v1/user/foo?op=list 以JSON的形式返回HDFS 中/user/foo目录的内容。
$ curl -X POST http://httpfs-host:14000/webhdfs/v1/user/foo/bar?op=mkdirs 创建HDFS/foo.bar目录。

HttpFS和Hadoop HDFS代理有何不同?

–> HttpFS的灵感来自于Hadoop HDFS代理
–> HttpFS可以被认为是Hadoop HDFS代理的完全重写
–> Hadoop HDFS代理提供了文件系统操作的子集(只能读),而HttpFS提供了全部文件系统的操作
–> HttpFS使用了一套纯净的 HTTP REST API,可以更直接得使用HTTP工具
–> HttpFS提供了Hadoop的伪认证,Kerberos SPNEGOS 认证和Hadoop代理用户,而Hadoop HDFS 代理没有提供
操作实战:

# 首先在Cloudera Manager中启用HttpFS(server:hdp02)。详细API介绍参考下面文档链接。
# 关于HttpFS中的伪认证,可以通过&user.name来提供,下面的命令获得hive用户的homedir
curl "http://hdp02:14000/webhdfs/v1?op=gethomedirectory&user.name=hive"
{"Path":"\/user\/hive"}
# 创建一个/user/hive/tmp目录,目录的权限为777
curl -i -X PUT "http://hdp02:14000/webhdfs/v1/user/hive/tmp?op=MKDIRS&user.name=hive"
{"boolean":true}
curl -i -X PUT "http://hdp02:14000/webhdfs/v1/user/hive/tmp?op=SETPERMISSION&permission=777&user.name=hive"
#列出/user/tmp下的文件列表
curl "http://hdp02:14000/webhdfs/v1/user/hive?op=LISTSTATUS&user.name=hive"
{"FileStatuses":{"FileStatus":[{"pathSuffix":"tmp","type":"DIRECTORY","length":0,"owner":"hive","group":"hadoop","permission":"777","accessTime":0,"modificationTime":14192345758,"blockSize":0,"replication":0}]}}
#上传文件
curl -i -X PUT -T /tmp/test.txt "http://hdp02:14000/webhdfs/v1/user/hive/tmp/test.txt?op=CREATE&data=true&user.name=hive" -H "Content-Type:application/octet-stream"
HTTP/1.1 100 Continue
HTTP/1.1 201 Created
......
#删除tmp目录
curl -i -X DELETE "http://hdp02:14000/webhdfs/v1/user/hive/tmp?op=DELETE&recursive=true&user.name=hive"
HTTP/1.1 200 OK
......
{"boolean":true}

相关文档:
Hadoop HDFS over HTTP
WebHDFS REST API
Hadoop HDFS over HTTP 2.6.0 – Server Setup
Hadoop HDFS over HTTP 2.6.0 – Using HTTP Tools

下载本文
显示全文
专题