对于一个搭建好的Hadoop平台,每次启动都需要输入start-all.sh,很不方便,而只要编写一个简单的脚本文件就能实现Hadoop的开机自启动。具体实现步骤如下:
测试平台:CentOS 6.4
(1)进入到/etc/init.d目录下,编辑一个新的脚本文件hadoop
cd /etc/init.d
vi hadoop
(2)编辑脚本文件hadoop
#!/bin/bash
#chkconfig:35 95 1
#description:script to start/stop hadoop
su - hadoop <
case $1 in
start)
sh /usr/hadoop-1.0.4/bin/start-all.sh
;;
stop)
sh /usr/hadoop-1.0.4/bin/stop-all.sh
;;
*)
echo "Usage:$0(start|stop)"
;;
esac
exit
!
(3)保存退出,用chmod修改该文件权限
(4)设置hadoop为开机自启动:chkconfig --add hadoop
然后就能查看到设置好的hadoop服务了:chkconfig --list hadoop
再次重启namenode,登陆后输入jps就直接能看到namenode、jobtrcaker进程了。
注意事项:
1.在启动namenode之前最好先启动几个datanode。
2.用chkconfig添加了hadoop服务后,除了用原来的start-all.sh启动hadoop,还可以用service hadoop start(stop)来控制。
3.脚本文件中要考虑启动hadoop是在root用户下还是普通用户(我的普通用户名叫hadoop)下做的,由于我搭建的hadoop平台在root用户下启动有些问题,所以我在编辑脚本文件时特别注意切换到普通用户下来执行hadoop启动(见脚本中黑体字)
4.linux下设置开机自启动服务的方式很多,比如用chkconfig --add [服务名称] [on|off]来管理系统默认服务的开机与否;比如编辑/etc/rc.d/rc.local
(具体可以参见:http://blog.phpha.com/archives/1458.html)
5.特别注意:CentOS默认防火墙是开启的,而hadoop在防火墙开启时根本没法正常工作,所以记得设置防火墙服务为关闭:chkconfig iptables off