Hadoop之编写集群分发脚本

目录

1.scp 安全拷贝

2.rsync 远程同步工具

3.xsync集群分发脚本(名字可以随便起)


我们在搭建Hadoop完全分布式集群的过程中,要修改很多配置文件或者是安装很多软件,在这个过程中,如果集群数量很大,我们不能把每个节点都编辑一遍,这样既费时又容易出错。因此本文将讲解一个集群分发脚本,只要在一个节点编辑好,再通过分发脚本发送给其他节点就可以了。

(注意:这里因为xsync脚本代码的问题,我把主机名hadoop01、hadoop03和hadoop04分别改成hadoop101、hadoop103和hadoop104,前面相应的配置文件如slaves、hosts、core-site.xml、hdfs-site.xml、yarn-site.xml、mapred-site.xml、windows主机映射文件也要修改)

1.scp 安全拷贝

(1)定义

  scp可以实现服务器与服务器之间的数据拷贝。(from hadoop01 to hadoop03)

(2)基本语法

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

命令   递归       要拷贝的文件路径/名称             目的用户@主机:目的路径/名称
                  (永远都是源数据)                (后面永远是目的地数据)

(3)例子

  ①在hadoop01上,将hadoop01(/usr/text)上的个文件拷贝到hadoop03(/usr/text)上

[root@hadoop01 usr]# scp -r text root@hadoop03:/usr

  拷贝成功,由于之前配置过了SSH,因此不需要输入密码

②在hadoop03上,将hadoop01(/usr/text)上的个文件拷贝到hadoop03(/usr/text)上

[root@hadoop03 text]# scp -r root@hadoop01:/usr/text ./

./是拷贝到当前目录

  拷贝成功,由于之前配置过了SSH,因此不需要输入密码

③在hadoop03上,将hadoop01(/usr/text)上的个文件拷贝到hadoop04(/usr/text)上

[root@hadoop03 usr]# scp -r root@hadoop01:/usr/text root@hadoop04:/usr

  拷贝成功,由于之前配置过了SSH,因此不需要输入密码

 

  注意:拷贝过来的文件,可以根据需要修改所有者和所有者组。如果是拷贝配置文件,别忘source一下/etc/profile。

2.rsync 远程同步工具

(1)定义

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

(2)rsync和scp的区别

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

(3)基本语法

rsync    -rvl       $pdir/$fname              $user@hadoop$host:$pdir/$fname
命令     选项参数   要拷贝的文件路径/名称             目的用户@主机:目的路径/名称
                      (源数据)                         (目的地址)

(4)参数列表

选项功能
-r

递归

-v显示复制过程
-l拷贝符号连接

(5)例子

  把hadoop01上的/usr/text/里新建的文件(3333)目录同步到hadoop03中/usr/text下

[root@hadoop01 usr]# rsync -rvl /usr/text/ root@hadoop03:/usr/text

3.xsync集群分发脚本(名字可以随便起)

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

(2)创建:在/usr/local/bin目录下创建了xsync文件

#!/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 ------------------- hadoop$host --------------
        rsync -rvl $pdir/$fname $user@hadoop$host:$pdir
done

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

[root@hadoop101 bin]# chmod 777 xsync

(4)调用脚本形式

xsync 文件名称
[root@hadoop101 bin]# xsync /usr/text

至此,分发成功!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值