因为搭各种大数据环境快被折腾疯了,于是写了此集群前置教程记录下来
环境介绍:三台CentOS7.9虚拟机
主机名:hadoop100,hadoop101,hadoop102
一、前置环境配置
(1)最小化安装额外需要的配置
修改yum源
curl -o /etc/yum.repos.d/CentOS-Base.repo https://repo.huaweicloud.com/repository/conf/CentOS-7-anon.repo
curl -o /etc/yum.repos.d/epel-7.repo http://mirrors.aliyun.com/repo/epel-7.repo
yum clean all
yum makecache
# 可选
yum update -y
每台都要改
安装必备软件包
yum install -y epel-release
yum install -y net-tools
yum install -y vim
yum install -y rsync
每台都要安装
(2)设置IP与主机名
因为我的虚拟机是CentOS7.9版本,所以修改IP的文件跟别的系统可能不一样 如果系统和我不一样的话需要自己去找对应系统修改IP的方式
[hadoop@hadoop100 ~]$ sudo vim /etc/sysconfig/network-scripts/ifcfg-ens33
# 将dhcp修改为static
BOOTPROTO="static"
# 然后再末尾添加以下内容
# IP
IPADDR=192.168.100.130
# 网关
GATEWAY=192.168.100.2
# DNS
DNS1=192.168.100.2
DNS2=8.8.8.8
注意:修改完保存,然后执行
systemctl restart network重启网络服务
每台都要改静态IP,并且IP不可以相同!!!!!!!
# 修改主机名
[hadoop@hadoop100 ~]$ sudo hostnamectl set-hostname hadoop100
修改为想要的主机名即可,这里修改为hadoop100
每台都要改!!! 并且改完之后执行
bash才会显示新的主机名
(3)配置hosts 映射
sudo vim /etc/hosts
将以下内容添加到末尾
192.168.100.130 hadoop100
192.168.100.131 hadoop101
192.168.100.132 hadoop102
每台都要改!!!
(4)关闭防火墙
sudo systemctl stop firewalld
sudo systemctl disable firewalld.service
sudo setenforce 0
sudo sed -i 's/^SELINUX=.*/SELINUX=disabled/' /etc/selinux/config
每台都要改!!!
(5)配置免密登录
ssh-keygen -t rsa
每台机器都要执行,执行之后按三下回车
ssh-copy-id hadoop100
ssh-copy-id hadoop101
ssh-copy-id hadoop102
每台机器都要执行这三行代码,然后根据提示输入密码
(6)给普通用户配置root权限
vim /etc/sudoers
以下内容要放到%wheel 这行下面
hadoop ALL=(ALL) NOPASSWD: ALL
每台机器都要配置 我这里的普通用户是hadoop
(7)编写集群分发脚本
mkdir /home/hadoop/bin
cd /home/hadoop/bin
vim xsync
输入以下内容:
#!/bin/bash
# 1. 定义集群主机列表(在这里统一修改)
HOSTS="hadoop100 hadoop101 hadoop102"
# 2. 判断参数个数
if [ $# -lt 1 ]; then
echo "Usage: $0 <file1/dir1> [file2/dir2] ..."
exit 1
fi
# 3. 遍历集群所有机器
for host in $HOSTS; do
echo "==================== $host ===================="
# 4. 遍历所有要发送的文件/目录
for file in "$@"; do
# 5. 判断文件是否存在
if [ -e "$file" ]; then
# 6. 获取父目录(物理路径)和文件名
pdir=$(cd -P "$(dirname "$file")" && pwd)
fname=$(basename "$file")
# 7. 远程创建目录并同步 (合并为一条 rsync 命令)
# 使用 ssh 先确保目录存在,然后 rsync 推送
ssh $host "mkdir -p $pdir"
if [ $? -eq 0 ]; then
rsync -av --rsync-path="sudo rsync" "$pdir/$fname" "$host:$pdir"
else
echo "ERROR: Failed to create directory on $host"
fi
else
echo "ERROR: $file does not exist!"
fi
done
done
保存后添加执行权限并分发到其余机器
chmod 777 /home/hadoop/bin/xsync
scp -r /home/hadoop/bin hadoop101:/home/hadoop/
scp -r /home/hadoop/bin hadoop102:/home/hadoop/
# 以后集群分发就不用scp这么麻烦了
# 集群分发格式:xsync 完整路径
(8)配置集群时间同步
# 1. 安装ntpdate
sudo yum install -y ntpdate
# 2. 同步阿里云时间服务器
sudo ntpdate ntp.aliyun.com
# 3. 设置定时任务,每天凌晨2点自动同步时间
sudo crontab -e
# 第一行加入以下内容后保存退出
0 2 * * * /usr/sbin/ntpdate ntp.aliyun.com
每台都要执行 并且这里只是简单的配置下集群时间同步 生产环境是另一种同步方式


说些什么吧!