环境信息

1. 硬件:

内存ddr3 4G及以上的x86架构主机一部
系统环境:windows

2. 软件:

virtualbox
3. 其他: 无

步骤与方法

1. 安装Hadoop并进行集群搭建

1) 设置集群前的准备工作

设置网络

设置两个网卡:

网卡一,“仅主机网络”,连接主从节点与主机。选中虚拟机,点击设置。进入虚拟机设置界面,点击网络,选择网卡1,选择连接方式——仅主机网络。

hadoop内外网 hadoop网络连接_IP

网卡二,“桥接连接”,连接主机和主节点、从节点与外部网络。选择网卡2,勾选启用网络连接,选择连接方式——桥接连接,点击高级,在下拉内容的选择混杂模式——全部允许。完成点击ok。

hadoop内外网 hadoop网络连接_hadoop_02

修改配置文件,设置服务器master,重命名虚拟机。

进入设置,选择常规,选择基本,在名称中输入主节点名称,点击ok

修改IP地址(修改后不能上网)。

(1) 使用ifconfig命令查看IP端口名称与当前IP地址,掩码网关,广播地址。

hadoop内外网 hadoop网络连接_hadoop内外网_03

(2) 在终端输入命令,编写文件(#后面的文字是注释,需要去掉)。
sudo gedit /etc/netplan/01-network-manager-all.yaml

# Let NetworkManager manage all devices on this system
network:#网络
  version: 2#版本
  renderer: NetworkManager#渲染器
  ethernets:#以太网
    enp0s3:
      addresses: [192.168.1.10/24]
      dhcp4: no
      dhcp6: no
      gateway4: 192.168.1.1#网关

(3) 输入命令,使刚才的配置生效。

sudo netplan apply

(4) 再使用ifconfig命令查看IP地址是否修改成功。

Ifconfig

hadoop内外网 hadoop网络连接_hdfs_04

修改主机名

(1) 使用hostname命令查看主机名。

(2) 修改主机名输入命令,将文件内容修改为主机名(master)。

sudo gedit /etc/hostname

(3) 需要重启生效。

hadoop内外网 hadoop网络连接_hadoop内外网_05

配置.xml文件

直接在home/linlin/hadoop/hadoop—/etc/hadoop/路径下打开终端。

hadoop内外网 hadoop网络连接_hdfs_06

删除datanode存储目录,将IP地址改为主机名。

hadoop内外网 hadoop网络连接_hadoop内外网_07

core-site.xml

sudo gedit core-site.xml将IP地址改为主机名。

hadoop内外网 hadoop网络连接_hadoop内外网_08

yarn-site.xml将IP地址改为主机名。

sudo gedit yarn-site.xml

hadoop内外网 hadoop网络连接_大数据_09

mapred-site.xml

sudo gedit mapred-site.xml修改内容(设置监控Map与Reduce程序的JobTracker任务分配情况,以及TaskTracker任务运行情况)。

hadoop内外网 hadoop网络连接_IP_10

配置节点文件

修改配置文件/etc/hosts,修改主节点、增加从节点的IP地址和主机名。

sudo gedit /etc/hosts

hadoop内外网 hadoop网络连接_hdfs_11

修改masters文件

注意使用了相对路径(原本不存在这个文件,参考文档:Apache Hadoop 3.2.3 – Hadoop Cluster Setup,通过root用户创建)。

sudo gedit ./hadoop/hadoop—/etc/hadoop/masters

添加主节点主机名

hadoop内外网 hadoop网络连接_IP_12

修改workers文件

hadoop3使用workers文件列出从节点,hadoop2使用slaves文件。

sudo gedit ./hadoop/hadoop—/etc/hadoop/workers

hadoop内外网 hadoop网络连接_IP_13

防止启动出错
将/hadoop—路径下的dataNode_1_dir文件夹和logs文件夹删除(选中按delete)。
建议将hadoop—/hadoop_data/hdfs/datanode和hadoop—/hadoop_data/hdfs/namenode路径下的current文件夹删除。否则可能缺少DataNode进程。

复制虚拟机

将服务器master复制出slave1,slave2,省略操作。复制虚拟机之前,关闭虚拟机。

选中虚拟机,右键复制,进入新虚拟机名称和保存路径界面,输入新虚拟机名称,在下拉框Mac地址设定,选择包含所有网卡的Mac地址,单击下一步。进入副本类型界面,默认选中完全复制,单击复制。弹出进度条,等待复制完成,virtualbox出现新的虚拟机(同样复制下一个虚拟机)。

hadoop内外网 hadoop网络连接_hadoop_14

2) 设置服务器

与服务器master操作相同(同样方式操作slave1,slave2)。

修改IP地址

修改addresses分别为192.168.1.1(192.168.1.2)。

(1) 使用ifconfig命令查看IP端口名称与当前IP地址,掩码网关,广播地址。

(2) 在终端输入命令,编写文件(#后面的文字是注释,需要去掉)。

sudo gedit /etc/netplan/01-network-manager-all.yaml

(3) 输入命令,使刚才的配置生效。

sudo netplan apply

(4) 再使用ifconfig命令查看IP地址是否修改成功。

修改主机名

修改slave1(slave2)。

(1) 使用hostname命令查看主机名。

(2) 修改主机名输入命令,将文件内容修改为主机名。

sudo gedit /etc/hostname

(3) 需要重启生效。

配置hdfs-site.xml

直接在主目录下输入命令,打开文件:

sudo gedit ./hadoop/hadoop—/etc/hadoop/hdfs-site.xml

将之前保留的namenode存储目录替换为datanode存储目录。

hadoop内外网 hadoop网络连接_大数据_15

ssh无密码连接登录

(1) 启动全部服务器master,slave1,slave2。

hadoop内外网 hadoop网络连接_hdfs_16

(2) 在master终端输入连接命令,提示输入yes,发现命令提示符会发生变化,即成功连接。

ssh slave1

ssh slave2

(3) 输入命令关闭ssh,发现命令提示符变回,即中断连接。

Exit

hadoop内外网 hadoop网络连接_大数据_17

格式化文件系统

部署HDFS文件系统,只需要在master上格式化,输入命令,弹出提示输入y,出现successfully则成功格式化。

hdfs namenode -format

hadoop内外网 hadoop网络连接_hdfs_18

3) 启动和关闭Hadoop集群

启动hadoop命令(分为启动HDFS命令start.dfs.sh和启动YARN命令start.yarn.sh)(首次启动需要格式化,下次启动无需格式化)。

start-all.sh

检验hadoop的全部守护进程(需要分别用ssh连接节点服务器,查看各个从节点的守护进程ssh slave1/ssh slave2、exit)。

jps

master出现守护进程:NameNode;SecondaryNameNode;ResourceManger;jps

slave1出现守护进程:NodeManager;DataNode;jps

slave2出现守护进程:NodeManager;DataNode;jps

hadoop内外网 hadoop网络连接_hadoop_19

关闭hadoop命令(分为关闭HDFS命令stop.dfs.sh和关闭YARN命令stop.yarn.sh)。
stop-all.sh

4) 查看Hadoop集群的基本信息

进入网址https://master:50070查看HDFS监控页面。

hadoop内外网 hadoop网络连接_hdfs_20


hadoop内外网 hadoop网络连接_IP_21


进入网址https://master:8088查看YARN监控页面。

hadoop内外网 hadoop网络连接_hadoop_22

5) 在Hadoop集群中运行程序

运行自带的mapreduce程序,计算圆周率的java程序包(jar包——计算圆周率)

位置:hadoop—/share/hadoop/mapreduce

文件名:hadoop-mapreduce-examples—.jar

hadoop内外网 hadoop网络连接_大数据_23

在终端输入命令,其中pi是类名,第一个10表示map次数,第二个10表示随机生成点的次数

hadoop jar ./hadoop—/share/hadoop/mapreduce/hadoop-mapreduce-examples—.jar pi 10 10

hadoop内外网 hadoop网络连接_hadoop内外网_24

最后两行会显示计算时间、计算结果

hadoop内外网 hadoop网络连接_hadoop_25

总结验证hadoop启动成功的三种方式:jps查看进程;web页面验证;执行MapReduce程序。

2. HDFS常用命令使用

  1. 创建与查看HDFS目录
  2. 本地计算机和HDFS之间的文件复制
  3. 复制与删除HDFS文件
  4. 查看HDFS文件内容

    Linux本机和HDFS之间文件传输
    即虚拟机的linux系统的文件与hadoop的HDFS分布式系统的文件之间的文件共享

上传文件(linux—>hdfs)

hadoop fs -copyFromLocal [linux] [hdfs]

hadoop fs -put [linux] [hdfs]

可以进行文件重命名。

hdfs没有写文件名,默认为原来的命名。

linux上传的文件必须存在。

hdfs已经存在文件,不会上传,使用下面选项,强制上传。

-f选项,强制复制(存在则替换文件)。

可以上传多个文件。

可以上传目录。

-put命令,还可以接收输入stdin。

将指定内容显示在屏幕上:echo [内容]

通过"|"(管道符pipe)将屏幕的内容传递存入文件(文件不能已经存在)

echo abc | hadoop fs -put - /test/echoin.txt

ls ./hadoop—/etc/hadoop | hadoop fs -put - /test/hadoopetc.txt

文件下载(hdfs—>linux)

hadoop fs -copyToLocal [hdfs] [linux]

hadoop fs -get [hdfs] [linux]

可以进行文件重命名。

hdfs下载的文件必须存在。

可以下载目录。

hadoop内外网 hadoop网络连接_hdfs_26


hadoop内外网 hadoop网络连接_hdfs_27

出现的问题及解决方法

1、网络配置问题

出现问题:编辑/etc/network/interfaces文件信息,再执行下面命令使配置生效,结果找不到命令。

linlin@master:~$ sudo /etc/init.d/networking restart

sudo: /etc/init.d/networking:找不到命令。

hadoop内外网 hadoop网络连接_hdfs_28

原因说明:/etc/network路径下原本并没有interfaces文件,/etc/netplan路径下有*.yaml文件。Ubuntu20.04的配置网络不是修改interfaces文件,而是需要修改*.yaml文件。
解决步骤: 使用命令ifconfig查看IP端口名称,当前IP地址,掩码,广播地址;在终端输入命令,编写文件(#后面的文字是注释,需要去掉)。
sudo gedit /etc/netplan/01-network-manager-all.yaml

# Let NetworkManager manage all devices on this system
network:#网络
  version: 2#版本
  renderer: NetworkManager#渲染器
  ethernets:#以太网
    enp0s3:
      addresses: [192.168.1.10/24]
      dhcp4: no
      dhcp6: no
      gateway4: 192.168.1.1#网关
      nameservers:#域名服务器
        addresses: [192.168.1.1,114.114.114.114]

输入命令,使刚才的配置生效:sudo netplan apply。

再次输入命令,查看修改后的IP地址(对比下面的红色标记),修改成功!

hadoop内外网 hadoop网络连接_hadoop内外网_29

2、重启后,网卡消失不见

问题说明:网络配置中修改了interfaces文件,结果端口信息都看不到了(本来有enp0s3端口)

hadoop内外网 hadoop网络连接_hdfs_30

解决方法:

在/etc/network的路径进入终端输入命令,删除文件(建议):rm interfaces。或者清空修改的interfaces文件:sudo gedit /etc/network/interfaces。

输入下行的命令,使配置生效(sudo /etc/init.d/networking restart这条命令无效):sudo /etc/init.d/network-manager restart。

再输入命令ifconfig,就可以看到网卡回来了(下图中红色标记为输入的命令)。

hadoop内外网 hadoop网络连接_hadoop内外网_31

3、虚拟机不能上网

原因说明:当使用网络地址转换时,为10.0.2.15,公网下可以上网;当使用仅主机网络时,为192.168.56.101,为私人网段,不能上网。修改IP地址为192.168.1.10,依然为私人网段,不能上网。
解决方法:虚拟机未启动的状态下,设置网卡一连接方式为网络地址转换(NAT),其它网卡取消勾选启用网络连接,点击ok。

4、路径错误

出现问题:编写masters文件,出现找不到文件,检查输入位置是否正确并重试。

原因说明:混淆了绝对路径和相对路径,在主目录/home/linlin下打开终端,如下图。

hadoop内外网 hadoop网络连接_IP_32

第一条绝对路径正确,根目录/下/etc/hosts文件确实存在。
第二条绝对路径错误,根目录/下不存在/hadoop…/masters文件。
第一条相对路径正确,主目录/home/linlin存在/hadoop…/masters文件。
第一条相对路径正确,主目录/home/linlin存在/hadoop…/masters文件,省略了./。

4、slave缺少datanode进程

出现问题:配置好所有节点后,启动hadoop,发现其中slave服务器缺少datanode进程。查看web页面,hdfs页面LiveNode节点数为0,yarn页面正常可以查看node信息。

原因说明:之前配置hadoop时,创建和产生的临时文件:

file:///home/linlin/hadoop/hadoop-3.2.3/dataNode_1_dir

file:///home/linlin/hadoop/hadoop-3.2.3/logs

file:///home/linlin/hadoop/hadoop-3.2.3/hadoop_data/hdfs/datanode

file:///home/linlin/hadoop/hadoop-3.2.3/hadoop_data/hdfs/namenode

这些路径下的/dfs/namesecondary/current/VERSION文件或者/current/VERSION文件与进程的节点存储目录有关。正常的集群应该是:master上只有namenode临时文件,slave上只有datanode临时文件。两个目录的临时文件信息应该通过什么关联,对比文件发现:

hadoop内外网 hadoop网络连接_hadoop_33

格式化namenode文件前后namenode文件中clusterID发生变化,所以与clusterID有关,与layoutVersion这一项无关。

解决方法一:格式化namenode,将master服务器的namenode路径下的临时文件/current/VERSION的clusterID与slave服务器的datenode路径下临时文件/current/VERSION的clusterID改为一致。启动hadoop。

解决方法二:删除dataNode_1_dir和logs文件夹,删除节点存储目录的current文件夹,格式化namenode,启动hadoop。

正常的hadoop进程:

hadoop内外网 hadoop网络连接_hdfs_34

结果、结果分析

1、 安装Hadoop完成

2、集群搭建成功

hadoop内外网 hadoop网络连接_hadoop内外网_35

3、练习了HDFS常用命令

hadoop内外网 hadoop网络连接_IP_36

实验成功完成。

心得体会

随着计算机软硬件技术的飞速发展,计算机的功能越来越强大,使用的范围也越来越广泛,计算机进入家庭已经成为一种世界性的潮流。学习Hadoop大数据处理与分析让我们快速、全面地了解虚拟机的各种知识,加强了我们的实践动手能力和进一步了解理论知识,通过自己动手搭建集群环境,既可以增长知识,又增添无穷的乐趣。虽然时间不是很长,但是我受益匪浅,这次实验,让我们对虚拟机有了更深的了解。

一个完美的集群是很需要花时间和心思研究它的每一个细节的,在今后生活和学习过程中,继续坚持对问题的观察和研究,并不断把研究所得用以指导自己的行为实践,以争取自己思想的上进和人格的完善,将来要在有用的基础上做一个出色的人。