我想运行以下命令:
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 集群。