菠萝的天空

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理
准备集群执行和分发脚本(尽量部署上这两个脚本)
[root@hadoop1 ~]# mkdir sh
[root@hadoop1 sh]# touch excute.sh
[root@hadoop1 sh]# touch deploy.sh
[root@hadoop1 sh]# touch cluster.conf
[root@hadoop1 sh]# chmod +x excute.sh
[root@hadoop1 sh]# chmod +x deploy.sh
 
集群服务器信息
第一行注释
234行是服务器的基本信息,第一列是服务器ip,第二列是服务器部署的服务
[root@hadoop1 sh]# vi cluster.conf
#集群主机参数
192.168.16.10,hdfs
192.168.16.11,hdfs
192.168.16.12,hdfs
 
集群执行脚本
脚本格式:[root@hadoop1 sh]# sh excute.sh [标识服务] [要执行的命令]
作用:将要执行的命令分发到部署了标识服务的服务器中去执行并将结果返回
vi excute.sh
#!/bin/bash
conf=/root/sh/cluster.conf
#${1}和${2}的作用是接受脚本的第一个参数和第二个参数
tag=${1}
cmd=${2}
#-f参数是判断cluster.conf存不存在
if [ -f $conf ]
then
#反引号意味着执行这一行时会首先执行反引号中的命令
#反引号中的作用是获取到部署了标识服务的服务器ip列表
for server in `cat ${conf} | grep -v "#" | grep ${tag} | cut -d "," -f 1`
do
echo "*******************$server***************************"
#此脚本的核心命令,作用将双引号中的命令发给$server服务器去执行并将结果返回
ssh $server "source ~/.bash_profile;${cmd}"
done
else
echo "Erro:conf does not exist"
测试:
[root@hadoop1 sh]# sh excute.sh hdfs "jps"
*******************192.168.16.10***************************
7167 Jps
*******************192.168.16.11***************************
7023 Jps
*******************192.168.16.12***************************
14139 Jps
 
 
集群分发脚本
脚本格式:[root@hadoop1 sh]# sh deploy.sh [标识服务] [要分发的源文件或目录] [目标主机的路径]
作用:将要分发的源文件或目录分发到部署了标识服务的服务器的目标主机路径中
#!/bin/bash
conf=/root/sh/cluster.conf
tag=${1}
src=${2}
dest=${3}
if [ -f $conf ]
then
for server in `cat ${conf} | grep -v "#" | grep ${tag} | cut -d "," -f 1`
do
echo "*******************$server***************************"
scp -r ${src} root@${server}':'${dest}
done
else
echo "Erro:conf does not exist"
fi
 
验证:
[root@hadoop1 sh]# sh deploy.sh hdfs cluster.conf /root
*******************192.168.16.10***************************
cluster.conf
100% 77 128.1KB/s 00:00
*******************192.168.16.11***************************
cluster.conf
100% 77 41.1KB/s 00:00
*******************192.168.16.12***************************
cluster.conf
 
建议
要想在任意目录下直接执行脚本,需要将sh的路径添加到PATH中
a) vi /root/.bash_profile
#SH
export SH_HOME=/root/sh
export PATH=${PATH}:${SH_HOME}
b)生效
[root@hadoop1 ~]# source /root/.bash_profile
c)验证
[root@hadoop1 ~]# echo ${PATH}
出现/root/sh即可

posted on 2021-06-25 15:16  菠萝的天空  阅读(118)  评论(0)    收藏  举报