(一)hadoop集群搭建——1.2集群文件传输
1.scp命令介绍(全量同步)
scp命令为安全拷贝命令,使用方式为:
scp -r 源文件用户名A@主机名1:path1 目标文件用户名B@主机名2:path2
要求:用户名A@主机名1对path1有读权限,用户名B@主机名2对path2有写权限
2.rsync命令介绍(增量同步)
rsync对比文件的修改时间,增量同步,只能将本机文件同步,使用方式为:
rsync -rvlt path1 目标文件用户名B@主机名2:path2
-r:递归,复制目录;-v:显示复制的过程;-l:同步软链接;-t:基于文件的修改时间进行对比,只同步修改时间不同的文件。
注意:path1是个目录,目录以 / 结尾,只会同步目录中的内容,不会同步目录本身。
3.免输入密码介绍
我们后面将要编写集群中的文件分发和统一执行命令脚本,所以需要配置集群机器之间的免输入密码登录,这里借助ssh实现。
举例:A机器的a用户,希望在A机器上使用b用户的身份登录到B机器上。
实现步骤:1.A机器的a用户没在A机器上生成一对密钥
ssh-keygen -t rsa
实现步骤:2.密钥分为公钥和私钥,a用户需要将公钥拷贝到B机器上b用户的家目录下。
在A机器,使用a用户执行以下命令ssh-copy-id b@B
实现步骤:3.A机器的a用户,可以使用ssh b@B进行登录。
注意:如果使用ssh跟上ip地址直接登录,默认使用当前用户对目标主机进行登录。
4.集群免密登录配置
按照第3点,在集群h1、h2、h3中分别配置免密登录
5.编写集群分发文件脚本
作用:将当前机器的文件,同步到集群所有机器的相同路径下!
用户在使用xsync时,只需要传入要同步的文件即可,脚本中需要将相对路径转化为绝对路径。
[hzhao@h2 ~]# cd
[hzhao@h2 ~]# mkdir bin
[hzhao@h2 ~]# vim bin/xsync
编写脚本内容为
#!/bin/bash
#校验参数是否合法
if(( $#==0))
then
echo 请输入要分发的文件!
exit;
fi
#获取要分发文件的绝对路径
dirpath=$(cd `dirname $1`;pwd -P)
filename=`basename $1`
echo 要分发的文件的路径是:$dirpath/$filename
#循环执行rsync分发文件到集群的每条机器
for((i=1;i<=3;i++))
do
echo -------------------------h$i---------------------------
rsync -rvlt $dirpath/$filename h$i:$dirpath
done
修改文件权限
[hzhao@h2 ~]# chmod 755 bin/xsync
后面集群分发文件可以使用xsync命令进行分发
比如:
[hzhao@h2 module]# xsync jdk1.8.0_121/
要分发的文件的路径是:/opt/module/jdk1.8.0_121
-------------------------h1---------------------------
sending incremental file list
sent 56191 bytes received 215 bytes 112812.00 bytes/sec
total size is 370129239 speedup is 6561.88
-------------------------h2---------------------------
sending incremental file list
sent 56191 bytes received 215 bytes 112812.00 bytes/sec
total size is 370129239 speedup is 6561.88
-------------------------h3---------------------------
sending incremental file list
sent 56191 bytes received 215 bytes 112812.00 bytes/sec
total size is 370129239 speedup is 6561.88
至此集群文件传输完成!