购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

2.7 搭建Hadoop分布式集群

为什么要搭建Hadoop分布式集群?

接下来对Hadoop集群的搭建进行详细讲解。

2.7.1 搭建思路

本例的搭建思路是,在节点centos01中安装Hadoop并修改配置文件,然后将配置好的Hadoop安装文件远程复制到集群中的其他节点。集群中各节点的角色分配如表2-1所示。

表2-1 Hadoop集群的角色分配

表2-1中的角色指的是Hadoop集群中各节点所启动的守护进程,其中的NameNode、DataNode和SecondaryNameNode是HDFS集群所启动的进程;ResourceManager和NodeManager是YARN集群所启动的进程。

2.7.2 搭建Hadoop集群

Hadoop集群搭建的操作步骤如下。

1.上传Hadoop并解压

在centos01节点中,将Hadoop安装文件hadoop-3.3.1.tar.gz上传到/opt/softwares/目录,然后进入该目录,解压安装文件到/opt/modules/,命令如下:

     $ cd /opt/softwares/
     $ tar -zxf hadoop-3.3.1.tar.gz -C /opt/modules/

运行后屏幕显示界面如图2-48所示。

图2-48 解压Hadoop安装文件

2.配置环境变量

环境变量的配置有利于快速执行Hadoop命令以及让Hadoop能够识别系统里安装的JDK,便于正常启动和运行Hadoop。

1)配置系统环境变量

为了可以方便地在任意目录下执行Hadoop命令,而不需要进入Hadoop安装目录,需要配置Hadoop系统环境变量。此处只需要配置centos01节点即可。

01 执行以下命令,修改文件/etc/profile:

     $ sudo vi /etc/profile

02 在文件末尾加入以下内容:

     export HADOOP_HOME=/opt/modules/hadoop-3.3.1
     export PATH=$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$PATH

03 执行以下命令,刷新profile文件,使修改生效。

     $ source /etc/profile

04 执行“hadoop”命令,若能成功输出以下返回信息,则说明Hadoop系统变量配置成功:

2)配置Hadoop环境变量

Hadoop所有的配置文件都存在于安装目录下的etc/hadoop中,进入该目录,修改以下配置文件:

     hadoop-env.sh
     mapred-env.sh
     yarn-env.sh

在三个文件中都分别加入JAVA_HOME环境变量,命令如下:

     export JAVA_HOME=/opt/modules/jdk1.8.0_144
3.配置HDFS

01 修改配置文件core-site.xml,加入以下内容:

上述配置属性解析如下:

02 修改配置文件hdfs-site.xml,加入以下内容:

上述配置属性解析如下:

03 修改workers文件,配置DataNode节点。

workers文件原本无任何内容,需要将所有DataNode节点的主机名都添加进去,每个主机名占一整行(注意不要有空格)。本例中,DataNode为三个节点,配置信息如下:

     centos01
     centos02
     centos03
4.配置YARN

01 修改mapred-site.xml文件,添加以下内容,指定MapReduce任务执行框架为YARN,并配置MapReduce任务的环境变量:

若不配置上述环境变量,在执行MapReduce任务时可能会报“找不到或无法加载主类org.apache.hadoop.mapreduce.v2.app.MRAppMaster”等相关错误。

02 修改yarn-site.xml文件,添加以下内容:

上述配置属性解析如下:

也可以继续在yarn-site.xml文件中添加以下属性内容,指定ResourceManager所在的节点,此处指定ResourceManager运行在centos01节点:

若不添加上述内容,ResourceManager将默认在执行YARN启动命令(start-yarn.sh)的节点上启动。

5.复制Hadoop到其他主机

在centos01节点上,将配置好的整个Hadoop安装目录复制到其他节点(centos02和centos03),命令如下:

     $ scp -r hadoop-3.3.1/ hadoop@centos02:/opt/modules/
     $ scp -r hadoop-3.3.1/ hadoop@centos03:/opt/modules/
6.格式化NameNode

启动Hadoop之前,需要先格式化NameNode。格式化NameNode可以初始化HDFS文件系统的一些目录和文件。在centos01节点上执行以下命令,进行格式化操作:

     $ hdfs namenode -format

若能输出以下信息,说明格式化成功:

     Storage directory /opt/modules/hadoop-3.3.1/tmp/dfs/name has been successfully
formatted.

格式化成功后,会在当前节点的Hadoop安装目录中生成tmp/dfs/name/current目录,该目录中生成了用于存储HDFS文件系统元数据信息的文件fsimage,如图2-49所示。

注意 必须在NameNode所在节点上进行格式化操作。

图2-49 格式化NameNode后生成的相关文件

7.启动Hadoop

在centos01节点上执行以下命令,启动Hadoop集群:

     $ start-all.sh

也可以执行start-dfs.sh和start-yarn.sh分别启动HDFS集群和YARN集群。

Hadoop安装目录下的sbin目录中存放了很多启动脚本,若由于内存等原因而使集群中的某个守护进程宕掉了,那么可以执行该目录中的脚本对相应的守护进程进行启动。常用的启动和停止脚本及其说明如表2-2所示。

表2-2 Hadoop启动和停止脚本及其说明

注意

① 若不配置SecondaryNameNode所在的节点,则默认在执行HDFS启动命令(start-dfs.sh)的节点上启动。

② 若不配置ResourceManager所在的节点,则默认在执行YARN启动命令(start-yarn.sh)的节点上启动;若配置了ResourceManager所在的节点,则必须在所配置的节点上启动YARN,否则在其他节点上启动时将抛出异常。

③ NodeManager无须配置,会与DataNode在同一个节点上,以获取任务执行时的数据本地性优势,即有DataNode的节点就会有NodeManager。

8.查看各节点启动进程

集群启动成功后,分别在各个节点上执行jps命令,查看启动的Java进程。各节点的Java进程如下:

(1)centos01节点的进程:

     $ jps
     13524 SecondaryNameNode
     13813 NodeManager
     13351 DataNode
     13208 NameNode
     13688 ResourceManager
     14091 Jps

(2)centos02节点的进程:

     $ jps
     7585 NodeManager
     7477 DataNode
     7789 Jps

(3)centos03节点的进程:

     $ jps
     8308 Jps
     8104 NodeManager
     7996 DataNode

若某个进程启动失败,则可查看进程所在节点的Hadoop安装主目录下的logs中生成的该进程的日志文件(每个进程都会有相应的日志文件),该文件中会记录相关错误信息。

9.测试HDFS

1)上传文件到HDFS集群

在centos01节点中执行以下命令,在HDFS根目录创建文件夹input,并将Hadoop安装目录下的文件README.txt上传到新建的input文件夹中:

     $ hdfs dfs -mkdir /input
     $ hdfs dfs -put /opt/modules/hadoop-3.3.1/README.txt /input

2)浏览器访问HDFS集群文件

Hadoop集群启动后,可以通过浏览器Web界面查看HDFS集群的状态信息,访问IP为NameNode所在服务器的IP地址,访问端口默认为9870。例如,本书中NameNode部署在节点centos01上,IP地址为192.168.170.133,则HDFS Web界面访问地址为http://192.168.170.133: 9870。若本地Windows系统的hosts文件中配置了域名IP映射,且域名为centos01,则可以访问http://centos01: 9870,如图2-50所示。

从图2-50中可以看出,HDFS的Web界面首页中包含了很多文件系统基本信息,例如系统启动时间、Hadoop的版本号、Hadoop的源码编译时间、集群ID等,在【Summary】一栏中还包括了HDFS磁盘存储空间、已使用空间、剩余空间等信息。

HDFS Web界面还提供了浏览文件系统的功能,单击导航栏的【Utilities】按钮,在下拉菜单中选择【Browse the file system】选项,即可看到HDFS系统的文件目录结构,默认显示根目录下的所有目录和文件,并且能够显示目录和文件的权限、所有者、文件大小、最近更新时间、副本数等信息。如果需要查看其他目录,那么可以在上方的文本框中输入需要查看的目录路径,按回车键即可进行查询,如图2-51所示。

图2-50 HDFS Web主界面

图2-51 HDFS Web界面文件浏览

此外,还可以从HDFS Web界面中直接下载文件。单击文件列表中需要下载的文件名超链接,在弹出的窗口中单击【Download】按钮,即可将文件下载到本地,如图2-52所示。

图2-52 HDFS Web界面文件下载

10.测试MapReduce

在centos01节点中执行以下命令,运行Hadoop自带的MapReduce单词计数程序,统计/input文件夹中的所有文件的单词数量:

     $ hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-3.3.1.jar wordcount
/input /output

程序执行过程中,控制台输出的部分日志信息如图2-53所示。

图2-53 MapReduce任务执行过程

可以看到,Map阶段和Reduce阶段的执行进度都为100%,说明程序执行成功。

若Map阶段始终没有开始,此时程序可能一直处于ACCEPTED状态,而正常应该是RUNNING状态(可以在YARN ResourceManager的Web界面访问http://centos01:8088查看程序的运行状态),说明程序运行出现了问题,可以查看NodeManager节点的日志文件,例如在centos03节点的Hadoop安装目录执行以下命令,查询NodeManager日志信息:

     $ more logs/hadoop-hadoop-nodemanager-centos03.log

若报以下错误:

说明ResourceManager的8031端口没有连接上,且连接地址(0.0.0.0)也不正确,此时可以修改yarn-site.xml配置文件,添加以下内容,指定ResourceManager所在的主机名:

修改完配置文件后,将它同步到其他节点,重新启动YARN集群。删除HDFS中生成的/output目录(MapReduce会自动创建该目录,若不删除,那么执行上述MapReduce单词计数程序时会抛出异常):

     $ hdfs dfs -rm -r /output

再次运行Hadoop自带的MapReduce单词计数程序,统计单词数量。

统计完成后,执行以下命令,查看MapReduce执行结果:

     $ hdfs dfs -cat /output/*

如果以上测试没有问题,说明Hadoop集群搭建成功。 ovtKVAEAIO75TzhcxtEx81ywDmBdCEtUj+fw5BVcUbB1Ic4d2AiX67BMyOcth6S4

点击中间区域
呼出菜单
上一章
目录
下一章
×