CentOS6.8下Hadoop2.7.2怎么运行自带的wordcount程序

1  准备工作

1.1  创建输入输出路径

首先在hdfs中创建数据目录,用来指定运行wordcount程序的输入输出路径。Hadoop命令在hadoop文件夹下的bin目录下,可通过如下命令查看:

命令:ll  /usr/local/hadoop/bin

查看结果如图1所示:

hadoop 3 wordcount运行 运行hadoop自带的wordcount_hadoop

图1  查找hadoop命令

(1)创建文件上传目录

1)首先进入到hadoop文件夹下(命令:cd  /usr/local/hadoop);

2)创建目录“/data/wordcount”,用来存放hadoop自带的wordcount例子的数据文件。

命令:bin/hadoop  fs  -mkdir -p  /data/wordcount   (创建上传文件目录)

命令:bin/hadoop  fs  -ls /   (查看创建的文件目录)

命令操作结果如图2所示:

hadoop 3 wordcount运行 运行hadoop自带的wordcount_上传_02

图2  创建文件上传目录

(2)创建结果输出目录

1)创建目录“/output”,用来存放运行Mapreduce任务后输出的结果文件。

命令:bin/hadoop  fs  -mkdir -p  /output/ (创建输出结果文件存放目录)

命令:bin/hadoop  fs  -ls /   (查看创建的文件目录)

命令操作结果如图3所示:

hadoop 3 wordcount运行 运行hadoop自带的wordcount_上传_03

图3  创建结果输出目录

1.2  创建本地输入文件

命令: sudo  vi  /usr/inputword

输入文件内容,如图4所示:

hadoop 3 wordcount运行 运行hadoop自带的wordcount_hadoop_04

图4  创建本地输入文件

文件创建完成之后可通过命令“cat  /usr/inputword”查看文件内容,如图5所示:

hadoop 3 wordcount运行 运行hadoop自带的wordcount_wordCount_05

图5  查看本地文件内容

2  上传文件

(1)将上述创建的本地文件上传到HDFS中。

命令:bin/hadoop  fs  –put /usr/inputword  /data/wordcount/

注意:当需要多次执行wordcount程序时,如果不需要保留前一次上传到/data/wordcount/目录下的本地文件inputword,可将其删除,然后直接修改本地文件inputword里面的内容,再重新上传到/data/wordcount/目录下。删除上传到/data/wordcount/目录下的本地文件inputword文件的命令为:

bin/hadoop  fs  –rm /data/wordcount/inputword

如果需要保留每次执行时上传到/data/wordcount/目录下的本地文件,可以重新创建新的本地文件,只要保证每次创建的本地文件名称不相同即可,然后将不同名的本地文件重新上传到HDFS中。

(2)完成上传后可查看文件情况

命令:bin/hadoop  fs  -ls  /data/wordcount

(3)还可查看上传到HDFS中的文件的内容

命令:bin/hadoop  fs  -text /data/wordcount/inputword

执行结果如图6所示:

hadoop 3 wordcount运行 运行hadoop自带的wordcount_上传_06

图6  上传文件执行结果

3  运行wordcount例子

3.1  找到examples例子

运行Hadoop自带的wordcount首先需要找到examples例子(hadoop-mapreduce-examples-2.7.2.jar),该例子位于Hadoop文件夹下的“/share/hadoop/mapreduce”目录下。可通过如下命令查看:

(1)直接在根目录下查看:

命令:ls /usr/local/hadoop/share/hadoop/mapreduce

查看结果如图7所示:

hadoop 3 wordcount运行 运行hadoop自带的wordcount_wordCount_07

图7  在根目录下查找examples

(2)进入Hadoop文件目录下查看(我的Hadoop文件夹在“/usr/local”目录下):

命令:1)cd  /usr/local/hadoop

2)ls share/hadoop/mapreduce

查询结果如图8所示:

hadoop 3 wordcount运行 运行hadoop自带的wordcount_hadoop_08

图8  在Hadoop文件目录下查找examples

3.2  运行hadoop自带的wordcount程序

命令:

bin/hadoop jar /usr/local/hadoop/share/hadoop/mapreduce/

hadoop-mapreduce-examples-2.7.2.jar  wordcount  /data/wordcount  /output/wordcount

注意:此处的输出目录output下的输出结果文件名wordcount不是固定的,在执行不同的输入文件时可相应地更改为不同的文件名称。避免因同名而发生冲突,导致最新上传的本地文件得不到执行,而只保留之前的执行结果。

程序运行信息如图9所示:

hadoop 3 wordcount运行 运行hadoop自带的wordcount_wordCount_09

图9_1  程序运行信息

hadoop 3 wordcount运行 运行hadoop自带的wordcount_hadoop_10

图9_2  程序运行信息

hadoop 3 wordcount运行 运行hadoop自带的wordcount_CentOS_11

图9_3  程序运行信息

hadoop 3 wordcount运行 运行hadoop自带的wordcount_hadoop_12

图9_4  程序运行信息

3.3  查看执行结果

命令:bin/hadoop  fs  -text /output/wordcount/part-r-00000

显示结果如图10所示:

hadoop 3 wordcount运行 运行hadoop自带的wordcount_上传_13

图10  程序执行结果

注意:此处的wordcount是指执行wordcount程序时指定的输出目录下的输出结果文件,可通过修改此文件名来显示执行不同文件各自所得的输出结果。

补充说明:完成所有的操作后如果不想保留输入输出目录,可将其一一删除,命令如下:

删除输入文件目录:bin/hadoop  fs  -rmr /data

删除输出文件目录:bin/hadoop  fs  -rmr /output

执行上述两条命令后可通过如下命令查看到显示结果中只剩下tmp文件目录:

bin/hadoop  fs -ls  /