hadoop集群分发脚本

  • Post author:
  • Post category:其他




一、scp拷贝


案例:将hadoop102上的module发送到hadoop103上

scp -r /opt/module root@hadoop103:/opt/



二、 rsync 远程同步工具


rsync主要用于备份和镜像。具有速度快、避免复制相同内容和支持符号链接的优点。


rsync和scp区别:用rsync做文件的复制要比scp的速度快,rsync只对差异文件做更新。scp是把所有文件都复制过去。


(1)基本语法


rsync -rvl



p

d

i

r

/

pdir/






p


d


i


r


/





fname



u

s

e

r

@

h

a

d

o

o

p

user@hadoop






u


ser


@


ha


d


oo


p





host:



p

d

i

r

/

pdir/






p


d


i


r


/





fname


命令 选项参数 要拷贝的文件路径/名称 目的用户@主机:目的路径/名称


选项参数说明

选项 功能
-r 递归
-v 显示复制过程
-l 拷贝符号连接


(2)案例实操


(a)把hadoop101机器上的/opt/software目录同步到hadoop102服务器的root用户下的/opt/目录

[centos7@hadoop102 ~]$ rsync -rvl /opt/software/ root@hadoop102:/opt/software



三、 xsync集群分发脚本


(1)需求:循环复制文件到所有节点的相同目录下


(2)需求分析:


(a)rsync命令原始拷贝:


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


(b)期望脚本:


xsync要同步的文件名称


(c)说明:在/home/centos7/bin这个目录下存放的脚本,centos7用户可以在系统任何地方直接执行。


(3)脚本实现


(a)在/home/atguigu目录下创建bin目录,并在bin目录下xsync创建文件,文件内容如下:

[centos7@hadoop102 ~]$ mkdir bin
[centos7@hadoop102 ~]$ cd bin/
[centos7@hadoop102 ~]$  touch xsync
[centos7@hadoop102 ~]$  vi xsync


在该文件中编写如下代码

#!/bin/bash

#1. 判断参数个数
if [ $# -lt 1 ]
then
    echo Not Enough Arguement!
    exit;
fi

#2. 遍历集群所有机器
for host in hadoop102 hadoop103 hadoop104
do
    echo ====================  $host  ====================
    #3. 遍历所有目录,挨个发送

    for file in $@
    do
        #4. 判断文件是否存在
        if [ -e $file ]
            then
                #5. 获取父目录
                pdir=$(cd -P $(dirname $file); pwd)

                #6. 获取当前文件的名称
                fname=$(basename $file)
                ssh $host "mkdir -p $pdir"
                rsync -av $pdir/$fname $host:$pdir
            else
                echo $file does not exists!
        fi
    done
done


(b)修改脚本 xsync 具有执行权限

[centos7@hadoop102 bin]$  chmod 777 xsync


(c)调用脚本形式:xsync 文件名称

[centos7@hadoop102 bin]$ xsync /home/centos7/bin


案例:将hadoop102上的module发送到hadoop103、hadoop104上

[centos7@hadoop102 opt]$ xsync module/


注意:如果将xsync放到/home/atguigu/bin目录下仍然不能实现全局使用,可以将xsync移动到/usr/local/bin目录下。



版权声明:本文为weixin_43671437原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。