大数据之编写集群分发脚本

一、linux系统之间的文件拷贝

  1. 一般在大数据领域当中,当我们搭建大数据框架的时候,特别是集群,我们不可能一台一台的手动搭建,我们一般都是在一台电脑上搭建好了,然后把搭建好的框架分发给不同的机器,这样既节省时间,又可以轻松搭建框架,是大数据工程师必备的技能。

  2. 那么我们首先了解一下scp (secure copy)

    1. scp 定义
      scp 可以实现服务器和服务器之间的数据拷贝。(from server1 to server2)
    2. 基本语法
      scp -r p d i r / pdir/ pdir/fname u s e @ h o s t n a m e : use@hostname: use@hostname:pdir/$fname
      命令 递归 要拷贝的文件 目的用户@主机名:目的路径/文件
    3. 实操案例
      • 在s101上,将s101中的/opt/module 目录下的软件拷贝到s102上。
        $ scp -r /opt/module root@s102:opt/module
        
      • 在s103上,将s101服务器上的/opt/module目录下的软件拷贝到s103
        $ scp -r root@s101:/opt/module root@s103:/opt/module
        
      • 在s103上操作将s101中/opt/module目录拷贝到s104
        $ scp -r root@s101:/opt/module root@s104:/opt/module
        
        注意:拷贝过来的/opt/module 目录,别忘了在s102、s103、s104上修改所有文件的,所有者和所有者组。sudo chown lwj:lwj -R /opt/module
  3. rsync 远程同步工具

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

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

    3. 基本语法
      rsync -rvl p d i r / pdir/ pdir/fname u s e r @ h o s t n a m e : user@hostname: user@hostname:pdir/$fname
      命令 选项参数 要拷贝的文件路径/名称 目的用户@主机:目的路径/名称
      选项参数说明

      选项 功能
      -r 递归
      -v 显示复制过程
      -l 拷贝符号链接
      1. 案例实操
        1. 把s101机器上的/opt/software 目录同步到s102服务器的root用户下的/opt/目录下
          $  rsync -rvl /opt/software/ root@s102:/opt/software
          
  4. xsync集群分发脚本开发

    1. 需求: 循环复制文件到所有节点的相同目录下
    2. 脚本实现
      1. 在家目录创建一个bin目录,并且在bin目录下创建一个xsync文件,这里面要注意一点就是这个脚本我以后在什么用户下使用的话,就在什么用户下去创建,要不后面在切换到当前用户的时候回提示没有权限问题导致脚本执行失败。

        $ mkdir bin
        $ cd bin/
        $ vi xsync
        
      2. 在该文件中编写如下代码

        #!/bin/bash 
        #1/ 获取输入参数个数,如果没有参数,直接退出。
        pcount=$#
        if((pcount==0));then
        echo no args;
        exit;
        fi
        
        #2 获取文件名称
        p1=$1
        fname=`basename $p1`
        echo fname=$fname
        
        #3 获取上级目录到绝对路径
        pdir=`cd -P $(dirname $p1); pwd`
        echo pdir=$pdir
        
        #4 获取当前用户名称
        user=`whoami`
        
        #5 循环
        for((host=103;host<105;host++));do
        	echo----------s$host-----------
        	rsync -rvl $pdir/$fname $user@s$host:$pdirlw
        done 
        
      3. 修改脚本xsync 具有执行权限

        $ chmod 777 xsync
        
      4. 调用脚本形式

        $ xsync 文件名称
        

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

你可能感兴趣的:(linux,大数据脚本,linux,scp,rsync)