前言
本节内容我们主要介绍一下hadoop集群服务器之间实现免密登录和文件互传的功能,这样更加方便我们使用hadoop服务器实现服务器之间的相互登录和文件的相互传输。集群之间的访问不在需要授权就可以实现相互访问。
正文
- SSH免密登录
①分别在hadoop101、hadoop102、hadoop103的home目录下执行ssh命令
#生成ssh连接的公私钥
ssh-keygen -t rsa
②将hadoop101的免密公钥拷贝到自身服务器和hadoop02与hadoop103的服务器上,实现hadoop101免密登录自身服务器hadoop102与hadoop103服务器
命令:
#将公钥拷贝到hadoop101机器上
ssh-copy-id hadoop101
#将公钥拷贝到hadoop102机器上
ssh-copy-id hadoop102
#将公钥拷贝到hadoop103机器上
ssh-copy-id hadoop103
③同上操作,在hadoop102也执行此项操作
④同上操作,在hadoop103上执行此项操作
⑤测试免密登录,hadoop集群之间实现互相访问
- 服务器之间文件互传
①使用scp实现文件互传
#scp命令语法
scp -r $dir/$filename $user@$host:$dir/$filename
# -r 递归
# $dir 要拷贝的文件路径
# $filename 拷贝文件的名称
# $user 目的地用户
# $host 主机地址
# $dir 目的地路径
# $filename 目的地文件名称
② 使用rsync 远程同步工具实现文件共享
- rsync 主要用于备份和镜像。具有速度快、避免复制相同内容和支持符号链接的优点。
- rsync 和 scp 区别:用 rsync 做文件的复制要比 scp 的速度快,rsync 只对差异文件做更 新。scp 是把所有文件都复制过去。
#rsync 实现服务器之间文件共享rsync -av $dir/$fname $user@$host:$dir/$fname
#rsync 命令
#-av 选项参数:归档拷贝,显示复制过程
#$dir 要拷贝的文件路径
#$fname 拷贝的文件名称
#$user 目的地用户
#$host 目的地主机
#$dir 目的地路径
#$fname 目的地文件名称
③使用自定义脚本hsync 集群分发文件
- 查看可执行的脚本目录echo $PATH
- 在/root/bin目录下创建可执行文件脚本hsync,并授予可执行权限
- 使用vi编辑器写入以下脚本
#!/bin/bash#1. 判断参数个数,此处的传参为文件名称或者目录名称if [ $# -lt 1 ]
then
echo Not Enough Arguement!
exit;
fi
#2. 遍历集群所有机器
for host in hadoop101 hadoop102 hadoop103
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
- 测试分发脚本
hsync /root/bin/hsync
结语
至此,关于hadoop集群之间实现免密登录和文件互传的内容到这里就结束了,我们下期见。。。。。。