以此记录自己使用Mac学习hadoop的心酸过程。网上有很多零零散散的教程,遇到的问题各不相同,希望我也能为大家提供一点帮助。
一、准备模版虚拟机
1.配置静态IP地址
vi /etc/sysconfig/network-scripts/ifcfg-ens160
进入后配置如下:
ONBOOT=yes
BOOTPROTO=static
IPADDR=172.16.6.134
GATEWAY=172.16.6.2
NETMASK=255.255.0.0
DNS1=114.114.114.114
配置结果如图:
需要注意的是:
(1)IP地址可以使用ifconfig进行查看;
(2)每个人的ens不一定相同,譬如我的是ens-160,使用ifconfig同样可以看到;
(3)GATEWAY的前三位网址配置必须与自己的IP地址相同,最后一位为0-10即可。
2.更改主机hostname以及hosts
更改主机hostname
vim /etc/hostname
修改你自己的主机名,这里以CentOS8为例。
更改后配置hosts
vim /etc/hosts
进入hosts配置,结果如下(根据自己的IP地址配置):
注意:在配置hosts时,你可以多配置几个集群,每一个IP地址和hostname相对应即可。起别名全凭个人喜好~
将主机的hostname和hosts配置好之后,重启虚拟机即可:
reboot
二、完整拷贝模版虚拟机及配置
1.完整拷贝模版虚拟机
在虚拟机资源库里,找到自己配置的模版虚拟机,进行完整克隆。建议:这里命名和自己在hosts里面的命名相对应,以免弄混:
2.克隆虚拟机配置
在克隆完成后,分别对克隆的虚拟机修改静态IP地址、hastname以及hosts配置文件,操作同准备模拟虚拟机相同。
值得注意的是:
(1)克隆机的静态IP地址需要和模版机hosts中的IP相对应,其他的网关地址、子网掩码以及DNS等与模版机配置保持一致;
(2)克隆机的hostname修改也需要和模版机hosts中配置保持一致。即,对应IP对应hostname。
(3)每一个克隆机均需要进行配置。
3.测试网络
在克隆虚拟机IP等配置完成后,分别进行重启
reboot
重启后输入
ping www.baidu.com
外网能ping通,则表示成功。
然后,在Filezilla配置相应的站点,对每个克隆虚拟机进行连接,能够成功连接表示成功。
注意:主机地址一定要与在hosts以及ens中的配置相对应。
三、拷贝资源、分发脚本配置和SSH免密登录
1.拷贝资源
从安装jdk,hadoop的主机上拷贝资源到各个克隆机:
scp -r /opt/module ptong@CentOS802:/opt/module
2.配置分发脚本
在主机打开创建的非root文件夹
cd /home/ptong
建立文件夹
mkdir bin
打开
cd bin/
执行
vim xsync
在该文件中编写如下代码
#!/bin/bash
#1. 判断参数个数
if [ $# -lt 1 ]
then
echo Not Enough Arguement!
exit;
fi
#2. 遍历集群所有机器
#这里是自己建立的集群hostname,记得更改
for host in CentOS802 CentOS803 CentOS804
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
修改脚本 xsync 具有执行权限
chmod +x xsync
测试脚本
xsync /home/ptong/bin
将脚本复制到/bin中,以便全局调用
sudo cp xsync /bin/
同步环境变量配置(root所有者)
sudo ./bin/xsync /etc/profile
环境变量分发后,各个克隆虚拟机需要source一下才能生效:
source /etc/profile
3.SSH免密登录
在/home/ptong/.ssh目录下,生成钥匙
ssh-keygen -t rsa
敲(三个回车),就会生成两个文件id_rsa(私钥)、id_rsa.pub(公钥)
将公钥拷贝到要免密登录的目标机器上
ssh-copy-id CentOS802
ssh-copy-id CentOS803
ssh-copy-id CentOS804
注意:还需要在CentOS802上通过ptong账号,同样的配置一下无密登录到 CentOS8、CentOS803、CentOS804服务器上,其余虚拟机同样配置一下。
至此,基本的集群搭建就算完成了。后面的路还很长,启动集群可是大麻烦。博客写的不是很详尽,如果大家在搭建过程中遇到了问题,多百度谷歌吧。同时,也欢迎留言~