11 搭建完全分布式-远程传输文件

   按照前面的克隆,需要准备三台服务器,master,slave01,slave02.(服务器设置了静态IP、主机名称、关闭防火墙)。

主机名IP地址  防火墙|禁用开机自启JDK和Hadoop环境变量
master 192.168.52.100  关闭已配置
slave01192.168.52.101关闭未配置
slave02192.168.52.102关闭未配置

      你所准备的虚拟机配置与上表相同情况下,接着我们来进行其他操作。

      在master中完成了  JDK安装和环境变量配置,安装了hadoop和环境变量配置。

后期我们需要将master主机上安装的软件,以及后期集群配置文件修改后需要同步到其他机器上,此时最好提供脚本分发,这样方便统一管理。

1.首先给大家介绍下scp复制命令

   scp 是一个在 Linux 下用于进行远程文件拷贝的命令,它可以实现本地和远程服务器之间的文件传输。

基本格式:

        scp [参数] [原路径] [目标路径]

我们常用:

    scp     -r                          $pdir/$fname        $user@$host:$pdir/$fname

  命令    递归      要拷贝的文件路径/名称           目的地用户@主机:目的地路径/名称

2.通过scp命令将master上的jdk8目录拷贝到slave01、slave02的/opt/module目录下。

      2.1 首先确保slave01,slave02机器上有/opt/software  /opt/module ,同时确保属于yt:yt用户:用户组,如果不属于当前用户需要先改变用户:用户组权限(忘了的同学建议看前面文章,关于模版虚拟机准备)。

   2.2 将master主机上 jdk8目录远程拷贝到slave01上。(现在输入的命令是在master主机上)

输入命令:scp  -r  jdk8/  yt@slave01:/opt/module/

首次访问按提示输入yes,按提示输入slave01的密码。(刚刚传输slave01时忘了截图,下图为将jdk8目录拷贝到slave02上的提示信息)。

输入命令:scp  -r  jdk8/  yt@slave02:/opt/module/

   2.3 可进入到slave01,slave02中查看jdk8是否传输过来。

     说明通过scp命令远程拷贝成功。

3.通过scp命令将master上的hadoop-3.1.4目录拷贝到slave01、slave02的/opt/module目录下。

与2中的操作相同。

    3.1 此处我们介绍下载slave01上将master中数据使用scp 远程拉数据到slave01上。

      在slave01上 输入命令:

     scp -r yt@master:/opt/module/hadoop-3.1.4   /opt/module/

  3.2 可以在slave01上使用scp命令将master数据拉取到slave02上

      在slave01上输入命令:

       scp -r yt@master:/opt/module/hadoop-3.1.4   yt@slave02:/opt/module/

        需要输入master 和slave02的密码。

        截图上命令显示有问题,大家直接复制即可。

        最后在slave01,slave02检查下是否拷贝成功。

  

4.现在给大家介绍另一个命令:rsync 

rsync 就是远程同步的意思remote sync.
rsync 被用在UNIX / Linux执行备份操作操作.
rsync 工具包被用来从一个位置到另一个位置高效地同步文件和文件夹. rsync可以实现在同一台机器的不同文件直接备份,也可以跨服务器备份.

具有速度快、避免复制相同内容和支持符号链接的优点。

rsync    -av             $pdir/$fname                        $user@$host:$pdir/$fname
命令 选项参数      要拷贝的文件路径/名称         目的地用户@主机:目的地路径/名称
 选项参数说明
选项                       功能
-a                          归档拷贝
-v                         显示复制过程

4.2 删除slave01上/opt/module/hadoop-3.1.4/input    和/opt/module/hadoop-3.1.4/output目录

4.3 将Master上/opt/module/hadoop-3.1.4下的内容同步到slave01上 

输入命令: rsync  -av  /opt/module/hadoop-3.1.4/   yt@slave01:/opt/module/hadoop-3.1.4/

    说明咱们系统中没有此命令,需要先安装

输入命令:sudo yum install rsync

如果遇到需要输入直接输入y

安装完成后,再重新运行命令 (建议在master ,slave01,slave02上都安装此命令 rsync)

4.4 在slave01上查看,input,output目录又同步过来了。

注意:记得在master,slave01.slave02上都需要安装rsync命令

5.xsync 集群分发脚本

     上面每次在分发内容时都是通过命令完成的,本次我们将这些命令写在一个脚本中,且让该脚本在任何命令下都是执行。

查看Path配置了哪些路径,我们会发现当前用户下bin也配置了,所以我们可以将xsync文件放到此目录下, 就可以在任何位置执行了。

  脚本实现:

   (1)在/home/yt/bin目录下创建xsync文件

       

if [ $# -lt 1 ]
then
        echo Not Enough Arguement!
        exit;
fi

#2 遍历集群所有机器
for host in master slave01 slave02
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

(2) 修改文件权限

(3)将当前用户的bin下的文件同步到slave01,slave02上

可以去检查其他几个从服务器上都有该文件的存在。

(4)使用脚本将my_env.sh文件同步到其他从服务器上去

my_env.sh属于系统文件,需要获取root权限

输入命令: sudo .bin/xsync   /etc/profile.d/my_env.sh

(5)检查环境变量是否分发完成(slave01,slave02都需要检查)

(6)最后在slave01,slave02上执行source命令,后测试java命令是否显示版本信息

 

以上操作完成了远程文件同步。(后期修改了文件后,都可以通过xsync脚本执行)

  • 24
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值