大数据集群环境搭建(Ubantu)
目录
单机、分布式、集群简介
单机模式
分布式模式
集群模式
负载均衡解释
集群架构
集群环境搭建
修改主机名和IP
主机名和IP映射配置
关闭防火墙服务
集群机器之间实现免密登录
集群时间同步
单机、分布式、集群简介
单机模式
所有业务都集成在一台服务器上面。
分布式模式
多台不同的服务器中部署不同的服务模块,通过远程调用协同工作,对外提供服务。
(多台服务器集中在一起,每台服务器都实现总体中的不同业务。)
集群模式
多台不同的服务器中部署相同应用或服务模块,构成集群,通过负载均衡设备对外提供服务
(将分布式模式分出的单个业务又由多台服务器来做,多台服务器在一起做同样的事。)
负载均衡解释
将网络流量或计算任务合理地分配到多个服务器、进程或 资源上,以避免单一节点过载。解决集群模式的服务器分配问题,让用户的请求合理分配到不同服务器上。
集群架构
主从架构
主角色:master、leader
从角色:slave、follwer
主从角色各司其职,需要共同配合对外提供服务,常见一主多从
主备架构
主角色:active
备角色:standby
主要解决单点故障问题,保证业务的持续可用性,常见一主一备,也可一主多备
集群环境搭建
修改主机名和IP
为什么要这么做?
确保集群网络的稳定性和可管理性
注意:集群中的虚拟机都要设置,网关一致,DNS一致,静态IP网段必须一致但最后一段数字必须不一致。
ok,开始修改↓↓↓
修改主机名(命令修改只能临时生效,重启无效,需修改配置文件重启可永久生效)
sudo vim /etc/hostname
这里我的主机名分别为node1和node2
修改成静态IP
①进入到文件中
cd /etc/netplan/ (ubantu18以上)
sudo vim 01-network-manager-all.yaml
②修改成以下内容(严格缩进)
network:version: 2renderer: networkd # 或者使用 NetworkManager,图形界面下推荐使用 NetworkManagerethernets:ens33: # 你的网卡名称,根据实际情况修改dhcp4: no # 关闭 IPv4 动态分配,设置为静态addresses: [192.168.88.100/24] # 你想要设置的静态 IP 地址和子网掩码,/24 表示子网掩码为 255.255.255.0,IP 地址要确保和局域网内其他设备不冲突gateway4: 192.168.88.2 # 网关地址,根据实际情况修改nameservers:addresses: [8.8.8.8, 114.114.114.114] # DNS 服务器地址,可使用公共 DNS,也可以使用你所在网络提供的 DNS
③使配置生效并检查
sudo netplan apply #让配置生效
查看网卡名称和ip地址(一个静态ip,一个动态ip):ip addr
查看网关地址:ip route
测试外部网络 DNS 解析和连通性:
ping www.baidu.com
④完成集群中所有虚拟机的修改后,测试节点间的连通性
测试节点间通信:执行
ping 192.168.88.100
(我的node2 的 IP)
主机名和IP映射配置
为什么要这么做?
集群节点间能通过主机名通信
没配置也能通过主机名通信?
手动配置
/etc/hosts
文件是一种通用且标准的做法,不受网络环境变化、虚拟机软件变动等因素影响。不管是在校园网、公司内网,还是其他网络环境下,只要在每台虚拟机的/etc/hosts
文件中正确添加所有节点的主机名与 IP 映射,就能确保集群内节点始终可以通过主机名进行稳定通信。所以从稳定性和兼容性考虑,建议手动配置。
ok,开始配置↓↓↓
①进入文件中
sudo vim /etc/hosts
②添加主机名与 IP 映射(同样,集群中的虚拟机都需要配置)
192.168.88.100 node2
192.168.88.101 node1
(通常添加在文件末尾)
③验证
ping node2 #ping 主机名
#④如果在Windows上做开发,也需要修改hosts文件
目录C:\Windows\System32\drivers\etc 下的hosts文件,添加主机名与IP映射(第②步)
(通常放在所有配置的最前面)
关闭防火墙服务
为什么要这么做?
关闭ufw:大数据集群(如 Hadoop、Spark)的节点间需要通过大量端口进行通信,而防火墙会默认拦截集群内节点间的端口通信,使通信受阻。
(为了方便使用者快速搭建环境,避免因为防火墙拦截导致的网络通信问题,很多学习用途的镜像都会预先关闭防火墙,学习者不需要再操作。)
关闭SElinux:SELinux 默认的安全策略可能会限制这些操作,导致组件无法正常访问所需的资源,进而使集群启动失败或者功能异常
(Ubantu系统 默认是不安装 SELinux 的,一般不需要专门去关闭它)
ok,开始关闭↓↓↓
①查看防火墙状态
sudo ufw status # ufw是ubantu常用防火墙工具
②彻底禁用防火墙服务(防止重启后自动开启)
#临时关闭(立即生效,重启后恢复),但我们暂时需要彻底关闭
sudo ufw disable
# 停止防火墙服务
sudo systemctl stop ufw
# 禁止开机自启
sudo systemctl disable ufw
集群机器之间实现免密登录
原理
操作(主机自己和自己也需要打通免密登录)
ssh 主机名
#yes
了解跳板机(堡垒机):作用是提高安全性
跨机远程拷贝文件
# 本地文件 拷贝到 远程机器
scp [本地文件路径] [远程用户]@[远程IP或主机名]:[远程目标路径]# 远程文件 拷贝到 本地
scp [远程用户]@[远程IP或主机名]:[远程文件路径] [本地目标路径]例:scp -r /home/hadoop/data hadoop@node2:/home/hadoop/ # 拷贝整个 data 目录
集群时间同步
为什么要这么做?
在大数据集群中,时间同步非常重要,因为很多组件的日志记录、任务调度等功能都依赖准确一致的时间。如果集群中各节点时间不一致,可能会导致数据不一致、任务调度失败等问题。
常用的时间同步工具是ntp
(Network Time Protocol,网络时间协议)
ok,开始配置↓↓↓
①安装ntp服务
sudo apt-get update
sudo apt-get install ntp
②配置ntp服务器
#打开
ntp
的配置文件/etc/ntp.conf
sudo vim /etc/ntpsec/ntp.conf
#在文件中添加或修改server
行,指定要同步的时间服务器,例如使用阿里云的公共 NTP 服务器server ntp.aliyun.com iburst
③重启ntp服务
sudo systemctl restart ntp
④验证时间同步
#可以使用
ntpq -p
命令查看 ntp 服务器的连接状态和同步情况ntpq -p