一、准备工作
- 配置好一台hadoop100模板虚拟机
- JDK1.8
- Hadoop 3.2.1
模板虚拟机配置:
JDK、Hadoop下载链接:https://share.weiyun.com/bJKx8TFx 密码:xdh2px
二、克隆虚拟机
利用模板虚拟机hadoop100,克隆出三台虚拟机:hadoop102、hadoop103、hadoop104

选择克隆自虚拟机中的当前状态

创建完整克隆

修改虚拟机名称、位置

等待克隆完成后重复操作、克隆出hadoop103、hadoop104

完成后,进行克隆机的网络配置
修改克隆机的 IP
hadoop102: 192.168.10.102
hadoop103: 192.168.10.103
hadoop104: 192.168.10.104

分别修改主机名

三、安装JDK
传输工具使用方法在服务器配置的博客中有,点击连接查看:Linux系统安装JDK
其中远程连接是的服务器外网IP就是自己给虚拟机配置的IP
在hadoop102上安装JDK,这里存放目录为 /opt/software/
opt下新建software目录,将JDK传输到目录中

在/opt下新建module目录,解压JDK到/opt/module目录下

配置环境变量,加入如下内容

source /etc/profile 使配置生效
java -version测试JDK是否安装成功
看到JDK版本则安装成功

四、安装Hadoop
在hadoop102上安装Hadoop,这里存放的目录为 /opt/software/
将Hadoop传输到目录中

解压Hadoop到/opt/module目录下

等待解压完成,查看是否解压成功

获取Hadoop安装路径

将Hadoop添加到环境变量,在my_evn.sh文件中添加下面的内容

source /etc/profile 使配置生效
hadoop version测试Hadoop是否安装成功 ,看到Hadoop版本则安装成功

至此,完成了集群中一台虚拟机的环境配置,完成搭建集群的准备工作,只需要将安装好的环境拷贝到剩余两台虚拟机上。
五、拷贝环境
在hadoop102执行 ping hadoop103 / ping hadoop104

如果不能ping通,要查看 /etc/hosts 配置是否正确
scp(secure copy)安全拷贝
scp可以实现服务器与服务器之间的数据拷贝(from server1 to server2)
scp -r $pdir/$fname $user@$host:$pdir/$fname
命令 递归 要拷贝的文件路径/名称 目的地用户@主机:目的地路径/名称
确保在hadoop102、hadoop103、hadoop104创建好/opt/module、 /opt/software两个目录。


①在hadoop102,将hadoop102中/opt/module/jdk1.8.0,65目录拷贝到hadoop104上
第一次链接需要输入 yes,输入密码

拷贝成功

②在hadoop104,将hadoop102中/opt/module/hadoop-3.2.1目录拷贝到hadoop104上

拷贝成功

③在hadoop104, 将hadoop102中/opt/module目录下所有目录拷贝到hadoop103上

拷贝成功

rsync远程同步工具
精简版系统会提示 未找到命令,执行命令 yum install rsync 安装(集群中所有虚拟机都要执行)
rsync 主要用于备份和镜像,具有速度快、避免复制相同内容和支持符号链接的优点。
rsync 和 scp 的区别
- rsync做文件的复制要比scp的速度快,rsync只对差异文件做更新
- scp是把所有文件都复制过去
选项参数: -a 归档拷贝 -v 显示复制过程
rsync -av $pdir/$fname $user@$host:$pdir/$fname
命令 选项参数 要拷贝的文件路径/名称 目的地用户@主机:目的地路径/名称
如:同步hadoop102中的/opt/module/hadoop-3.2.1到hadoop103

xsync集群分发脚本
需求:循环复制文件到所有节点的相同目录下
希望脚本在任何路径都能使用(脚本放在声明了全局环境变量的路径)

在/root/bin 目录下创建xsync文件

xsync文件内容
#!/bin/bash
#1. 判断参数个数
if [ $# -lt 1 ]
then
echo Not Enough Arguement!
exit;
fi
#2. 遍历集群所有机器
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
编辑完后保存,执行命令 chmod +x xsync 修改xsync权限
同步环境变量配置 sudo /bin/xsync /etc/profile.d/my_env.sh

分别在hadoop103、hadoop104上执行 source /etc/profile使环境变量生效

