3.3 完全分布式部署Hadoop
分析:
1)准备3台客户机(关闭防火墙、静态ip、主机名称)
2)安装jdk
3)配置环境变量
4)安装hadoop
5)配置环境变量
6)安装ssh
7)配置集群
8)启动测试集群
3.3.1 虚拟机准备
详见2.2-2.3章。
3.3.2 主机名设置
详见2.4章。
3.3.3 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)将192.168.1.102服务器上的文件拷贝到当前用户下。
[root@hadoop101opt]# scp root@hadoop102:/etc/profile /opt/tmp/
(3)实现两台远程机器之间的文件传输(hadoop103主机文件拷贝到hadoop104主机上)
[jduser@hadoop102test]$ scp jduser@hadoop103:/opt/test/haha jduser@hadoop104:/opt/test/
3.3.4 SSH无密码登录
1)配置ssh
(1)基本语法
ssh 另一台电脑的ip地址
(2)ssh连接时出现Host keyverification 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 iscf: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)无密钥配置
(1)进入到我的home目录
cd ~/.ssh
(2)生成公钥和私钥:
ssh-keygen -t rsa
然后敲(三个回车),就会生成两个文件id_rsa(私钥)、id_rsa.pub(公钥)
(3)将公钥拷贝到要免密登录的目标机器上
ssh-copy-id hadoop103
ssh-copy-id hadoop104
3).ssh文件夹下的文件功能解释
(1)~/.ssh/known_hosts :记录ssh访问过计算机的公钥(publickey)
(2)id_rsa :生成的私钥
(3)id_rsa.pub :生成的公钥
(4)authorized_keys :存放授权过得无秘登录服务器公钥
3.3.5 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目录
rsync -rvl/opt/tmp/* root@hadoop103:/opt/tmp
3.3.6 编写集群分发脚本xsync
1)需求分析:循环复制文件到所有节点的相同目录下。
(1)原始拷贝:
rsync -rvl /opt/module root@hadoop103:/opt/
(2)期望脚本:
xsync 要同步的文件名称
(3)在/usr/local/bin这个目录下存放的脚本,可以在系统任何地方直接执行。
2)案例实操:
(1)在/usr/local/bin目录下创建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@hadoop102bin]# chmod a+x xsync
(3)调用脚本形式:xsync 文件名称
3.3.7 编写分发脚本xcall
1)需求分析:在所有主机上同时执行相同的命令
xcall +命令
2)具体实现
(1)在/usr/local/bin目录下创建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---------
|