当我们创建haoop集群时,为了远程更加方便的ssh管理我们的集群,一般会写脚本一键启动关闭集群。
一:一键启动集群脚本 start-cluster.sh
#!/bin/bash
echo "-------------------正在启动集群-------- "
echo "-------------------正在启动NameNode-------- "
ssh admin@hadoop102 '/opt/modules/hadoop-2.5.0-cdh5.3.6/sbin/hadoop-daemon.sh start namenode'
echo "-------------------正在启动secodarynamenode-------- "
ssh admin@hadoop104 ' /opt/modules/cdh/hadoop-2.5.0-cdh5.3.6/sbin/hadoop-daemon.sh start secondarynamenode'
echo "-------------------正在启动datanode-------- "
for i in admin@hadoop102 admin@hadoop103 admin@hadoop104
do
ssh $i '/opt/modules/hadoop-2.5.0-cdh5.3.6/sbin/hadoop-daemon.sh start datanode'
done
echo "-------------------正在启动yarn-------------------- "
echo "-------------------正在启动ResourceManager-------- "
ssh @hadoop103 '/opt/modules/hadoop-2.5.0-cdh5.3.6/sbin/yarn-daemon.sh start resourcemanager'
echo "-------------------正在启动NodeManager-------- "
for i in admin@hadoop102 admin@hadoop103 admin@hadoop104
do
ssh $i '/opt/modules/hadoop-2.5.0-cdh5.3.6/sbin/yarn-daemon.sh start nodemanager'
done
echo "-------------------正在启动JobHistory-------- "
ssh admin@hadoop102 '/opt/modules/hadoop-2.5.0-cdh5.3.6/sbin/mr-jobhistory-daemon.sh start historyserver'
echo "---------------集群已经启动完毕,请用jps检查或者浏览器检查是否成功--------
二: 一键关闭集群脚本 stop-cluster.sh
#!/bin/bash
echo "-------------------正在关闭JobHistory--------------- "
ssh admin@hadoop102 '/opt/modules/hadoop-2.5.0-cdh5.3.6/sbin/mr-jobhistory-daemon.sh stop historyserver'
echo "-------------------正在关闭yarn-------------------- "
echo "-------------------正在关闭ResourceManager-------- "
ssh admin@hadoop103 '/opt/modules/hadoop-2.5.0-cdh5.3.6/sbin/yarn-daemon.sh stop resourcemanager'
echo "-------------------正在关闭NodeManager-------- "
for i in admin@hadoop102 admin@hadoop103 admin@hadoop104
do
ssh $i '/opt/modules/hadoop-2.5.0-cdh5.3.6/sbin/yarn-daemon.sh stop nodemanager'
done
echo "-------------------正在关闭NameNode------------------- "
ssh admin@hadoop102 '/opt/modules/hadoop-2.5.0-cdh5.3.6/sbin/hadoop-daemon.sh stop namenode'
echo "-------------------正在关闭secodarynamenode-------- "
ssh admin@hadoop104 ' /opt/modules/cdh/hadoop-2.5.0-cdh5.3.6/sbin/hadoop-daemon.sh stop secondarynamenode'
echo "-------------------正在启动datanode-------- "
for i in admin@hadoop102 admin@hadoop103 admin@hadoop104
do
ssh $i '/opt/modules/hadoop-2.5.0-cdh5.3.6/sbin/hadoop-daemon.sh stop datanode'
done
echo "---------------集群已经关闭完毕,请用jps检查或者浏览器检查是否成功-------- "
----------------------------------------------------------------------------------------------------------------------------------------------------------
补充:shell脚本这里编写的注意要点: ‘’单号号和反单引号``的区别
单引号表示执行完前面的语句,然后执行单引号的里的命令
反引里面的字符串必须是能执行的命令,否则会出错;它的作用是命令替换,将其中的字符串当成Shell命令执行,返回命令的执行结果;
echo 'date -R' >> dmeo.txt 里面是date -R
echo `date -R` >> demo.txt 里面传的时间
----------------------------------------------------------------------------------------------------------------------------------------------------------
其次执行脚本的方式:
有shell
粗放来讲,你手动使用CRT登录某个Linux系统时,是有shell的。需要
无shell
当你使用ssh访问某个系统(如linux上的hadoop集群)的时候,是无shell的:无法加载所登录系统的系统变量的。只能加载该用户的用户变量,而一般我们的配置文件都配置在系统变量里面。所以为了使用ssh时可以加载系统变量。 所以要一般用ssh时,要把用户变量配置了,(否则高可用时不一定用的了)
cat /etc/profile >> ~/.bashrc/ 把系统变量追加到用户变量里 。每台机器都要这样做。