原文:http://blog.csdn.net/iloveyin/article/details/28264027
----------------------------------------------------------------------------------------
1.配置
namenode的hdfs-site.xml是必須將dfs.webhdfs.enabled屬性設置為true,否則就不能使用webhdfs的LISTSTATUS、LISTFILESTATUS等需要列出文件、文件夾狀態的命令,因為這些信息都是由namenode來保存的。
在namenode和一臺datanode中向/etc/hadoop/conf/hdfs-site.xml中添加屬性:
1 2 3 4 | < property >? < name >dfs.webhdfs.enabled</ name >? < value >true</ value >? </ property > |
2.使用說明
訪問namenode的hdfs使用50070端口,訪問datanode的webhdfs使用50075端口。訪問文件、文件夾信息使用namenode的IP和50070端口,訪問文件內容或者進行打開、上傳、修改、下載等操作使用datanode的IP和50075端口。要想不區分端口,直接使用namenode的IP和端口進行所有的webhdfs操作,就需要在所有的datanode上都設置hefs-site.xml中的dfs.webhdfs.enabled為true。
3.curl操作webhdfs
創建并寫一個文件
curl -i -X PUT "http://localhost:50070/webhdfs/v1/<PATH>?op=CREATE
[&overwrite=<true|false>][&blocksize=<LONG>][&replication=<SHORT>]
[&permission=<OCTAL>][&buffersize=<INT>]“
curl -i -X PUT -T <LOCAL_FILE> "http://<DATANODE>:<PORT>/webhdfs/v1/<PATH>?
op=CREATE...“
注意這個地方填入的是DataNode的信息
在一個文件內追加內容
curl -i -X POST "http://<HOST>:<PORT>/webhdfs/v1/<PATH>?op=APPEND[&buffersize=<INT>]”
curl -i -X POST -T <LOCAL_FILE> "http://<DATANODE>:<PORT>/webhdfs/v1/<PATH>?
op=APPEND...“
注意該條命令獲得的是DataNode的信息。
打開并讀取一個文件
curl -i -L "http://<HOST>:<PORT>/webhdfs/v1/<PATH>?op=OPEN
[&offset=<LONG>][&length=<LONG>][&buffersize=<INT>]“
創建一個目錄
curl -i -X PUT "http://<HOST>:<PORT>/<PATH>?op=MKDIRS[&permission=<OCTAL>]“
重名命文件、文件夾
curl -i -X PUT "<HOST>:<PORT>/webhdfs/v1/<PATH>?op=RENAME&destination=<PATH>"
刪除文件/文件夾
curl -i -X DELETE "http://<host>:<port>/webhdfs/v1/<path>?op=DELETE [&recursive=<true|false>]“
文件/ 文件夾的狀態信息
curl -i “http://<HOST>:<PORT>/webhdfs/v1/<PATH>?op=GETFILESTATUS“
目錄列表
curl -i "http://<HOST>:<PORT>/webhdfs/v1/<PATH>?op=LISTSTATUS”
獲取目錄的上下文環境匯總信息
curl -i "http://<HOST>:<PORT>/webhdfs/v1/<PATH>?op=GETCONTENTSUMMARY"
獲取Check Sum File
curl -i "http://<HOST>:<PORT>/webhdfs/v1/<PATH>?op=GETFILECHECKSUM”
獲取Home 目錄
curl -i "http://<HOST>:<PORT>/webhdfs/v1/?op=GETHOMEDIRECTORY”
設置權限
curl -i -X PUT "http://<HOST>:<PORT>/webhdfs/v1/<PATH>?op=SETPERMISSION [&permission=<OCTAL>]“
設置所有者
curl -i -X PUT "http://<HOST>:<PORT>/webhdfs/v1/<PATH>?op=SETOWNER [&owner=<USER>][&group=<GROUP>]"
設置備份
curl -i -X PUT "http://<HOST>:<PORT>/webhdfs/v1/<PATH>?op=SETREPLICATION [&replication=<SHORT>]“