HttpFS 是一個伺服器,提供一個支援所有 HDFS 檔案系統作業(讀取和寫入)的 REST HTTP 閘道。它與 webhdfs REST HTTP API 相容。
HttpFS 可用於在執行不同 Hadoop 版本的叢集之間傳輸資料(克服 RPC 版本問題),例如使用 Hadoop DistCP。
HttpFS 可用於存取防火牆後方叢集中的 HDFS 資料(HttpFS 伺服器作為閘道,是唯一允許跨越防火牆進入叢集的系統)。
HttpFS 可用於使用 HTTP 工具(例如 curl 和 wget)和 Perl 等非 Java 語言的 HTTP 函式庫存取 HDFS 中的資料。
webhdfs 檔案系統實作可以透過 Hadoop 檔案系統命令(hadoop fs
)列工具,以及使用 Hadoop 檔案系統 Java API 的 Java 應用程式來存取 HttpFS。
HttpFS 內建安全性,支援 Hadoop 偽驗證和 HTTP SPNEGO Kerberos 及其他可插入的驗證機制。它也提供 Hadoop 代理使用者支援。
HttpFS 是 Hadoop NameNode 的獨立服務。
HttpFS 本身是 Java Jetty 網路應用程式。
HttpFS HTTP 網路服務 API 呼叫是對應到 HDFS 檔案系統操作的 HTTP REST 呼叫。例如,使用 curl
Unix 指令
$ curl 'http://httpfs-host:14000/webhdfs/v1/user/foo/README.txt?op=OPEN&user.name=foo'
會傳回 HDFS /user/foo/README.txt
檔案的內容。
$ curl 'http://httpfs-host:14000/webhdfs/v1/user/foo?op=LISTSTATUS&user.name=foo'
會以 JSON 格式傳回 HDFS /user/foo
目錄的內容。
$ curl 'http://httpfs-host:14000/webhdfs/v1/user/foo?op=GETTRASHROOT&user.name=foo'
會傳回路徑 /user/foo/.Trash
,如果 /
是加密區域,則會傳回路徑 /.Trash/foo
。請參閱 更多詳細資訊,了解加密區域中的垃圾桶路徑。
$ curl -X POST 'http://httpfs-host:14000/webhdfs/v1/user/foo/bar?op=MKDIRS&user.name=foo'
會建立 HDFS /user/foo/bar
目錄。