提出问题
在企业中有 n 台linux服务器,每次登录各个服务器启动hadoop,效率太低,本文通过编写脚本,实现启动多台服务器
创建脚本
创建目录
在 /program/ 目录下创建 bin 文件夹
cd /program
mkdir bin
cd bin
编辑文件
注意: 用 vim 编辑文件。如果在 windows系统上编辑文件,需要修改为 unix 换行符
vim hadoop.sh
增加下面内容:
#!/bin/bash
if [ $# -lt 1 ]
then
echo Invalid Args!
echo 'Usage: '$(basename $0)' start|stop'
exit ;
fi
case $1 in
"start")
echo " =================== 启动 hadoop集群 ==================="
echo " --------------- 启动 hdfs ---------------"
ssh hadoop1 "/program/hadoop-3.0.3/sbin/start-dfs.sh"
echo " --------------- 启动 yarn ---------------"
ssh hadoop2 "/program/hadoop-3.0.3/sbin/start-yarn.sh"
echo " --------------- 启动 historyserver ---------------"
ssh hadoop1 "/program/hadoop-3.0.3/bin/mapred --daemon start historyserver"
;;
"stop")
echo " =================== 关闭 hadoop集群 ==================="
echo " --------------- 关闭 historyserver ---------------"
ssh hadoop1 "/program/hadoop-3.0.3/bin/mapred --daemon stop historyserver"
echo " --------------- 关闭 yarn ---------------"
ssh hadoop2 "/program/hadoop-3.0.3/sbin/stop-yarn.sh"
echo " --------------- 关闭 hdfs ---------------"
ssh hadoop1 "/program/hadoop-3.0.3/sbin/stop-dfs.sh"
;;
*)
echo Invalid Args!
echo 'Usage: '$(basename $0)' start|stop'
;;
esac
执行 esc -> wq 保存退出
修改权限
如果是 root 用户创建的,需要修改权限,让其有执行权限:
chmod 777 hadoop.sh
启动
./hadoop.sh start
停止
./hadoop.sh stop