【发布时间】:2013-02-07 19:54:54
【问题描述】:
我想运行以下命令:
hadoop fs -ls hdfs:///logs/ | grep -oh "/[^/]*.gz" | grep -oh "[^/]*.gz" | hadoop fs -put - hdfs:///unzip_input/input
当我在 ssh 到主节点后从 shell 调用它时,它可以工作。但是如果我尝试通过 ssh 调用它,它将不起作用:
ssh -i /home/USER/keypair.pem hadoop@ec2-XXXX.compute-1.amazonaws.com hadoop fs -ls hdfs:///logs/ | grep -oh "/[^/]*.gz" | grep -oh "[^/]*.gz" | hadoop fs -put - hdfs:///unzip_input/input
它给出了错误:
zsh: command not found: hadoop
但如果我取出最后一个管道,则命令成功:
ssh -i /home/USER/keypair.pem hadoop@ec2-XXXX.compute-1.amazonaws.com hadoop fs -ls hdfs:///logs/ | grep -oh "/[^/]*.gz" | grep -oh "[^/]*.gz"
通过一些搜索我发现这可能是由于未设置 JAVA_HOME 的错误,但它在主节点的 ~/.bashrc 中设置正确
hadoop 集群是一个 Amazon Elastic Map Reduce 集群。
【问题讨论】:
-
你确定整个命令链都被传递给了 ssh 吗?因为从错误消息来看,您似乎只是在远程主机上执行
hadoop fs -ls hdfs:///logs/并通过 grep 管道输出 ssh。 -
啊,我想这就是正在发生的事情。如何将命令更改为仅在远程主机上通过管道传输?
标签: hadoop ssh elastic-map-reduce