首页 > 代码库 > 利用CURL命令调用WebHDFS REST API与Kerberos机制

利用CURL命令调用WebHDFS REST API与Kerberos机制

1. CURL安装

cURL是一个利用URL语法在命令行下工作的文件传输工具,1997年首次发行。它支持文件上传和下载,所以是综合传输工具,但按传统,习惯称cURL为下载工具。cURL还包含了用于程序开发的libcurl。CURL官方网站:http://curl.haxx.se/

1.1 Linux安装

这个网上资料比较多,只要搜索“curl 安装 linux”就应该有不少介绍。

1.2 Windows安装

这篇博客介绍了windows下的安装:http://blog.csdn.net/ichliebephone/article/details/6602537
但是它比较简单,有可能会出问题。比如需要先Install Visual C++ 2010 Redistributable Package。
下面这个链接给的应该比较全:http://www.oracle.com/webfolder/technetwork/tutorials/obe/cloud/13_2/storageservice/restrict_rw_accs_cntainers_REST_API/files/installing_curl_command_line_tool_on_windows.html

不过比较不幸地是,我装完之后,始终无法支持参数 --negotiate

最后我是从http://www.confusedbycode.com/curl/直接安装后才好了的。

2. WebHDFS REST API介绍

Hadoop官方文档中有比较详细的WebHDFS REST API介绍:http://hadoop.apache.org/docs/r1.0.4/webhdfs.html#OPEN

一些常用操作:
打开读取文件: 
curl -i -L "http://<HOST>:<PORT>/webhdfs/v1/<PATH>?op=OPEN
                    [&offset=<LONG>][&length=<LONG>][&buffersize=<INT>]"
列出目录: 
curl -i  "http://<HOST>:<PORT>/webhdfs/v1/<PATH>?op=LISTSTATUS"

3. HDFS安全Kerberos配置与访问

对于没有安全机制的hadoop,我们只需要直接运行上面的curl命令就可以了。但是如果需要配置安全机制如kerberos,则不仅涉及到hadoop服务器,还有客户端。
http://www.cloudera.com/content/cloudera-content/cloudera-docs/CDH4/4.3.0/CDH4-Security-Guide/cdh4sg_topic_7_2.html这个链接里面有比较好的配置hadoop来启动HttpFS安全机制,以及在客户端的访问方式。
我们需要通过:“curl -V”命令来查看curl的版本以及是否支持HTTP SPNEGO。对于不支持SPNEGO可能就无法来访问配置了kerberos的webhdfs了。
下一步则是登陆kdc获取ticket,然后curl来调用。
curl -V
kinit 【ztan@domain】
Please enter the password for ztan@domain:
curl --negotiate -u : -b ~/cookiejar.txt -c ~/cookiejar.txt http://localhost:14000/webhdfs/v1/?op=liststatus
Windows下目前我不知道是否有cookiejar.txt类似的文件在哪或怎么生成。但是我试过下面命令是可以成功的。
curl --negotiate -u : http://localhost:14000/webhdfs/v1/?op=liststatus

利用CURL命令调用WebHDFS REST API与Kerberos机制