【大数据技术】教程01:搭建完全分布式高可用大数据集群(VMware+CentOS+FinalShell)
搭建完全分布式高可用大数据集群(VMware+CentOS+FinalShell)
资源下载
- VMware Workstation Pro 16
- CentOS-Stream-10-latest-x86_64-dvd1.iso
- FinalShell 4.5.12
注:请在阅读本篇文章前,将以上资源下载下来。
写在前面
本章主要介绍搭建完全分布式高可用集群的前置准备:
- 下载并安装
VMware workstation Pro
- 使用
CentOS
镜像文件创建虚拟机 - 使用
FinalShell
远程连接虚拟机 - 配置虚拟机的开发环境。
安装VMwarePro16
按照以下步骤进行安装即可。
- 双击.exe安装文件进入安装向导界面。
- 勾选用户许可协议。
- 设置兼容。
- 设置安装位置并将VMware添加到系统变量。
- 设置用户体验。
- 设置快捷方式。
- 准备安装。
- 安装程序。
-
填入许可证,以下3个密匙中随便选择一个。
-
激活密钥1:ZF3R0-FHED2-M80TY-8QYGC-NPKYF
-
激活密钥2:YF390-0HF8P-M81RQ-2DXQE-M2UT6
-
激活密钥3:ZF71R-DMX85-08DQY-8YMNC-PPHV8
-
- 完成安装。
- 安装成功后双击启动VMware WorkStation Pro。
创建CentOS虚拟机
按照以下步骤创建一个名为hadoop的虚拟机。这里我使用的镜像文件是 CentOS-Stream-10-latest-x86_64-dvd1.iso。
- 单击“创建新的虚拟机”。
- 选择“典型”。
- 选择“稍后安装操作系统”。
- 设置客户机操作系统。
- 命名虚拟机并设置安装位置。
- 指定磁盘容量,默认即可。
- 准备安装。
- 单击“CD/DVD”。
- 配置CentOS镜像文件。
- 修改内存为2GB。
- 启动虚拟机,选择
install CentOS Stream 10
安装CentOS10。
- 等待安装。
- 选择语言。
- 依次配置以下几个部分。
① 安装目标位置
默认即可,直接单击“完成”返回。
② 软件选择
选择“Server with GUI”,并勾选“Performance Tools”
③ 时间和日期
地区选择“亚洲”, 城市选择“上海”
④ 网络和主机名
确保网卡已经打开(左下角可设置主机名,也可以后续设置)
⑤ 配置ROOT账户
注意勾选“允许root用户使用密码进行SSH登录”,作为练习,密码可以设置简单点,比如123456。
- 单击“安装”按钮等待安装(安装较慢,估计需要等待几十分钟)。
- 安装完成后重启系统即可。
虚拟机的基础配置
包括配置基础环境、配置远程登录、克隆虚拟机、配置网络、配置主机名等。
1. 配置基础环境
重启虚拟机后,按以下步骤进行虚拟机的基础配置。
- 选择语言。
- 选择键盘布局。
- 开启位置服务。
- 选择时区。
- 创建用户。
- 设置密码。
- 完成。
2. 配置远程登录
按以下步骤实现通过SSH远程登陆虚拟机。
- 打开终端。
- 输入
su root
命令,然后输入密码切换到root用户。
- 检查SSH服务是否安装和启动。
分别执行rpm -qa | grep ssh
和ps -ef | grep sshd
命令,查看当前虚拟机是否安装了SSH服务,以及SSH服务是否启动。
-
rpm(英文全拼:redhat package manager) 原本是 Red Hat Linux 发行版专门用来管理 Linux 各项套件的程序,由于它遵循 GPL 规则且功能强大方便,因而广受欢迎。逐渐受到其他发行版的采用。RPM 套件管理方式的出现,让 Linux 易于安装,升级,间接提升了 Linux 的适用度。
-
ps (英文全拼:process status)命令用于显示当前进程的状态,类似于 windows 的任务管理器。
-
grep (global regular expression) 命令用于查找文件里符合条件的字符串或正则表达式。该命令用于查找内容包含指定的范本样式的文件,如果发现某文件的内容符合所指定的范本样式,预设 grep 指令会把含有范本样式的那一列显示出来。若不指定任何文件名称,或是所给予的文件名为 -,则 grep 指令会从标准输入设备读取数据。
如果没有安装,可以使用以下命令进行安装yum install openssh-server openssh-clients
。
- 修改SSH服务配置文件。
默认情况下,CentOS Stream 10不允许用户root进行远程登录。
在虚拟机hadoop中执行vi /etc/ssh/sshd_config
命令编辑配置文件sshd_config。
① 按下键盘的 i
键进入编辑状态。
② 将 PermitRootLogin
修改为 yes
。
③ 按下键盘的 Esc
键,输入 :wq
再按下键盘的 enter
键保存并退出文件。
对于小白,这里介绍下vi命令的简单使用方式:使用vi命令打开文件后,输入字母i进入插入模式 => 修改相应的文件内容 => 按Esc键进入命令行模式 => 输入:进入底行模式 => 输入x或者wq保存退出。
注:如果文件修改后不想保存,进行底行模式后输入q!进行不保存退出。
- 重启SSH服务。
输入命令 systemctl restart sshd
重启SSH服务。
到此,成功配置了远程登陆的虚拟机环境。
3. 克隆3个虚拟机
- 关闭虚拟机。
- 依次克隆出虚拟机
master
、slave01
、slave02
,以虚拟机master
为例。
① 右击hadoop -> 管理 -> 克隆。
② 进入克隆界面。
③ 设置克隆源。
④ 设置克隆类型为“创建完整克隆”。
-
完整克隆的虚拟机是通过复制原虚拟机创建完全独立的新虚拟机,不和原虚拟机共享任何资源,可以脱离原虚拟机独立使用。
-
链接克隆的虚拟机需要和原虚拟机共享同一个虚拟磁盘文件,不能脱离原虚拟机独立运行。
⑤ 设置虚拟机的名称和位置。
⑥ 等待克隆。
⑦ 克隆完成,以下为刚克隆的虚拟机 master
。
请按以上步骤继续克隆虚拟机 slave01
和 slave02
。
4. 配置网络
虚拟机名 | 主机名 | IP |
---|---|---|
master | master | 192.168.121.160 |
slave01 | slave01 | 192.168.121.161 |
slave02 | slave02 | 192.168.121.162 |
网络整体规划如上表,请按照以下步骤配置网络。
- 进入虚拟网络编辑器。
- 获取管理员权限。
- 修改VMnet8的子网IP。
- 修改网关IP。
- 配置静态IP
以虚拟机 master
为例, slave01
和 slave02
也要配置(除了第④步,其余步骤3个虚拟机都要执行)
① 启动虚拟机 master
。
② 打开终端,输入命令 su root
切换到root用户。
③ 输入命令vi /etc/NetworkManager/system-connections/ens160.nmconnection
进入配置文件ens160.nmconnection
。
③ 编辑配置文件ens160.nmconnection
的 ipv4
,修改为以下内容。
method=manual
address1=192.168.121.160/24,192.168.121.2
dns=114.114.114.114
虚拟机 slave01
和 slave02
重复上述步骤,唯一的区别就是 address 不同。
slave01
method=manual
address2=192.168.121.161/24,192.168.121.2
dns=114.114.114.114
slave02
method=manual
address3=192.168.121.162/24,192.168.121.2
dns=114.114.114.114
④ 修改uuid(仅修改slave01、 slave02两个主机)
分别在 slave01 和 slave02 的终端输入以下命令。
sed -i '/uuid=/c\uuid='`uuidgen`'' /etc/NetworkManager/system-connections/ens160.nmconnection
uuid的作用是使分布式系统中的所有元素都有唯一的标识码。
⑤ 重启ens33网卡和重新加载网络配置文件。
nmcli c reload
nmcli c up ens160
⑥ 查看网络信息。(以 master
为例)
ip a
⑦ ping百度官网,检测网络。(以 master
为例)
ping www.baidu.com
输入ctrl+c退出检测。
5. 配置主机名
- 在
master
的终端输入hostnamectl set-hostname master
配置主机名。
- 在
slave01
的终端输入hostnamectl set-hostname slave01
配置主机名。
- 在
slave02
的终端输入hostnamectl set-hostname slave02
配置主机名。
执行以上命令后需要重新打开终端,才会更新主机名。
安装FinalShell
为什么要使用FinalShell,因为很方便。
按照以下步骤下载并安装 FinalShell
。
- 接受许可。
- 选择组件。
- 选择安装位置。
- 等待安装。
- 完成安装。
- 启动
FinalShell
远程登录虚拟机
按照以下步骤,使用FinalShell远程登录3台虚拟机。
- 新建SSH连接。(以
master
主机为例)
- 使用密码连接。
- 重复以上步骤,新建
slave01
和slave02
的连接。
- 单击
master
、slave01
、slave02
进行连接,接受并保存密匙。
- 连接成功。
接下来,我们就可以用 FinalShell
操作虚拟机了。
虚拟机的详细配置
包括配置映射文件、配置防火墙、配置免密登录等。
1. 配置映射文件
按照以下步骤配置映射文件。
- 在虚拟机
master
的终端输入命令su root
进入管理员状态。
-
执行
vi /etc/hosts
命令进入映射文件hosts
。 -
在
hosts
配置文件中添加以下内容。
192.168.121.160 master
192.168.121.161 slave01
192.168.121.162 slave02
- 在虚拟机
master
执行以下命令,将hosts
文件拷贝配置到slave01
和slave02
。
scp /etc/hosts root@slave01:/etc/hosts
scp /etc/hosts root@slave02:/etc/hosts
注意:在拷贝时需要输入slave01和slave02的管理员密码。
- 拷贝成功。
2. 配置防火墙
关闭虚拟机 master
、slave01
和 slave02
的防火墙。
分别在3台虚拟机中运行如下命令关闭防火墙并禁止防火墙开启启动(三台虚拟机都要切换到root状态)。
- 关闭防火墙:
systemctl stop firewalld
- 禁止防火墙开机启动:
systemctl disable firewalld
3. 配置免密登录
在集群环境中,主节点需要频繁的访问从节点,以获取从节点的运行状态,主节点每次访问从节点时都需要通过输入密码的方式进行验证,确定密码输入正确后才建立连接,这会对集群运行的连续性造成不良影响,为主节点配置SSH免密登录功能,可以有效避免访问从节点时频繁输入密码。接下来,虚拟机 master
作为集群环境的主节点实现SSH免密登录。
SSH免密登录原理(原理:非对称加密算法:公钥加密(给别人)、私钥解密给自己)
我们只需要实现master
免密登录slave01
和slave02
即可。
- 生成密钥
在虚拟机 master
中执行ssh-keygen -t rsa
命令,生成密钥。(输入命令后一直按键盘的“enter”键即可)
- 查看秘钥文件
在虚拟机 master
中执行ll /root/.ssh
命令查看密钥文件。
- 复制公钥文件
将虚拟机 master
生成的公钥文件复制到集群中相关联的所有虚拟机,实现通过虚拟机 master
可以免密登录虚拟机 master
、slave01
、slave02
。
ssh-copy-id master
ssh-copy-id slave01
ssh-copy-id slave02
- 测试免密登录
ssh master
ssh slave01
ssh slave02
到此,成功配置免密登录。
写在后面
本文仅供学习使用,原创文章,请勿转载,谢谢配合。