hadoop-搭建Hadoop虚拟机环境

Hadoop虚拟机集群的设置

本笔记主要记录黑马程序Hadoop课程对应的,在Windows 11上通过3台虚拟机搭建Hadoop平台的笔记。需要的软件如下:

  • VMware workstation 17.6
  • Oracle JDK 8 [https://download.oracle.com/otn/java/jdk/8u421-b09/d8aa705069af427f9b83e66b34f5e380/jdk-8u421-linux-x64.tar.gz]
  • Centos 7.6 [https://vault.centos.org/7.6.1810/isos/x86_64/CentOS-7-x86_64-DVD-1810.iso] 可能需要翻墙。
  • Hadoop 3.4

VMware 虚拟网卡设置

首先,点击编辑,打开虚拟网络编辑器,选择VMnet8按照如下网络设置虚拟网络网段和网关。

  • 子网IP:192.168.88.0,子网掩码255.255.255.0
  • 网关IP:192.168.88.2

Hadoop-VMware-虚拟网络设置

创建基础虚拟机

由于VMware提供了虚拟机克隆功能,因此我们不必一个个创建虚拟机,而是通过先创建一个基础虚拟机,然后再克隆成多个虚拟机再微调的方式。

点击创建新的虚拟机->选择典型(推荐)->填入Centos 7.6光盘镜像所在位置,如下图

Hadoop-VMware-虚拟机创建1

点击下一步,之后设置虚拟机的账号,密码,再点击下一步。并选择虚拟机存放位置(最好选一个空间比较大的磁盘)。

Hadoop-VMware-虚拟机创建2

基础虚拟机磁盘可以先设置为20G,之后如果需要可以随时扩容,这也是使用虚拟机的好处。接下来,都直接点击下一步,不用更改什么,点击完成后,即开机了Centos系统的安装,其安装过程是自动化的。

Hadoop-VMware-虚拟机创建3

等待系统安装好后,就完成了基础虚拟机的创建。

克隆虚拟机

我们目前一共需要3台虚拟机,来构建Hadoop集群。VMware可以直接通过现有的虚拟克隆出其他虚拟机,而不用重复创建。

克隆虚拟机之前,先用保证被克隆的虚拟机处于关闭状态。然后在已建立好的虚拟机上右键菜单->管理->克隆

Hadoop-VMware-虚拟机克隆1

克隆选项分别是:克隆自虚拟机中的当前状态-->创建完整克隆-->虚拟机名称分别为node1,node2,node3,虚拟机位置分别为D:\VMware\bigdata\node1,D:\VMware\bigdata\node2,D:\VMware\bigdata\node3

为了方便管理,我们可以在VMware资源管理栏添加一个文件夹叫大数据集群,把node1,node2,node3三个虚拟机移入文件夹中。

Hadoop-VMware-虚拟机克隆2

克隆好3台虚拟机后,我们设置以下3台虚拟机的内存。我们计划使用node1作为master节点,运行更多功能,所以将其内存大小设置为4GB,其他为2GB。如下表:

节点 CPU 内存
node1 1 core 4GB
node2 1 core 2GB
node3 1 core 2GB

下图中以node1为例,其他两个节点操作方法一样。

Hadoop-VMware-虚拟机克隆3

这样我们就设置好了Hadoop的虚拟机集群。

主机名、IP、SSH免密登录

为了方便Hadoop集群中虚拟机的通信,我们将修改主机名以及设置固定IP。同时将使用密钥登陆的方式实现主从之间的免密登录。

主机名与IP设置

开启node1,右键选择Open Terminal。修改主机名为node1,并修改固定IP为192.168.88.131,最后重启网卡。具体命令如下:

 1# 切换到root(否则无权限)
 2su - root
 3
 4# 修改主机名
 5hostnamectl set-hostname node1
 6
 7# 设置IP地址
 8vim /etc/sysconfig/network-scripts/ifcfg-ens33
 9# 1. 修改IP获取方式为静态
10BOOTPROTO="static"
11# 2. 在文本末尾添加IP地址相关信息
12IPADDR="192.168.88.131"
13NETMASK="255.255.255.0"
14GATEWAY="192.168.88.2"
15DNS1="192.168.88.2"
16
17#重启网卡
18systemctl restart network
19
20# 设置hosts文件,方便DNS解析
21vim /etc/hosts
22
23# 添加以下内容
24192.168.88.131 node1
25192.168.88.132 node2
26192.168.88.133 node3

同样的操作启动node2node3,对应的名称为node2,node3,IP为192.168.88.132,192.168.88.133

黑马的教程中,还需要将windows实体机的hosts文件也添加上DNS解析项,不知道是不是必须的。

1# windows中C:\Windows\System32\drivers\etc\hosts
2# 在文本最后添加
3192.168.88.131 node1
4192.168.88.132 node2
5192.168.88.133 node3

SSH免密登录

后续安装的集群画软件,多数需要远程登录以及远程执行命令,为了方便起见,我们让3台虚拟机之间可以相互免密登录。我们不仅需要root节点的相互登录,同时创建了一个hadoop用户,让各个节点的hadoop用户也可以免密登录。下面是node1中的操作,其他两个节点也类似。

 1# 生成密钥,一路回车
 2ssh-keygen -t rsa -b 4096
 3
 4# 将密钥复制到各个节点上(包括自己)
 5ssh-copy-id node1
 6ssh-copy-id node2
 7ssh-copy-id node3
 8
 9# 创建单独的hadoop用户,以备装以后的软件
10useradd hadoop
11# 设置密码
12passwd hadoop
13
14# 切换到hadoop用户,执行免密登录
15su - hadoop
16# 生成密钥,一路回车
17ssh-keygen -t rsa -b 4096
18ssh-copy-id node1
19ssh-copy-id node2
20ssh-copy-id node3

注意,免密需要退出后重新登录才能生效。另外,上述命令是使得各虚拟机root用户之前,hadoop用户之前可以相互免密登录。root用户登录其他hadoop用户,或者hadoop登录root用户还是需要密码的。

JDK环境部署

Hadoop很多软件是需要Java运行环境的,目前推荐使用JDK 8。首先将下载好的JDK 8版本压缩包(jdk-18.0.2.1_linux-x64_bin.tar.gz)上传到3台linux虚拟机。

注:Oracle的JDK下载很垃圾,首先要免费注册,还得清理cookies,不然容易发生400错误。我为了不清理cookies,是用了无痕模式才下载成功。

我们将JDK压缩包上传到/tmp文件夹下,上传好了后,分别在3台虚拟机上部署jdk,具体步骤如下:

 1su - root
 2# 1. 创建文件夹,用来部署jdk,将jdk,tomcat都安装部署到:/export/server内
 3mkdir -p /export/server
 4
 5# 2. 解压缩jdk安装文件
 6tar -zxvf /tmp/jdk-8u421-linux-x64.tar.gz -C /export/server
 7
 8# 3. 配置java环境
 9vim /etc/profile
10# 文末添加
11export JAVA_HOME=/export/server/jdk1.8.0_421
12export PATH=$PATH:$JAVA_HOME/bin
13
14# 4. 使环境变量生效
15source /etc/profile
16
17# 5. 配置java执行程序, centos默认使用openjdk
18mv /usr/bin/java /usr/bin/openjava
19ln -s /export/server/jdk1.8.0_421/bin/java /usr/bin/java
20
21# 6. 执行验证展示
22[root@node1 ~]# java -version
23java version "1.8.0_421"
24Java(TM) SE Runtime Environment (build 1.8.0_421-b09)
25Java HotSpot(TM) 64-Bit Server VM (build 25.421-b09, mixed mode)
26javac -version
27[root@node1 ~]# javac -version
28javac 1.8.0_421
29
30# 7. 最后清理垃圾文件
31rm /tmp/jdk-8u421-linux-x64.tar.gz

防火墙、SELinux、时间同步

我们还需要在三台虚拟机上分别执行以下操作,来方便Hadoop程序的运行。

关闭防火墙和SELinux

集群化软件之间需要通过端口互相通讯,为了简单起见,我们直接关闭防火墙。

1# 关闭防火墙
2systemctl stop firewalld
3# 开机不再启动这个服务
4systemctl disable firewalld

Linux有一个安全模块,叫SELinux,用以限制用户和程序的相关权限,来确保系统的安全稳定。在当前学习阶段,为了简单起见,我们也直接关闭SELinux功能。

1vim /etc/sysconfig/selinux
2
3# 将该行disabled
4SELINUX=disabled
5
6# 保存后退出,重启虚拟机生效

时间同步

修改时区并配置自动时间同步。集群的同步非常重要,否则会出现混乱。时间同步是通过ntp这个软件实现的。

1# 1. 安装ntp软件
2yum install -y ntp
3# 2. 更新时区在同一位置,这里设置为上海
4rm -f /etc/localtime; sudo ln -s /usr/share/zoneinfo/Asia/Shanghai  /etc/localtime
5# 3. 同步时间,使用阿里云的时间同步服务器
6ntpdate -u ntp.aliyun.com
7# 4. 开启ntp服务并设置开机自启动
8systemctl start ntpd
9systemctl enable ntpd

注意,现在这个年代,yum install基本上很难直接安装成功。源大概率没了。因此,我们最后用阿里的Centos 7源更换下默认的yum源。

1# 下载源
2wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
3# 清空并生成缓存
4yum clean all
5yum makecache

然后就可以yum install了。(没必要先yum update)

设置虚拟机快照

经过以上设置,3台虚拟机的状态已经装备就绪,可以对当前来之不易的状态进行快照保存,以备后续恢复。

对3台虚拟机均执行拍摄快照。首先我们将3台虚拟机关机(保存的更快),然后菜单栏上虚拟机->快照->拍摄快照。就可拍摄快照进行备份了。

Hadoop-VMware-拍摄快照

至此,Hadoop平台的虚拟机设置已经完成。