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
Figure 1: Hadoop-VMware-虚拟网络设置
创建基础虚拟机
由于VMware提供了虚拟机克隆功能,因此我们不必一个个创建虚拟机,而是通过先创建一个基础虚拟机,然后再克隆成多个虚拟机再微调的方式。
点击创建新的虚拟机
->选择典型(推荐)
->填入Centos 7.6光盘镜像所在位置,如下图
Figure 2: Hadoop-VMware-虚拟机创建1
点击下一步
,之后设置虚拟机的账号,密码,再点击下一步。并选择虚拟机存放位置(最好选一个空间比较大的磁盘)。
Figure 3: Hadoop-VMware-虚拟机创建2
基础虚拟机磁盘可以先设置为20G,之后如果需要可以随时扩容,这也是使用虚拟机的好处。接下来,都直接点击下一步
,不用更改什么,点击完成
后,即开机了Centos系统的安装,其安装过程是自动化的。
Figure 4: Hadoop-VMware-虚拟机创建3
等待系统安装好后,就完成了基础虚拟机的创建。
克隆虚拟机
我们目前一共需要3台虚拟机,来构建Hadoop集群。VMware可以直接通过现有的虚拟克隆出其他虚拟机,而不用重复创建。
克隆虚拟机之前,先用保证被克隆的虚拟机处于关闭状态。然后在已建立好的虚拟机上右键菜单->管理
->克隆
。
Figure 5: Hadoop-VMware-虚拟机克隆1
克隆选项分别是:克隆自虚拟机中的当前状态
-->创建完整克隆
-->虚拟机名称分别为node1
,node2
,node3
,虚拟机位置分别为D:\VMware\bigdata\node1
,D:\VMware\bigdata\node2
,D:\VMware\bigdata\node3
。
为了方便管理,我们可以在VMware资源管理栏添加一个文件夹叫大数据集群
,把node1,node2,node3三个虚拟机移入文件夹中。
Figure 6: Hadoop-VMware-虚拟机克隆2
克隆好3台虚拟机后,我们设置以下3台虚拟机的内存。我们计划使用node1作为master节点,运行更多功能,所以将其内存大小设置为4GB,其他为2GB。如下表:
节点 | CPU | 内存 |
---|---|---|
node1 | 1 core | 4GB |
node2 | 1 core | 2GB |
node3 | 1 core | 2GB |
下图中以node1为例,其他两个节点操作方法一样。
Figure 7: 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
同样的操作启动node2
和node3
,对应的名称为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
用户,或者hadoo
p登录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
集群化软件之间需要通过端口互相通讯,为了简单起见,我们直接关闭防火墙。
Linux有一个安全模块,叫SELinux,用以限制用户和程序的相关权限,来确保系统的安全稳定。在当前学习阶段,为了简单起见,我们也直接关闭SELinux功能。
时间同步
修改时区并配置自动时间同步。集群的同步非常重要,否则会出现混乱。时间同步是通过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台虚拟机关机(保存的更快),然后菜单栏上虚拟机
->快照
->拍摄快照
。就可拍摄快照进行备份了。
Figure 8: Hadoop-VMware-拍摄快照
至此,Hadoop平台的虚拟机设置已经完成。