任务目的

  • 掌握启动 HDFS 集群和 YARN 集群的方式
  • 进一步熟悉 HDFS 和 YARN 的 Web UI 界面
  • 熟悉执行 MapReduce 程序的流程

任务清单

  • 任务1:启动 Hadoop 集群
  • 任务2:查看进程启动情况
  • 任务3:WordCount 单词统计案例
  • 任务4:PI 案例

详细任务步骤

任务1:启动 Hadoop 集群

  在本平台上,虽然已经为大家搭建好了 Hadoop 伪分布式集群,但是并没有启动,所以在使用集群之前,需要依次启动 HDFS 集群和 YARN 集群,这里我们使用脚本一键启动的方式启动。命令如下所示:

  (1)HDFS集群

  在本机上使用如下方式一键启动HDFS集群:

start-dfs.sh

  效果图如下所示:

2.4 Hadoop集群初体验_hadoop

图1

  (2)YARN集群

  在本机上使用如下方式一键启动YARN集群:

start-yarn.sh

  效果图如下所示:

2.4 Hadoop集群初体验_mapreduce_02

图2

任务2:查看进程启动情况

  在本机上执行 ​​jps​​ 命令,在打印结果中会看到 6 个进程,分别是 NodeManager、SecondaryNameNode 、ResourceManager、Jps、DataNode 和 NameNode,如果出现了这 6 个进程表示进程启动成功。如下图所示:

2.4 Hadoop集群初体验_mapreduce_03

图3

任务3:WordCount 单词统计案例

  (1)首先,通过本机的浏览器访问 http://localhost:50070 或 ​​http://本机IP地址:50070​​ 打开 HDFS 的 Web UI 界面。其次,选择 Utilities——》Browse the file system

2.4 Hadoop集群初体验_mapreduce_04

图4

  (2)在本机的/root目录下,新建一个名为 data 的文件夹,然后再执行 “vim word.txt” 指令新建一个 word.txt 文本文件,并编写一些单词内容,如下图所示:

2.4 Hadoop集群初体验_mapreduce_05

图5

  (3)接着,在 HDFS 上创建 /wordcount/input 目录,并将 word.txt 文件上传至该目录下,具体指令如下所示:

hadoop fs -mkdir -p /wordcount/input
hadoop fs -put /root/data/word.txt /wordcount/input

  效果如下所示:

2.4 Hadoop集群初体验_hadoop_06

图6

  上述指令是 Hadoop 提供的进行文件系统操作的 HDFS Shell 相关指令,此处不必深究具体使用,在下一章会进行详细说明。

  执行完上述指令后,再次查看 HDFS 的 Web UI 界面,会发现 /wordcount/input 目录创建成功并上传了指定的 word.txt 文件,如下图所示:

2.4 Hadoop集群初体验_hdfs_07

图7

  (4)进入$HADOOP_HOME/share/hadoop/mapreduce/ 目录下,使用​​ll​​指令查看文件夹内容,如下图所示:

2.4 Hadoop集群初体验_hdfs_08

图8

  从上图可以看出,在该文件夹下自带了很多 Hadoop 的 MapReduce 示例程序。其中,hadoop-mapreduce-examples-2.7.7.jar 包中包含了计算单词个数计算PI值等功能的程序。

  因此,这里可以直接使用 hadoop-mapreduce-examples-2.7.7.jar 示例包,对 HDFS 上的 word.txt 文件进行单词统计,在 jar 包位置执行如下命令:

hadoop jar hadoop-mapreduce-examples-2.7.7.jar wordcount /wordcount/input/word.txt /wordcount/output

  上述指令中:

  • hadoop jar hadoop-mapreduce-examples-2.7.7.jar :表示执行一个Hadoop的jar包程序;
  • wordcount:表示执行jar包程序中的单词统计功能;
  • /wordcount/input/word.txt:表示进行单词统计的HDFS文件路径;
  • /wordcount/output:表示进行单词统计后的输出HDFS结果路径。

  执行完上述指令后,示例包中的 MapReduce 程序开始执行,效果图如下所示:

2.4 Hadoop集群初体验_hadoop_09

图9

  也可以通过YARN集群的Web UI界面查看运行状态,在本机的浏览器上访问 http://localhost:8088 或 ​​http://本机IP地址:8088​​ 。效果图如下所示:

2.4 Hadoop集群初体验_mapreduce_10

图10

  (5)在“单词统计”示例程序执行成功后,再次刷新并查看 HDFS 的 Web UI 界面,效果如下图所示:

2.4 Hadoop集群初体验_hadoop_11

图11

  从上图可以看出,MapReduce 程序执行成功后,在 HDFS 上自动创建了指定的输出目录 /wordcount/output,并且输出了 _SUCCESS 和 part-r-00000 结果文件。其中, _SUCCESS 文件用于表示此次任务成功执行的标识,而 part-r-00000 表示单词统计的结果。

  (6)接着,我们使用 HDFS Shell 的相关指令查看 part-r-00000 的内容,具体指令如下所示:

hadoop fs -cat /wordcount/output/part-r-00000

  效果如下图所示:

2.4 Hadoop集群初体验_hadoop_12

图12

  从上图可以看出,MapReduce 示例程序成功统计出了 /wordcount/input/word.txt 文本中的单词数量,并进行了结果输出。

任务4:PI 案例

  进入 $HADOOP_HOME/share/hadoop/mapreduce/ 目录下,使用如下指令计算 PI 值:

hadoop jar hadoop-mapreduce-examples-2.7.7.jar pi 5 5

  上述指令中:

  • hadoop jar hadoop-mapreduce-examples-2.7.7.jar :表示执行一个Hadoop的jar包程序;
  • pi:表示执行jar包程序中计算PI值的功能;
  • 第1个5:表示运行10次map任务;
  • 第2个5:表示每个map任务,投掷的次数。

  执行完上述指令后,示例包中的 MapReduce 程序开始执行,效果图如下所示:

2.4 Hadoop集群初体验_hdfs_13

图13

  执行结果如下所示:

2.4 Hadoop集群初体验_hdfs_14

图14

  从上图可以看出,MapReduce 程序执行成功后,计算出了 PI 值。但是我们发现其计算结果与实际 PI 值有一定的偏差,若是想要计算更精切的 PI 值,我们可以将执行命令中的2个数值增大:

hadoop jar hadoop-mapreduce-examples-2.7.7.jar pi 100 10000

  执行结果:

2.4 Hadoop集群初体验_mapreduce_15

图15

  从结果可以验证,给出的数值越大,计算的 PI 值越精确,当然程序运行时间也会越长。若是想要提前结束程序,可以使用 ​​ctrl+c​​ 终止当前程序。