1. 环境准备与系统配置
在开始部署Hadoop3完全分布式集群之前,我们需要先做好基础环境准备。我选择openEuler24.03 LTS作为操作系统,这是华为捐赠给开放原子开源基金会的开源项目,特别适合企业级应用场景。这个版本提供了长期支持,稳定性有保障,而且对国产硬件有很好的适配性。
安装系统时,我建议下载标准离线ISO镜像(openEuler-24.03-LTS-SP1-x86_64-dvd.iso),这样后续安装会更方便。我在VMware上创建了三台虚拟机,分别命名为node2、node3和node4,每台机器分配了4GB内存和2个CPU核心。实际生产环境中,你可能需要根据数据规模调整配置。
系统安装完成后,有几项基础配置必须做。首先是关闭防火墙,因为Hadoop集群内部需要大量通信:
systemctl stop firewalld
systemctl disable firewalld
然后是设置静态IP,这非常重要,因为Hadoop对网络稳定性要求很高。我修改了/etc/sysconfig/network-scripts/ifcfg-ens33文件:
BOOTPROTO=static
IPADDR=192.168.193.132
NETMASK=255.255.255.0
GATEWAY=192.168.193.2
DNS1=192.168.193.2
DNS2=114.114.114.114
记得在三台机器上分别设置不同的IP地址,并在/etc/hosts文件中做好主机名映射:
192.168.193.132 node2
192.168.193.133 node3
192.168.193.134 node4
为了安全起见,我创建了专门的普通用户hadoop来管理集群,并配置了sudo权限:
useradd hadoop
passwd hadoop
echo \”hadoop ALL=(ALL) NOPASSWD:ALL\” >> /etc/sudoers
2. 自动化部署工具链搭建
手动配置多台机器既费时又容易出错,所以我准备了一套自动化工具链。首先是配置SSH免密登录,这是自动化部署的基础。在node2上执行:
ssh-keygen -t rsa
ssh-copy-id node2
ssh-copy-id node3
ssh-copy-id node4
然后我写了一个xsync脚本,基于rsync实现文件分发,支持增量同步,比scp更高效。这个脚本放在~/bin目录下:
#!/bin/bash
if [ $# -lt 1 ]; then
echo \”Not Enough Arguement!\”; exit;
fi
for host in node2 node3 node4; do
echo \”==================== $host ====================\”
for file in $@; do
if [ -e $file ]; then
pdir=$(cd -P $(dirname $file); pwd)
fname=$(basename $file)
ssh $host \”mkdir -p $pdir\”
rsync -av $pdir/$fname $host:$pdir
else
echo \”$file does not exists!\”
fi
done
done
<


