我使用的是 CentOS 6.2。我尝试从 init.d 脚本启动 Hadoop,但失败了。这是我在 boot.log 中看到的内容:
Retrigger failed udev events [ OK ]
Enabling Bluetooth devices:
starting namenode, logging to /home/hadoop/hadoop/hadoop-0.20.2/bin/../logs/hadoop--namenode-localhost.localdomain.out
localhost: ssh: connect to host localhost port 22: Connection refused
localhost: ssh: connect to host localhost port 22: Connection refused
starting jobtracker, logging to /home/hadoop/hadoop/hadoop-0.20.2/bin/../logs/hadoop--jobtracker-localhost.localdomain.out
localhost: ssh: connect to host localhost port 22: Connection refused
Starting sshd: [ OK ]
这是我的 init.d 脚本:
### BEGIN INIT INFO
# Provides: hadoop
# Required-Start: sshd
# Required-Stop:
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: hadoop
# Description: start hadoop daemons
### END INIT INFO
# source function library
. /etc/rc.d/init.d/functions
RETVAL=0
case "$1" in
start)
/home/hadoop/hadoop/hadoop-0.20.2/bin/start-all.sh
RETVAL=$?
;;
stop)
/home/hadoop/hadoop/hadoop-0.20.2/bin/stop-all.sh
RETVAL=$?
;;
*)
echo "Ya blew it"
RETVAL=2
esac
exit $RETVAL
当我从命令行输入 chkconfig --list hadoop 时,我得到以下信息:
hadoop 0:off 1:off 2:on 3:on 4:on 5:on 6:off
我创建了一个名为 hadoop 的用户,我的所有 hadoop 内容都位于 /home/hadoop/hadoop/ 中。我在 /home/hadoop/hadoop/hadoop-0.20.2/bin/ 中的所有脚本上都设置了 UID 位,因此 start-all.sh 和 stop-all.sh 应该以 hadoop 用户身份运行。
从命令行,我可以成功执行start-all.sh、stop-all.sh和/init.d/hadoop。我可以以hadoop用户或root身份执行这些脚本,它们运行正常。但是,在启动过程中调用/init.d/hadoop时,它会失败。
知道我做错了什么吗?
谢谢您的帮助!
答案1
这些错误似乎很明显......看起来hadoop
启动脚本用于ssh
连接(可能作为不同的用户)并启动:
localhost: ssh: connect to host localhost port 22: Connection refused
如果你看一下启动过程,你会看到它sshd
正在启动后 hadoop
:
starting namenode, logging to /home/hadoop/hadoop/hadoop-0.20.2/bin/../logs/hadoop--namenode-localhost.localdomain.out
starting jobtracker, logging to /home/hadoop/hadoop/hadoop-0.20.2/bin/../logs/hadoop--jobtracker-
Starting sshd: [ OK ]
解决方案是确保sshd
首先启动(尽管坦率地说,使用 ssh 到 localhost 启动服务似乎不是一个好主意)。您可以通过查看相应的运行级别目录(例如/etc/rc.d/rc3.d
)并更改后面的数字S
(如S55sshd
)来更改启动顺序。确保您的关机顺序也正确(即,确保hadoop
配置为停止前 sshd
)。