Linux
無法從 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 時,它會失敗。
知道我做錯了什麼嗎?
謝謝您的幫助!
錯誤似乎很明顯……似乎
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
停止)。