有点复杂的设置:
我有以下结构
localhost --> bastion_host -> server -> hadoop_cluster
现在我可以创建一个ssh隧道,允许我从localhost
和server
复制文件。进入服务器后,我总是可以使用hadoop fs -put/get
来传输群集中的文件。但除了server
有没有办法使用现有隧道将文件复制进出群集?
我的印象是我可以使用"
ssh -p 2345 localhost "hadoop fs -put -/user/eron/test_file3" < testing_scp.txt
其中2345是隧道的本地端口,testing_scp.txt是本地文件。
然而,我得到了
&#34; sh:hadoop:找不到命令&#34;
因此命令不会在server
答案 0 :(得分:3)
当您使用ssh服务器时,通过执行.bashrc,.profile等来更新$ PATH。当您使用隧道时,/ usr / local / hadoop / bin未添加到您的$ PATH
它应该可以指定hadoop二进制路径:
ssh -p 2345 localhost "/usr/local/hadoop/bin/hadoop fs -put -/user/eron/test_file3" < testing_scp.txt
答案 1 :(得分:1)
ssh -p 2345 localhost "hadoop fs -put -/user/eron/test_file3" < testing_scp.txt
在使用之前使用hypen
答案 2 :(得分:1)
显然很晚了,但是由于我正在寻找相同的东西(尤其是提取内容),所以想为自己的未来记录下来:
其他将文件放入的答案可以通过
完成ssh -p 2345 localhost \
"/usr/local/hadoop/bin/hadoop fs -put - /user/eron/test_file3" \
< testing_scp.txt
或者:
cat testing_scp.txt | \
ssh -p 2345 localhost "/usr/local/hadoop/bin/hadoop fs -put - /user/eron/test_file3
得到它几乎是相同的:
ssh -p 2345 localhost \
"/usr/local/hadoop/bin/hadoop fs -cat /user/eron/test_file3" \
> local_file.txt