【问题标题】:hadoop getmerge to another machinehadoop getmerge 到另一台机器
【发布时间】:2014-02-14 10:08:47
【问题描述】:

是否可以将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)。

【问题讨论】:

    标签: hadoop storage pipe hdfs remote-access


    【解决方案1】:

    这将完全满足您的需求:

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

    fs -cat 会依次读取所有文件并输出到标准输出。

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

    【讨论】:

    • 这是一个很好的答案!正是我需要的!实际上,我想连接到 HDFS 所在的远程主机,所以命令是相反的:ssh user@remotehost.com "hadoop fs -cat /user/hduser/Job-output/part-*" | cat > mergedOutput.txt。我编辑了您的答案以包含此命令并添加 /Job-output/part-*,而不是 /Job-output/* 以仅获得结果
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多