hadoop getmerge到另一台机器

时间:2014-02-14 10:08:48

标签: hadoop storage pipe hdfs remote-access

是否可以将hadoop dfs -getmerge命令的输出存储到另一台机器?

原因是我的本地机器没有足够的空间。作业输出为100GB,本地存储为60GB。

另一个可能的原因可能是我想在本地另一个程序中处理另一个程序中的输出,而我不想将它传输两次(HDFS->本地FS - >远程机器)。我只想要(HDFS - >远程机器)。

我正在寻找与scp的工作方式类似的内容,例如:

hadoop dfs -getmerge /user/hduser/Job-output user@someIP:/home/user/

或者,我也希望将HDFS数据从远程主机获取到本地计算机。

在这种情况下可以使用unix管道吗?

对于那些不熟悉hadoop的人,我只是想找到一种方法来将此命令中的本地dir参数(/user/hduser/Job-output)替换为远程计算机上的目录。

1 个答案:

答案 0 :(得分:2)

这将完全符合您的需求:

hadoop fs -cat /user/hduser/Job-output/* | ssh user@remotehost.com "cat >mergedOutput.txt"

fs -cat将按顺序读取所有文件并将它们输出到stdout。

ssh会将它们传递给远程机器上的文件(注意scp不会接受stdin作为输入)