我正在 cygwin 上安装 hadoop。我有一台 windows 7 64 位机器,我一直在关注这里的 instrux:http://alans.se/blog/2010/hadoop-hbase-cygwin-windows-7-x64/#software .我在 cygwin 中设置了无密码 SSH,并安装了 hadoop 0.20.2。
当我发出 bin/start-dfs.sh 时,我得到以下信息:
starting namenode, logging to /usr/local/hadoop-0.20.2/bin/../logs/hadoop-T3S-namenode-t3s780mon.out
localhost: /usr/local/hadoop-0.20.2/bin/hadoop-daemon.sh: /usr/local/hadoop-0.20.2/bin/hadoop-daemon.sh: not found
localhost: /usr/local/hadoop-0.20.2/bin/hadoop-daemon.sh: /usr/local/hadoop-0.20.2/bin/hadoop-daemon.sh: not found
该文件存在于该确切位置。权限似乎很好(它归“管理员”所有,我以具有“管理员”权限的用户身份运行。无论如何,在到达这一点之前它正在查找并执行其他脚本。此输出发生在垃圾箱中的这一行/slaves.sh 脚本
for slave in `cat "$HOSTLIST"|sed "s/#.*$//;/^$/d"`; do
ssh $HADOOP_SSH_OPTS $slave $"${@// /\\ }" \
2>&1 | sed "s/^/$slave: /" &
if [ "$HADOOP_SLAVE_SLEEP" != "" ]; then
echo "@@@ slave.sh is SLEEPING"
sleep $HADOOP_SLAVE_SLEEP
fi
done
特别是在“ssh...”行。本质上,调用的是(当所有脚本变量都已解析时):
ssh localhost cd /usr/local/hadoop-0.20.2/bin/.. ; /usr/local/hadoop-0.20.2/bin/hadoop-daemon.sh --config /usr/local/hadoop-0.20.2/bin/../conf start datanode
当我手动运行时(即将其粘贴到 cygwin 控制台)不会返回任何此类错误。
那么是什么原因导致此脚本此时因这条特定消息而失败?我认为这与我设置 ssh 的方式有关,但无法弄清楚,因为我觉得我已经以标准方式完成了所有操作...
感谢任何帮助/想法/线索。
最佳答案
检查/etc/passwd 中的用户。它必须具有在/etc/shells 中定义的有效主目录和 shell。接下来在从属 ssh 命令行中,将 -l ${USER} 添加到 ssh 调用。
更好的是,按照本教程进行操作:http://en.wikisource.org/wiki/User:Fkorning/Code/Hadoop-on-Cygwin
关于ssh - hadoop 与 cygwin : hadoop-daemon. sh:未找到,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9743939/