准备完全分布式需要的机器
- hadoop102
- hadoop103
- hadoop104
同步数据
将hadoop102的数据(jdk、hadoop安装目录同步,环境变量文件)同步到 hadoop103 hadoop104
scp(secure copy)安全拷贝
scp 定义
scp 可以实现服务器与服务器之间的数据拷贝。(from server1 to server2)
基本语法:
scp -r $pdir/$fname $user@hadoop$host:$pdir/$fname
命令 递归 要拷贝的文件路径/名称 目的用户@cosynotes
案例实操
前提:
在 hadoop102 hadoop103 hadoop104 都已经创建好的 /opt/module /opt/software 两个目录, 并且已经把这两个目录修改为hadoop:hadoop。
- 在 hadoop102 上,将 hadoop102 中/opt/module/jdk1.8.0_212 目录拷贝到hadoop103 上。
[hadoop@hadoop102 ~]$ scp -r /opt/module/jdk1.8.0_212 hadoop@hadoop103:/opt/module
- 在 hadoop103 上,将 hadoop102 中/opt/module/hadoop-3.1.3 目录拷贝到hadoop103 上。
[hadoop@hadoop103 ~]$ scp -r hadoop@hadoop102:/opt/module/hadoop-3.1.3 /opt/module/
- 在 hadoop103 上操作,将 hadoop102 中/opt/module 目录下所有目录拷贝到hadoop104 上。
[hadoop@hadoop103 opt]$ scp -r hadoop@hadoop102:/opt/module/* hadoop@hadoop104:/opt/module
rsync 远程同步工具
- rsync 主要用于备份和镜像。具有速度快、避免复制相同内容和支持符号链接的优点。
- rsync 和 scp 区别:用 rsync 做文件的复制要比 scp 的速度快,rsync 只对差异文件做更新。scp 是把所有文件都复制过去。
基本语法
rsync -av $pdir/$fname $user@hadoop$host:$pdir/$fname
命令 选项参数 要拷贝的文件路径/名称 目的用户
案例实操
把 hadoop102 机器上的/opt/software 目录同步到 hadoop103 服务器的/opt/software 目录下
[hadoop@hadoop102 opt]$ rsync -av /opt/software/* hadoop@hadoop103:/opt/software
编写集群分发的脚本
注意:为了省去配置环境变量的步骤,直接在/home/hadoop/下创建bin目录 把脚本创造 bin目录下 。
[hadoop@hadoop102 opt]$ cd /home/hadoop
[hadoop@hadoop102 ~]$ mkdir bin
[hadoop@hadoop102 ~]$ cd bin
[hadoop@hadoop102 bin]$ vim xsync
脚本内容如下:
#!/bin/bash
#参数预处理
if [ $# -lt 1 ]
then
echo "参数不能为空!!!"
exit
fi
#遍历集群找那个所有的机器 进行内容分发
for host in hadoop103 hadoop104
do
echo "===============$host================"
#遍历所要分发的内容 进行传输
for file in $@
do
#判断当前文件是否存在
if [ -e $file ]
then
#存在
#1.获取父级目录
pdir=$(cd -P $(dirname $file); pwd)
#2.获取当前的文件名
fname=$(basename $file)
#3.在目标服务器创建同级目录
ssh $host "mkdir -p $pdir"
#4.同步文件
rsync -av $pdir/$fname $host:$pdir
else
#不存在
echo "$file 不存在!!!"
exit
fi
done
done
修改脚本 xsync 具有执行权限
[hadoop@hadoop102 bin]$ chmod +x xsync
将脚本复制到/bin 中,以便全局调用
[hadoop@hadoop102 bin]$ sudo cp xsync /bin/
测试脚本
[hadoop@hadoop102 ~]$ xsync /home/atguigu/bin
[hadoop@hadoop102 bin]$ sudo xsync /bin/xsync