0

我在Amazon EC2計算機上遇到WebHDFS訪問問題。我已經安裝了Hortonworks HDP 2.3 btw。在Hortonworks Hadoop(AWS EC2)上訪問WebHDFS

我可以檢索從我的本地機器上的瀏覽器(Chrome)與下一個HTTP請求中的文件狀態:

http://<serverip>:50070/webhdfs/v1/user/admin/file.csv?op=GETFILESTATUS 

這工作正常,但如果我嘗試打開該文件?op=OPEN,然後將其重定向我到機器,我無法訪問的私有DNS:

http://<privatedns>:50075/webhdfs/v1/user/admin/file.csv?op=OPEN&namenoderpcaddress=<privatedns>:8020&offset=0 

我還嘗試了用這個命令從AWS機器本身獲得WebHDFS:

[[email protected]<ip> conf]$ curl -i http://localhost:50070/webhdfs/v1/user/admin/file.csv?op=GETFILESTATUS 
curl: (7) couldn't connect to host 

有誰知道我爲什麼不能連接到本地主機,或者爲什麼我的本地機器上的OPEN不起作用? 不幸的是,我找不到任何教程來爲Amazon機器配置WebHDFS。

由於提前

+0

見http://stackoverflow.com/questions/19936313/webhdfs-returns-wrong-datanode-address –

回答

1

什麼情況是,名稱節點將您重定向到數據管理部。似乎您安裝了單節點集羣,但概念上名稱節點和數據節點是不同的,並且在您的配置中,數據節點在您的EC2 VPC的私有端上活動/收聽。

您可以重新配置您的羣集以承載公有IP/DNS上的datanodes(請參閱HDFS Support for Multihomed Networks),但我不會這麼做。我認爲正確的解決方案是添加一個Know gateway,這是一個專用組件,用於從公共API訪問專用羣集。具體而言,您將必須配置datanode URL,請參見Chapter 5. Mapping the Internal Nodes to External URLs。這個例子似乎發現對你的情況:

例如,上載與WebHDFS服務的文件時:

  • 外部客戶端發送到網關WebHDFS服務的請求。

  • 網關使用服務URL將請求代理到WebHDFS。

  • WebHDFS確定哪個的DataNodes上創建文件,並返回 的路徑上載作爲HTTP重定向一個位置標頭, 包含數據管理部的主機信息。

  • 網關根據重定向中的數據節點主機名 將路由策略擴展爲映射到外部可解析的主機名。

  • 外部客戶端繼續通過網關上傳文件。

  • 網關通過使用擴充的 路由策略代理請求到數據節點。

  • 數據管理部再次返回上傳和網關的狀態 將這些信息沒有暴露任何內部羣集 細節。

+0

感謝您的答覆。假設我已經安裝了單個節點羣集,您是對的。我想我會嘗試設置諾克斯網關。我讓你知道如果這解決了問題 – Baeumla

+0

我試圖解決我的問題與WebHDFS和knox網關,但我無法啓動ldap演示服務器,所以我試圖使用HTTPfs,這工作正常。儘管如此,謝謝你的回答! – Baeumla