一、整体规划

一主三从,整理如下:

主机名

IP

HDFS

YARN

hadoop

192.168.56.100

NameNode

ResourceManager

hadoop1

192.168.56.101

DataNode

NodeManager

hadoop3

192.168.56.102

DataNode

NodeManager

hadoop3

192.168.56.103

DataNode

NodeManager

二、集群搭建

1.修改主机hadoop1

首先进行网卡设置

将上文的hadoop1关机,在virtualbox界面选中hadoop1点击设置:

hadoop虚拟机停止 虚拟机搭建hadoop集群_hdfs

单击网络,设置网卡一为如下:

hadoop虚拟机停止 虚拟机搭建hadoop集群_xml_02

这样虚拟主机就可以通过本机连接外网。然后按照下图设置添加网卡2:

hadoop虚拟机停止 虚拟机搭建hadoop集群_Hadoop_03

然后启动hadoop1,在终端输入命令:

$ sudo gedit /etc/network/interfaces

编辑网络配置文件,添加如下代码:

# NAT interface
auto enp0s3
iface enp0s3 inet dhcp

#host only interface
auto enp0s8
iface enp0s8 inet static 
address         192.168.56.101
netmask         255.255.255.0
network         192.168.56.0
broadcast       192.168.56.255

这里的enp0s3和enp0s8是你自己的网卡名称,可能与我这里并不一样,可以通过ifconfig -a命令查看网卡。修改后的文件如下:

hadoop虚拟机停止 虚拟机搭建hadoop集群_Hadoop_04

然后点击保存并关闭。

编辑主机名

终端输入下面的命令:

$ sudo gedit /etc/hostname

修改文件如下:

hadoop虚拟机停止 虚拟机搭建hadoop集群_hadoop_05

保存后关闭。这样这台主机的主机名就是data1,接着设置hosts文件,在终端输入命令:

$ sudo gedit /etc/hosts

增加如下配置:

192.168.56.100  master
192.168.56.101  data1
192.168.56.102  data2
192.168.56.103  data3

修改后的问价如下:

hadoop虚拟机停止 虚拟机搭建hadoop集群_xml_06

保存后关闭。

修改hadoop配置文件

首先修改core-site.xml,在终端输入命令:

$ sudo gedit /usr/local/hadoop/hadoop-3.2.0/etc/hadoop/core-site.xml

将配置中的localhost改为master,修改后如下:

hadoop虚拟机停止 虚拟机搭建hadoop集群_xml_07

保存并关闭后修改yarn-site.yml,在终端输入命令:

$ sudo gedit /usr/local/hadoop/hadoop-3.2.0/etc/hadoop/yarn-site.xml

在文件中增加如下配置:

<property>
    <name>yarn.resourcemanager.resource-tracker.address</name>
    <value>master:8025</value>
</property>
<property>
    <name>yarn.resourcemanager.scheduler.address</name>
    <value>master:8030</value>
</property>
<property>
    <name>yarn.resourcemanager.address</name>
    <value>master:8050</value>
</property>

修改后的文件如下:

hadoop虚拟机停止 虚拟机搭建hadoop集群_Hadoop_08

保存并关闭后修改mapred-site.yml,在终端输入命令:

$ sudo gedit /usr/local/hadoop/hadoop-3.2.0/etc/hadoop/mapred-site.xml

增加如下配置:

<property>
    <name>mapred.job.tracker</name>
    <value>master:54311</value>
</property>

修改后文件如下:

hadoop虚拟机停止 虚拟机搭建hadoop集群_hdfs_09

编辑完成后保存并关闭。最后编辑hdfs-sites.xml,在终端输入命令:

$ sudo gedit /usr/local/hadoop/hadoop-3.2.0/etc/hadoop/hdfs-site.xml

删除下图红色框中的配置:

hadoop虚拟机停止 虚拟机搭建hadoop集群_hadoop_10

保存后关闭。这样一个slave节点配置完毕。

2.复制hadoop1为hadoop2、hadoop3、hadoop

在VirtualBox中右键虚拟机hadoop1,点击复制,MAC地址设定选择‘为所有网卡重新生成MAC地址’,点击下一步:

hadoop虚拟机停止 虚拟机搭建hadoop集群_Hadoop_11

选择完全复制,然后点击复制即开始复制:

hadoop虚拟机停止 虚拟机搭建hadoop集群_hadoop虚拟机停止_12

复制的过程大概需要几分钟。

复制完成后,将ip分别设为192.168.56.102 ,192.168.56.103,192.168.56.100,主机名设为data2,data3,master。hadoop2、hadoop3就无需另外配置了。master节点主机hadoop的配置按照下面的步骤进行。

修改hdfs-sites.xml,在终端输入命令:

$ sudo gedit /usr/local/hadoop/hadoop-3.2.0/etc/hadoop/hdfs-site.xml

删除下红框中的配置:

hadoop虚拟机停止 虚拟机搭建hadoop集群_hdfs_13

保存后关闭。新建masters文件,在终端输入命令:

$ sudo gedit /usr/local/hadoop/hadoop-3.2.0/etc/hadoop/masters

编辑如下:

hadoop虚拟机停止 虚拟机搭建hadoop集群_hdfs_14

保存后关闭。新建slaves文件,在终端输入命令:

$ sudo gedit /usr/local/hadoop/hadoop-3.2.0/etc/hadoop/slaves

编辑如下

hadoop虚拟机停止 虚拟机搭建hadoop集群_xml_15

保存后关闭。至此,master节点和三个slave节点配置完成。

3.hadoop集群启动

先将四台虚拟机启动,在master上启动终端,通过ssh连接到data1:

$ ssh data1

先将之前的数据全部清除,执行下面的命令:

$ sudo rm -rf ls /usr/local/hadoop/hadoop_data/hdfs

然后新建目录:

$ mkdir -p ls /usr/local/hadoop/hadoop_data/hdfs/datanode

设置目录的拥有者:

$ sudo chown -R zhangc:zhangc /usr/local/hadoop

退出data1:

$ exit

以同样的方式将data2、data3的数据也都重置。然后在master机器上删除之前的HDFS目录:

$ sudo rm -rf ls /usr/local/hadoop/hadoop_data/hdfs

创建namenode目录:

$ mkdir -p ls /usr/local/hadoop/hadoop_data/hdfs/namenode

设置目录的拥有者:

$ sudo chown -R zhangc:zhangc /usr/local/hadoop

格式化namenode:

$ hadoop namenode -format

分别启动master和data1、data2、data3:

$ start-all.sh

在四台机器上分别查看当前进程:

$ jps

访问http://master:8088,点击nodes查看当前节点

hadoop虚拟机停止 虚拟机搭建hadoop集群_Hadoop_16

访问http://master:9870,点击datanodes可查看datanodes信息:

hadoop虚拟机停止 虚拟机搭建hadoop集群_xml_17

如此,hadoop集群搭建完毕。