ssh免密码登录和集群文件分发脚本

版权声明:所有内容原创,如需转载,请声明 https://blog.csdn.net/lovedopa/article/details/82890287

之前介绍了hadoop的环境部署,但是实际开发中,我们一般使用的是完全分布式集群,此hadoop性能将更加强悍,满足生产需求,下面就搭建Apache Hadoop2.7.x环境演示,本课是前置课。

一  hadoop基础环境搭建

在前文已经详细描写,这里不复述了。

hadoop环境搭建

二 SSH免秘钥登录

2.1 正常登陆,节点跳转ssh,需要输入用户名密码,每次都需要输入,很麻烦,需要设置成免密码登录

(1)基本语法
ssh 另一台电脑的ip地址
(2)ssh连接时出现Host key verification failed的解决方法
[root@hadoop102 opt]# ssh 192.168.1.103
The authenticity of host '192.168.1.103 (192.168.1.103)' can't be established.
RSA key fingerprint is cf:1e:de:d7:d0:4c:2d:98:60:b4:fd:ae:b1:2d:ad:06.
Are you sure you want to continue connecting (yes/no)? 
Host key verification failed.
(3)解决方案如下:直接输入yes

2.2 无密钥配置

(1)基本语法
ssh 另一台电脑的ip地址
(2)ssh连接时出现Host key verification failed的解决方法
[root@hadoop102 opt]# ssh 192.168.1.103
The authenticity of host '192.168.1.103 (192.168.1.103)' can't be established.
RSA key fingerprint is cf:1e:de:d7:d0:4c:2d:98:60:b4:fd:ae:b1:2d:ad:06.
Are you sure you want to continue connecting (yes/no)? 
Host key verification failed.
(3)解决方案如下:直接输入yes

2.3  文件功能介绍


(1)~/.ssh/known_hosts    :记录ssh访问过计算机的公钥(public key)
(2)id_rsa    :生成的私钥
(3)id_rsa.pub    :生成的公钥
(4)authorized_keys    :存放授权过得无秘登录服务器公钥
 

三  集群分发脚本

这里我们提供三种解决办法:

3.1  scp

1)scp可以实现服务器与服务器之间的数据拷贝。
2)案例实操
(1)将hadoop101中/opt/module和/opt/software文件拷贝到hadoop102、hadoop103和hadoop104上。
[root@hadoop101 /]# scp -r /opt/module/  root@hadoop102:/opt
[root@hadoop101 /]# scp -r /opt/software/  root@hadoop102:/opt
[root@hadoop101 /]# scp -r /opt/module/  root@hadoop103:/opt
[root@hadoop101 /]# scp -r /opt/software/  root@hadoop103:/opt
[root@hadoop101 /]# scp -r /opt/module/  root@hadoop104:/opt
[root@hadoop101 /]# scp -r /opt/software/  root@hadoop105:/opt
(2)将hadoop101服务器上的/etc/profile文件拷贝到hadoop102上。
[root@hadoop102 opt]# scp root@hadoop101:/etc/profile /etc/profile
(3)实现两台远程机器之间的文件传输(hadoop103主机文件拷贝到hadoop104主机上)
[itstar@hadoop102 test]$ scp itstar@hadoop103:/opt/test/haha itstar@hadoop104:/opt/test/

3.2  rsync


rsync远程同步工具,主要用于备份和镜像。具有速度快、避免复制相同内容和支持符号链接的优点。
rsync和scp区别:用rsync做文件的复制要比scp的速度快,rsync只对差异文件做更新。scp是把所有文件都复制过去。
(1)查看rsync使用说明
man rsync | more
(2)基本语法
rsync -rvl     $pdir/$fname         $user@hadoop$host:$pdir
命令 命令参数 要拷贝的文件路径/名称   目的用户@主机:目的路径
选项
-r 递归
-v 显示复制过程
-l 拷贝符号连接
(3)案例实操
把本机/opt/tmp目录同步到hadoop103服务器的root用户下的/opt/tmp目录
[itstar@hadoop102 opt]$ rsync -rvl /opt/tmp  root@hadoop103:/opt/
 

3.3 集群分发脚本 xsync

1)需求分析:循环复制文件到所有节点的相同目录下。
    (1)原始拷贝:
rsync  -rvl     /opt/module           root@hadoop103:/opt/
    (2)期望脚本:
xsync 要同步的文件名称
    (3)在/usr/local/bin这个目录下存放的脚本,可以在系统任何地方直接执行。
2)案例实操:
(1)在/usr/local/bin目录下创建xsync文件,文件内容如下:
[root@hadoop102 bin]# touch xsync
[root@hadoop102 bin]# vi 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 $pdir/$fname $user@hadoop$host:$pdir
        echo --------------- hadoop$host ----------------
        rsync -rvl $pdir/$fname $user@hadoop$host:$pdir
done

(2)修改脚本 xsync 具有执行权限
[root@hadoop102 bin]# chmod 777 xsync
[root@hadoop102 bin]# chown itstar:itstar -R xsync
(3)调用脚本形式:xsync 文件名称
[itstar@hadoop102 opt]$ xsync tmp/
 

3.4  集群分发脚本xcall

1)需求分析:在所有主机上同时执行相同的命令
xcall +命令
2)具体实现
(1)在/usr/local/bin目录下创建xcall文件,文件内容如下:
[root@hadoop102 bin]# touch xcall
[root@hadoop102 bin]# vi xcall

#!/bin/bash
pcount=$#
if((pcount==0));then
        echo no args;
        exit;
fi

echo -------------localhost----------
$@
for((host=101; host<=108; host++)); do
        echo ----------hadoop$host---------
        ssh hadoop$host $@
done

(2)修改脚本xcall具有执行权限
 [root@hadoop102 bin]# chmod 777 xcall
[root@hadoop102 bin]# chown itstar:itstar xcall
(3)调用脚本形式: xcall 操作命令
[root@hadoop102 ~]# xcall rm -rf /opt/tmp/ 
 

猜你喜欢

转载自blog.csdn.net/lovedopa/article/details/82890287