1.集群分发脚本 xsync
rsync命令
rsync 主要用于备份和镜像。具有速度快、避免复制相同内容和支持符号链接的优点。
rsync 和 scp 区别:用 rsync 做文件的复制要比 scp 的速度快,rsync 只对差异文件做更新。
scp 是把所有文件都复制过去。
1)基本语法 rsync -av fname host:fname
目的地用户@主机:目的地路径/名称
选项参数说明
- -a 归档拷贝
- -v 显示复制过程
编写自己的脚本xsync
需求:循环复制文件到所有节点的相同目录下
vim /bin/xsync
#!/bin/bash
#1. 判断参数个数
if [ $# -lt 1 ]
then
echo Not Enough Arguement!
exit;
fi
#2. 遍历集群所有机器(因为每个机器都配置过域名映射了,故直接写hadoop102...)
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
修改脚本 xsync 具有执行权限
chmod 777 xsync
2. SSH 无密登录配置
以下操作在3台服务器都要执行
## 一路回车即可,生成秘钥在 ~/.ssh目录下
ssh-keygen -t rsa
将公钥拷贝到要免密登录的目标机器上
ssh-copy-id hadoop102
ssh-copy-id hadoop103
ssh-copy-id hadoop104
3.利用分发脚本安装jdk和hadoop
在hadoop102上执行
## 首先分发脚本,让每台服务器都可以执行xsync
xsync /bin/xsync
## 分发jdk和xsync
xsync /opt/module
## 分发环境配置文件
xsync /etc/profile.d/my_env.sh
最后在每台服务器上执行 source /etc/profile