2016-05-30 146 views
1

據我所知,copyFromLocal或將命令用於本地文件複製到HDFS。我的問題是,如果我們想要運行命令將文件複製到HDFS,那麼是否需要在羣集上? 假設,我有3個節點的集羣爲A1,A2和A3,其中A1是主節點和A2和A3是數據節點。 1.要複製到的數據節點的任何文件,我需要登錄到任何節點(A1,A2或A3) 2.要到數據節點的任何文件從任何其他位置之外簇說機X1複製的,如何可以將文件從x1複製到羣集?將本地文件複製到hdfs需要在hdfs集羣上?

感謝 -Brijesh

+0

順便說一句,它被認爲是禮貌的接受答案,其他人給你(或它爲什麼沒有解決你的問題發表評論)。我注意到你沒有接受你之前發佈的問題的答案。當Stackoverflow用戶注意到這種行爲時,他們沉默地回答你的問題。 – cabad

回答

0

可以使用SSH上傳文件:

cat your_local_file_to_upload | ssh [email protected]_HADOOP_GATEWAY "hadoop dfs -put - hadoopFolderName/file_name_in_hdfs"

這裏,YOUR_HADOOP_GATEWAY是一個節點的IP地址,或者被配置爲充當一臺機器網關到Hadoop集羣

它適用於二進制文件了。

如果你想下載的文件,你同樣可以做到以下幾點:

ssh [email protected]_HADOOP_GATEWAY "hdfs dfs -cat src_path_in_HDFS " > local_dst_path

0

此外,看一看WebHDFS這是與集羣交互的REST API,通常在同一個運行主機作爲名稱節點。