一、HTTPFS简介
1:httpfs是cloudera公司提供的一个hadoop hdfs的一个http接口,通过WebHDFS REST API 可以对hdfs进行读写等访问
2:与WebHDFS的区别是不需要客户端可以访问hadoop集群的每一个节点,通过httpfs可以访问放置在防火墙后面的hadoop集群
3:httpfs是一个Web应用,部署在内嵌的tomcat中
用这种方式在数据共享给其他系统时,网络安全上更容易实现,使用请参考:
http://archive.cloudera.com/cdh4/cdh/4/hadoop/hadoop-project-dist/hadoop-hdfs/WebHDFS.html
二、启动服务(针对使用cloudera manager安装了CDH4或CDH5)
在cm控制台,打开hdfs实例页面,添加httpfs服务,然后启动即可。
三、安装可参考(手工安装)
http://blog.csdn.net/ganglia/article/details/25902873
四、curl操作命令示例(需要将host替换为实际部署httpfs的服务器IP)
curl -c ~/.httpsauth "http://host:14000/webhdfs/v1?op=gethomedirectory&user.name=hdfs"
curl -b ~/.httpsauth "http://host:14000/webhdfs/v1?op=gethomedirectory"
curl -b ~/.httpsauth "http://host:14000/webhdfs/v1/test/data1.txt?op=OPEN"
curl -b ~/.httpsauth -X DELETE "http://host:14000/webhdfs/v1/test/data1.txt?op=DELETE"
创建和追加都是分为两步,测试都没有成功(注意,一定要追加--header参数,否则创建会失败)
curl -b ~/.httpsauth -i -X PUT "http://172.168.63.221:14000/webhdfs/v1/test2?op=CREATE&buffersize=1000"
curl -b ~/.httpsauth -i -X PUT -T data2.txt --header "Content-Type: application/octet-stream" "http://172.168.63.221:14000/webhdfs/v1/test2/data.txt?op=CREATE&user.name=hdfs&buffersize=1000&data=true"
五、基于JAVA操作httpfs的开源代码
开源项目地址,有什么问题可以直接反馈给我
https://github.com/gitriver/httpfs-client
说明
1 包com.catt.httpfs.client.httpclient是采用commons-httpclient.jar,
基于http请求实现的,没有使用到hadoop相关的jar
2 包org.apache.hadoop.fs.http.client根据httpfs项目的源代码,
根据需要修改了一下,使用了hadoop相关的jar