配置集群环境
1.软件包准备
VMWARE 虚拟环境安装软件
CENTOS7 镜像文件
FinalShell
2.配置虚拟机
虚拟机版本: CENTOS7
安装过程 : 不再赘述
安装必要的包:
yum install -y epel-release
yum install -y psmisc nc net-tools rsync vim lrzsz ntp libzstd openssl static tree iotop git libaio
yum install -y 软件包名
目录创建: 创建 /opt/soft /opt/package 两个目录
关闭防火墙: systemctl stop firewalld
关闭防火墙开机自启: systemctl disable firewalld
systemctl [start | stop | status | disable ] 服务名
```
## 3.关闭SELINUX
```properties
安全增强型 Linux(Security-Enhanced Linux)简称 SELinux,它是一个 Linux 内核模块,也是 Linux 的一个安全子系统。
SELinux 主要由美国国家安全局开发。 Linux 内核都已经集成了 SELinux 模块。
SELinux 主要作用就是最大限度地减小系统中服务进程可访问的资源(最小权限原则)
命令: vim /etc/selinux/config
修改: SELINUX=disabled
```
## 4.安装JDK环境
```properties
为什么安装 JDK:
Hadoop 是用Java语言写的
1: 检查删除linux自带的jdk
rpm -qa | grep -i java | xargs -n1 sudo rpm -e --nodeps
2: 上传 JDK 安装包到 /opt/package 目录
3: 解压到 /opt/soft 目录
配置环境变量: vim /etc/profile.d/my_env.sh
添加如下内容
#JAVA_HOME
export JAVA_HOME=/opt/soft/jdk1.8.0_65
export PATH=$PATH:$JAVA_HOME/bin
```
## 5.设置静态IP
```properties
#1 编辑网卡信息
vim /etc/sysconfig/network-scripts/ifcfg-ens33
#2 修改内容
将 BOOTPROTO="dhcp" 修改成 BOOTPROTO="static"
将 ONBOOT="no" 修改成 ONBOOT="yes"
#3 添加如下内容, 注意 ip 的第三段 要改成自己的
IPADDR="192.168.52.67"
NETMASK="255.255.255.0"
GATEWAY="192.168.52.2"
DNS1="192.168.52.2"
# 重启网卡
service network restart
```
## 6.配置host映射
```properties
vim /etc/hosts
根据个人主机名和ip添加如下: 注意 ip 要改成自己的
192.168.52.181 node1
192.168.52.182 node2
192.168.52.183 node3
```
## 7.克隆虚拟机
```properties
1:将第二步安装好的虚拟机关机
2:克隆另外两台机器
3:修改克隆的2台虚拟机的MAC地址[]
```
![image-20221023180048003](C:\Users\zhang\AppData\Roaming\Typora\typora-user-images\image-20221023180048003.png)
## 8.修改主机名和IP(克隆后的2台)
```properties
# 修改主机名
vim /etc/hostname
# 修改IP
vim /etc/sysconfig/network-scripts/ifcfg-ens33
## 修改完后 要重启 虚拟机
```
## 9.设置免密登录
```properties
在node1上生成公钥和私钥
ssh-keygen
将公钥拷贝给三台机器
ssh-copy-id node1
ssh-copy-id node2
ssh-copy-id node3
```
## 10.远程拷贝
```
scp
```
## 同步脚本zlcp
### 在root 下创建脚本
```
vim zlcp
```
### 复制以下内容
注意: 如果主机名不一致,自行修改后再复制
```shell
#!/bin/bash
if [ $# -lt 1 ]
then
echo "no parameter!"
exit;
fi
#2. 遍历集群所有机器
for host in node1 node2 node3
do
echo ==================== $host ====================
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
```
sh zlcp a 在所有虚拟机更新a文件的数据
### 添加执行权限
```
chmod +x zlcp
```
这个脚本有了路径执行权限
./zlcp
./root/zlcp
### 将脚本移动到/bin中
```
mv zlcp /bin/
cp zlcp /bin/
```
## 配置时间同步
在所有节点关闭ntp服务和自启动
```
systemctl stop ntpd
systemctl disable ntpd
```
1.修改ntp配置文件 (只在node1做配置)
```
vim /etc/ntp.conf
```
![image-20220323170953411](C:\Users\zhang\AppData\Roaming\Typora\typora-user-images\image-20220323170953411.png)
2.添加下面2行
```
server 127.127.1.0
fudge 127.127.1.0 stratum 10
```
当该节点丢失网络连接,依然可以采用本地时间作为时间服务器为集群中的其他节点提供时间同步
3 . 修改/etc/sysconfig/ntpd 文件
```
vim /etc/sysconfig/ntpd
```
添加如下内容
```
SYNC_HWCLOCK=yes
```
![image-20220323171527995](C:\Users\zhang\AppData\Roaming\Typora\typora-user-images\image-20220323171527995.png)
4 . 重新启动ntpd服务,设置开机自启动
```
systemctl start ntpd
systemctl enable ntpd
```
5 . 其他2台机器配置(node2 和 node3 )
在其他机器配置10分钟与时间服务器同步一次
```
crontab -e
添加
*/10 * * * * /usr/sbin/ntpdate node1
```