赞
踩
两者都是基于REST的HDFS API,使得一个集群外的host可以不用安装HADOOP和JAVA环境就可以对集群内的HADOOP进行访问,并且client不受语言的限制。
WebHDFS是HDFS内置的、默认开启的一个服务,而HttpFS是HDFS一个独立的服务,若使用需要手动安装(CDH中安装HDFS时将HttpFS勾选上即可)。
WebHDFS是HortonWorks开发的,然后捐给了Apache;而HttpFS是Cloudera开发的,也捐给了Apache。
差别介绍
虽然两者都是HDFS的REST API,但稍有差异,见官网差异介绍和Stack Overflow–WebHDFS vs HttpFS:
WebHDFS vs HttpFs Major difference between WebHDFS and HttpFs: WebHDFS needs access to all nodes of the cluster and when some data is read it is transmitted from that node directly, whereas in HttpFs, a singe node will act similar to a “gateway” and will be a single point of data transfer to the client node. So, HttpFs could be choked during a large file transfer but the good thing is that we are minimizing the footprint required to access HDFS.
意为当client请求某文件时,WebHDFS会将其重定向到该资源所在的datanode,而HttpFs相等于一个“网关”,所有的数据先传输到该httpfs server,再由该httpfs server传输到client。
以使用WebHDFS打开某一文件为例,见官方文档—WebHDFS–Open_and_Read_a_File,
由于HttpFS会首先将数据传输到lyhadoop5.haohandata.com(HttpFS Server),再由该Server传输到Client,故当数据量比较大或并发访问次数比较多时,HttpFS Server将会成为数据传输的瓶颈,出现传输失败的情况。
WebHDFS
curl -i -L http://lyhadoop4.com:50070/webhdfs/v1/user/hdfs/test_hadoop/data-256M-alone?op=OPEN
HttpFS
curl -i -L http://lyhadoop5.com:14000/webhdfs/v1/user/hdfs/test_hadoop/data-256M-alone?op=OPEN&user.name=hdfs
" 正确的格式应该如下所示"
curl -i -L http://lyhadoop5.com:14000/webhdfs/v1/user/hdfs/test_hadoop/data-256M-alone\?op\=OPEN\&user.name\=hdfs
特别注意:
请将上面的lyhadoop4.com改为集群namenode的host,lyhadoop5.com改为HttpFS Server的host。
使用WebHDFS访问文件时,由于包含资源的重定向(待添加),故进行压力测试时,特别注意针对“重定向的处理”。JMeter勾选相应参数即可,但Tsung还没找到相应参数。
对HttpFS进行压力测试时,响应时间相当于下载文件的时间,与命令curl -i并不同,该命令相当于查看文件。比如,大小为256M的文件,进行压测的响应时间为27s,但使用命令curl -i的执行时间大约为4min。
一般来说两个都可以使用,而且差别不大。但若集群配置了HA,那就最好使用HttpFS了,因为namenode的地址一直在变化,我们是不可能也随时修改脚本里的请求地址的,故在这种情况下直接写HttpFS Server的地址好了。
参考链接:https://blog.csdn.net/u012948976/article/details/51591089
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。