大数据集群环境搭建(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: 2
  renderer: networkd  # 或者使用 NetworkManager,图形界面下推荐使用 NetworkManager
  ethernets:
    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

相关推荐
Elastic 中国社区官方博客2 小时前
在 Elasticsearch 中改进 Agentic AI 工具的实验
大数据·数据库·人工智能·elasticsearch·搜索引擎·ai·全文检索
云雾J视界2 小时前
Flink Checkpoint与反压问题排查手册:从日志分析到根因定位
大数据·阿里云·flink·linq·checkpoint·反压
AI数据皮皮侠3 小时前
中国地级市旅游人数、收入数据(2000-2023年)
大数据·人工智能·python·深度学习·机器学习·旅游
2301_772093563 小时前
tuchuang_myfiles&&share文件列表_共享文件
大数据·前端·javascript·数据库·redis·分布式·缓存
K_i1343 小时前
电信大数据实战:MySQL与Hadoop高效同步
大数据·hadoop·mysql
sensen_kiss4 小时前
INT305 Machine Learning 机器学习 Pt.3二元分类和多类分类
大数据·机器学习·分类
B站计算机毕业设计之家9 小时前
智慧交通项目:Python+PySide6 车辆检测系统 YOLOv8+OpenCV 自定义视频 自定义检测区域 (源码+文档)✅
大数据·python·opencv·yolo·智慧交通·交通·车流量
数据与人工智能律师10 小时前
AI的法治迷宫:技术层、模型层、应用层的法律痛点
大数据·网络·人工智能·云计算·区块链
码上地球16 小时前
大数据成矿预测系列(三) | 从统计模型到机器学习:为何机器学习是成矿预测的新前沿?
大数据·机器学习·数据挖掘