hdfs之WebHDFS和HttpFS介绍

前言

HDFS提供了Java Native API,客户端应用程序使用它可以高效的访问HDFS。如果客户端应用程序位于HDFS集群之外怎么办?且无法安装整个Hadoop库和Java库的情况下,就需要其他方式解决这种使用场景,例如:Yahoo的HFTP和HdfsProxy V3,Cloudera的Hoop。但是大浪淘沙,目前胜出的就是这两个了。

 

WebHDFS和HttpFS

WebHDFS是HortonWorks开发的,然后捐给了Apache,可见博客:WebHDFS – HTTP REST Access to HDFS。而HttpFS是Clouera开发的,也捐给了Apache,可见博客:HttpFS for CDH3 – The Apache Hadoop FileSystem over HTTP。

相同点:

它们的终极目标完全一致:就是让身处HDFS集群之外的应用程序,不但不用安装Hadoop和Java库,并且可以通过流行的REST风格的接口去访问HDFS集群,还有HttpFS与WebHDFS的HTTP REST API完全兼容。这样一来,不管是使用C++、Python或其它语言的外部程序,都可以以一种统一的方式访问HDFS,这真是程序员的福音呀......

不同点:

WebHDFS是HDFS内置的组件,已经运行于NameNode和DataNode中。对HDFS文件的读写,将会重定向到文件所在的DataNode,并且会完全利用HDFS的带宽。HttpFS是独立于HDFS的一个服务。对HDFS文件的读写,将会通过它进行中转,它能限制带宽占用。

看起来,HttpFS有些类似于Thrift呀......这样看来,如果访问大文件时,HttpFS服务本身有可能变成瓶颈。当然,如果你想限制客户端流量,以防其过度占用集群的带宽时,那就要考虑HttpFS了。

 

基本使用

$ curl -i -L "http://NameNode_host:50070/webhdfs/v1/tmp/LICENSE.txt?op=OPEN"
HTTP/1.1 307 TEMPORARY_REDIRECT
Cache-Control: no-cache
Expires: Tue, 08 Oct 2019 06:48:08 GMT
Date: Tue, 08 Oct 2019 06:48:08 GMT
Pragma: no-cache
Expires: Tue, 08 Oct 2019 06:48:08 GMT
Date: Tue, 08 Oct 2019 06:48:08 GMT
Pragma: no-cache
Location: http://DataNode_host:50075/webhdfs/v1/tmp/LICENSE.txt?op=OPEN&namenoderpcaddress=HAClusterT&offset=0
Content-Type: application/octet-stream
Content-Length: 0
Server: Jetty(6.1.26)

HTTP/1.1 200 OK
Access-Control-Allow-Methods: GET
Access-Control-Allow-Origin: *
Content-Type: application/octet-stream
Connection: close
Content-Length: 15429
......


curl -i -X POST "http://NameNode_host:50070/webhdfs/v1/tmp/LICENSE.txt?op=APPEND"
HTTP/1.1 307 TEMPORARY_REDIRECT
Cache-Control: no-cache
Expires: Tue, 08 Oct 2019 08:08:14 GMT
Date: Tue, 08 Oct 2019 08:08:14 GMT
Pragma: no-cache
Expires: Tue, 08 Oct 2019 08:08:14 GMT
Date: Tue, 08 Oct 2019 08:08:14 GMT
Pragma: no-cache
Location: http://DataNode_host:50075/webhdfs/v1/tmp/LICENSE.txt?op=APPEND&namenoderpcaddress=HAClusterT
Content-Type: application/octet-stream
Content-Length: 0
Server: Jetty(6.1.26)

 
#curl -i -L "http://HttpFS_host:14000/webhdfs/v1/foo/bar?op=OPEN

可以看到,WebHDFS访问时,首先访问NameNode获知文件所在的DataNode地址,然后重定向到目标DataNode获取文件内容。

 

 

 

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值