编写两个方便配置Hadoop集群的脚本

一:集群分发脚本

使用此脚本,我们可以复制文件到集群中所有节点的相同目录下。使用者可以输出绝对路径或相对路径。

1.1 核心命令:

rsync  -rvl /opt/module root@pdc:/opt/

1.2 使用方式

建议集群机器前缀相同,后缀数字不同,如pdc1、pdc2、pdc3、pdc4

[root@pdc ~]#myrsync 要同步的文件名称 起始机器 结束机器

1.3 开始制作

1.3.1 在/usr/local/bin目录下创建myrsync文件

注:在/usr/local/bin这个目录下存放的脚本,可以在系统任何地方直接执行。

[root@pdc ~]# su root
[root@pdc ~]# cd /usr/local/bin/
[root@pdc ~]# touch myrsync
[root@pdc ~]# vi myrsync

1.3.2 shell脚本内容如下

#!/bin/bash
#1 获取输入参数个数,如果没有参数,直接退出
pcount=$#
if((pcount==0)); then
echo no args;
exit;
fi
#2 获取文件名称 $1为第一个参数
# basename得到最后一个/后的名称,即文件名
p1=$1
fname=`basename $p1`
echo fname=$fname
#3 获取上级目录到绝对路径 dirname得到最后一个/前的名称,即文件路径
# cd -p 直接进入到绝对路径下(确保得到实际的物理路径)
# 然后用pwd显示出来,进行赋值
pdir=`cd -P $(dirname $p1); pwd`
echo pdir=$pdir
#4 获取当前用户名称
user=`whoami`
#5 循环
# 参数不要硬编码
for((host=$2; host<$3; host++)); do
        #echo $pdir/$fname $user@hadoop$host:$pdir
        echo --------------- hadoop$host ----------------
        rsync -rvl $pdir/$fname $user@pdc$host:$pdir
done

1.3.3 修改脚本权限

[root@pdc bin]# chmod a+x myrsync(或 chmod 777 myrsync)

1.3.4 调用例子

[root@pdc ~]# myrsync /opt/module 2 4

二:集群执行脚本

使用此脚本,我们可以在所有主机上同时执行相同的命令

1.1 核心命令:

任意命令

1.2 使用方式

[root@pdc ~]# mycall 命令	

1.3 开始制作

1.3.1 在/usr/local/bin目录下创建mycall文件

[root@pdc bin]# su root
[root@pdc bin]# cd /usr/local/bin/
[root@pdc bin]# touch mycall
[root@pdc bin]# vi mycall

1.3.2 shell脚本内容如下

知识点补充:
$ @ :这个变量也代表命令行中所有的参数,不过$@把每个参数区分对待,不被双引号“”包含时,以$1 2 2 … n的形式输出所有参数

#!/bin/bash
# 1.获取参数个数,如果没有参数,则退出
pcount=$#
if((pcount==0));then
echo no args;
exit;
fi

$@
for((host=2; host<=3; host++)); do
        echo ----------pdc$host---------
        ssh pdc$host $1
done

1.3.3 修改脚本权限

[root@pdc bin]# chmod a+x mycall(或 chmod 777 myrsync)

1.3.4 调用例子

[root@pdc ~]# myrsync /opt/module 

猜你喜欢

转载自blog.csdn.net/qq_41594698/article/details/89519059