无法从 init.d 脚本启动 Hadoop

无法从 init.d 脚本启动 Hadoop

我使用的是 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)。

相关内容