在Spark安装和运行时,比如zkServer.sh start
这样的命令是需要所有服务器执行的,一个个复制粘贴回车肯定不够优雅,找个shell解决这个问题:
#!/bin/bash
if [ "$#" -ne 1 ] ; then
echo "USAGE: $0 -f cmd"
exit 1
fi
file_name='server.list'
cmd_str=$1
cwd=$(pwd)
cd $cwd
serverlist_file="$cwd/$file_name"
if [ ! -e $serverlist_file ] ; then
echo 'server.list not exist';
exit 0;
fi
while read line
do
if [ -n "$line" ] ; then
echo "DOING --->" $line "<---"
ssh root@$line $cmd_str < /dev/null > /dev/null
if [ $? -eq 0 ] ; then
echo "$cmd_str done!"
else
"error: " $?
fi
fi
done < $serverlist_file
保存名为shAll.sh
在相同的目录下面建一个server.list
文件夹,写入服务器列表:
hadoop01
hadoop02
hadoop03
然后把shAll.sh
变为可执行文件:
chmod -x ./shAll.sh
然后就可以同时在所有服务器执行命令了:
./shAll.sh 'zkServer.sh start'
其实按照本文的做法,最后应该会需要输密码的,也很麻烦,我在spark安装部署的时候已经相互添加了ssh验证了,可以参考那篇文章,这里不做赘述。