hadoop fs getmerge到远程服务器/计算机

7bsow1i6  于 2021-05-30  发布在  Hadoop
关注(0)|答案(2)|浏览(346)

我有和这篇文章一样的问题:hadoop getmerge到另一台机器上,但答案对我不适用
总结一下我想做的:从hadoop集群获取合并(或获取文件),而不是复制到本地机器(由于磁盘空间不足或没有),而是直接将它们传输到远程机器。我的公钥在远程机器授权密钥列表中,因此不需要密码验证。
我在本地机器上的常用命令是(它将文件合并并作为gzip文件放到本地服务器/机器上): hadoop fs -getmerge folderName.on.cluster merged.files.in.that.folder.gz 我试着在另一个岗位上: hadoop fs -cat folderName.on.cluster/* | ssh user@remotehost.com:/storage | "cat > mergedoutput.txt" 这对我没用。。我会犯这样的错误。。 Pseudo-terminal will not be allocated because stdin is not a terminal. ssh: Could not resolve hostname user@remotehost.com:/storage /: Name or service not known 我试过另一种方法 ssh user@remotehost.com:/storage "hadoop fs -cat folderName.on.cluster/*" | cat > mergedoutput.txt 然后:

-bash: cat > mergedoutput.txt: command not found
Pseudo-terminal will not be allocated because stdin is not a terminal.
-bash: line 1: syntax error near unexpected token `('

感谢您的帮助。我也不需要这么做 -getmerge ,我也可以 -get 然后只要把复制到远程机器上的文件合并起来。另一种选择是,如果有一种方法可以在远程服务器上运行命令,直接从hadoop集群服务器复制文件。
谢谢
我想出来了 hadoop fs -cat folderName.on.cluster/* | ssh user@remotehost.com "cd storage; cat > mergedoutput.txt" 这就是我的工作。感谢@vefthym的帮助。
这会将hadoop集群上目录中的文件合并到远程主机,而不将其复制到本地主机yay(已经很满了)。在复制文件之前,我需要切换到另一个目录,我需要该文件位于其中,因此 cd storage; 之前 cat merged output.gz

mnemlml8

mnemlml81#

我很高兴你发现我的问题很有用!
我认为您的问题只是ssh,而不是您描述的解决方案。它对我很有效。顺便说一下,在第一个命令中,您有一个额外的“|”字符。如果你只是打字你会得到什么 ssh user@remotehost.com ? 您键入的是名称还是ip?如果您键入一个名称,它应该存在于 /etc/hosts 文件。
基于这篇文章,我猜你在使用cygwin,并且有一些错误的配置。除了公认的解决方案之外,请检查是否已安装openssh cygwin包,正如第二个最佳答案所示。

6qftjkof

6qftjkof2#

hadoop fs -cat folderName.on.cluster/* | ssh user@remotehost.com "cd storage; cat > mergedoutput.txt" 这就是我的工作。感谢@vefthym的帮助。
这会将hadoop集群上目录中的文件合并到远程主机,而不将其复制到本地主机yay(已经很满了)。在复制文件之前,我需要切换到另一个目录,我需要该文件位于其中,因此 cd storage; 之前 cat merged output.gz

相关问题