shell脚本启动zookeeper等集群相关组件
在日常操作中,我们搭建了很多集群,例如hadoop、zookeeper、Hbase、kafka、Flume、kylin等,每次启动以及停止这些进程都很麻烦,例如zookeeper还需要一台机器一台机器的登录然后执行命令,这样极其不方便。所以今天要跟大家分享的就是使用shell脚本去启动这些进程。
一、zookeeper集群
1、zookeeper集群启动,创建start_zk.sh文件,写入以下内容:
#!/bin/bash
#start zk on master node
hostName=`hostname`
echo hostName
echo -e "\e[1;46mZookeeper start on $hostName ...\e[0m\n"
/usr/zookeeper/bin/zkServer.sh start
echo -e "\n"
sleep 1s
#start zk on slave1 node
hostName=`ssh 192.168.83.130 'hostname'`
echo -e "\e[1;46mZookeeper start on $hostName...\e[0m\n"
ssh $hostName '/usr/zookeeper/bin/zkServer.sh start'
echo -e "\n"
sleep 1s
#start zk on slave2 node
#ssh 192.168.83.132
hostName=`ssh 192.168.83.132 'hostname'`
echo -e "\e[1;46mZookeeper start on $hostName...\e[0m\n"
ssh $hostName '/usr/zookeeper/bin/zkServer.sh start'
echo "start zookeeper finished!"
exit
上面那个点号,位置就是tab键上面。执行start_zk.sh语句,如下图:
2、查看zookeeper 各个机器的状态,创建check_zk.sh,加入以下内容:
#!/bin/bash
#start zk on master node
hostName=`hostname`
#hostName = 'hostname'
echo hostName
echo -e "\e[1;46mZookeeper start on $hostName ...\e[0m\n"
/usr/zookeeper/bin/zkServer.sh status
echo -e "\n"
sleep 2s
#start zk on slave1 node
hostName=`ssh 192.168.83.130 'hostname'`
echo -e "\e[1;46mZookeeper start on $hostName...\e[0m\n"
ssh $hostName '/usr/zookeeper/bin/zkServer.sh status'
echo -e "\n"
sleep 2s
#start zk on slave2 node
#ssh 192.168.83.132
hostName=`ssh 192.168.83.132 'hostname'`
echo -e "\e[1;46mZookeeper start on $hostName...\e[0m\n"
ssh $hostName '/usr/zookeeper/bin/zkServer.sh status'
echo "stop zookeeper finished!"
exit
执行sh check_zk.sh,效果如下图:
3、停止zookeeper集群,创建stop_zk.sh文件,加入以下内容:
#!/bin/bash
#start zk on master node
hostName=`hostname`
#hostName = 'hostname'
echo hostName
echo -e "\e[1;46mZookeeper start on $hostName ...\e[0m\n"
/usr/zookeeper/bin/zkServer.sh stop
echo -e "\n"
sleep 2s
#stop zk on slave1 node
hostName=`ssh 192.168.83.130 'hostname'`
echo -e "\e[1;46mZookeeper start on $hostName...\e[0m\n"
ssh $hostName '/usr/zookeeper/bin/zkServer.sh stop'
echo -e "\n"
sleep 2s
#stop zk on slave2 node
#ssh 192.168.83.132
hostName=`ssh 192.168.83.132 'hostname'`
echo -e "\e[1;46mZookeeper start on $hostName...\e[0m\n"
ssh $hostName '/usr/zookeeper/bin/zkServer.sh stop'
echo "stop zookeeper finished!"
exit
执行sh stop_zk.sh,结果如下图所示:
二、mr-jobhistory集群
我们在运行kylin的时候,常常需要启动mr-jobhistory,否则kylin会报找不到0.0.0.0:16020的错位。下面写一个脚本启动mr-jobhistory,创建一个mr_historyserver.sh文件,添加以下内容:
#!/bin/bash
#start mr-history-server on master node
hostName=`hostname`
echo hostName
echo -e "\e[1;41mKylin:MapReduce history-server start on $hostName ...\e[0m\n"
/usr/hadoop/hadoop-2.8.5/sbin/mr-jobhistory-daemon.sh start historyserver
echo -e "\n"
sleep 1s
#start mr-history-server on slave1 node
hostName=`ssh 192.168.83.130 'hostname'`
echo -e "\e[1;41mKylin:MapReduce history-server start on $hostName...\e[0m\n"
ssh $hostName '/usr/hadoop/hadoop-2.8.5/sbin/mr-jobhistory-daemon.sh start historyserver'
echo -e "\n"
sleep 1s
#start mr-history-server on slave2 node
#ssh 192.168.83.132
hostName=`ssh 192.168.83.132 'hostname'`
echo -e "\e[1;41mKylin:MapReduce history-server start on $hostName...\e[0m\n"
ssh $hostName '/usr/hadoop/hadoop-2.8.5/sbin/mr-jobhistory-daemon.sh start historyserver'
echo "start mr-historyserver finished!"
exit
执行sh mr_historyserver.sh 结果如下:
停止集群的命令也类似,这里我们就不加以赘述。
三、jps命令
除了启动命令之外,我们最常用的命令就是jps了,一台一台的查看也是比较麻烦,这里我们也写个脚本,以ssh的方式去执行jps命令。创建jps.sh 的文件,添加以下内容:
#!/bin/bash
#check jps on master node
hostName=`hostname`
echo -----------$hostName----------------
echo -e "\e[1;44mjps on $hostName ...\e[0m"
jps
echo -e "\n"
#check jps on slave1 node
hostName=`ssh 192.168.83.130 'hostname'`
echo -----------$hostName---------------
echo -e "\e[1;44mjps on $hostName...\e[0m"
ssh $hostName '/usr/java/jdk1.8.0_161/bin/jps'
echo -e "\n"
#check jps on slave2 node
#ssh 192.168.83.132
hostName=`ssh 192.168.83.132 'hostname'`
echo -----------$hostName---------------
echo -e "\e[1;44mjps on $hostName...\e[0m"
ssh $hostName '/usr/java/jdk1.8.0_161/bin/jps'
exit
注意:这里需要些jps命令的绝对路径,否则会报:commad not found的错误。不想写绝对路径的可以创建一个软链接。执行之后结果如下: