2014-02-14 32 views
2

是否有可能將hadoop dfs -getmerge命令的輸出存儲到另一臺機器上?hadoop getmerge到另一臺機器

原因是我的本地計算機沒有足夠的空間。作業輸出爲100GB,本地存儲容量爲60GB。

另一個可能的原因可能是我想在另一臺機器上本地,另一臺機器上處理另一個程序中的輸出,而且我不想將它傳輸兩次(HDFS-> local FS - > remote machine)。我只想(HDFS - >遠程機器)。

我正在尋找類似的東西如何scp作品,如:

hadoop dfs -getmerge /user/hduser/Job-output [email protected]:/home/user/

另外,我也想從遠程主機的HDFS數據到我的本地機器。

在這種情況下可以使用unix管道嗎?

對於那些不熟悉hadoop的人,我只是尋找一種方法來將此命令中的本地dir參數(/user/hduser/Job-output)替換爲遠程機器上的目錄。

回答

2

這將不正是你所需要的:

hadoop fs -cat /user/hduser/Job-output/* | ssh [email protected] "cat >mergedOutput.txt" 

FS -cat將序列以及它們輸出到標準輸出讀取所有文件。

ssh會將它們傳遞給遠程機器上的文件(注意scp不會接受stdin作爲輸入)

+0

這是一個很好的答案!正是我需要的!實際上,我想連接到HDFS所在的遠程主機,所以命令是相反的: 'ssh [email protected]「hadoop fs -cat/user/hduser/Job-output/part- *」 | cat> mergedOutput.txt'。我編輯了你的答案來包含這個命令,並且添加'/ Job-output/part- *',而不是'/ Job-output/*'來獲得結果 – vefthym

相關問題