微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

1.分布式并行计算实验-WordCount单词计数

在Hadoop集群中测试WordCount功能

目标:使用Eclipse+Maven搭建Hadoop开发环境,并能编译运行官方WordCount源码。

 创建Hadoop项目

   创建 Maven 项目 在创建 Maven 项目前,请先设置设置好 Maven ,至少应该将 maven 镜像修改为国内源 在 Eclipse 中, Fil·e>New>Maven Project :

 

 

 添加Hadoop依赖

在项目的 pom.xml 文件的 project 节点下添加如下内容(在<project></project>内):
<properties> 
<hadoop.version>2.8.5</hadoop.version> 
</properties>
 <dependencies> 
<dependency>
 <groupId>org.apache.hadoop</groupId> 
<artifactId>hadoop-client</artifactId> 
<version>${hadoop.version}</version> 
</dependency>
 <dependency>
 <groupId>org.apache.hadoop</groupId>
 <artifactId>hadoop-common</artifactId>
 <version>${hadoop.version}</version> 
</dependency>
 <dependency> 
<groupId>org.apache.hadoop</groupId>
 <artifactId>hadoop-hdfs</artifactId> 
<version>${hadoop.version}</version>
 </dependency>
 </dependencies>

项目中添加了hadoop jar包

 实现WordCount功能

你可以从 hadoop 官方安装包中解压出 WordCount 源码,压缩包内路径为: hadoop- 2.8.5\share\hadoop\mapreduce\sources\hadoop-mapreduce-examples-2.8.5- sources.jar ,利用解压工具直接从 jar 包中解压出 WordCount.java

 部分官方源码:

 构建项目

在项目上击右键,选择【 run as 】 > 【 maven build... 】,在 Goals 中输入 clean package :

 

 在集群中测试WordCount功能

启动集群

start-all.sh

jps查看运行,结果起码要有:

[root@hadoopnode1 ~]# jps
136 NameNode
252 ResourceManager
862 Jps

在虚拟机中创建一个测试文件(myword.txt)

[root@hadoopnode1 ~]# mkdir -p /home/demo   
[root@hadoopnode1 ~]# cd/home/demo 
[root@hadoopnode1 demo]# vi myword.txt

文件中写入(当然这只是测试的数据,具体数据还是根据各位的需求):

this is a wordcount test! 
hello! my name is jerry. 
who are you! 
where are you from! 
the end! 
在hdfs上创建input文件夹( -p是沿路径建立父目录 -p 是沿路径建立父目录 ):
[root@hadoopnode1 demo]# hdfs dfs -mkdir -p /wordcount/input
将测试文件上传到hdfs上:
[root@hadoopnode1 demo]# hdfs dfs -put myword.txt /wordcount/input

上传jar包并运行:

将打包好的 /bigdataprotrain/target/bigdataprotrain-0.0.1-SNAPSHOT.jar 利用 ftp 工具上传 到集群 namenode 节点 /home/demo 目录下: 命令解释:hadoop jar jar包名 包名.类名 输入文件地址 输出文件地址
  • /wordcount/input/是输入文件所在目录,需事先建立
  • /wordcount/output是输出文件所在目录,output目录是自动创建的,不可事先存
  • 在,否则会出错,如存在请事先删除
  • com.issedu.bigdatapro.sample.WordCount是包名加含main方法的类名
[root@hadoopnode1 demo]# hadoop jar bigdataprotrain-0.0.1- SNAPSHOT.jar com.issedu.bigdatapro.sample.WordCount /wordcount/input/ /wordcount/output

查看输出结果:

[root@hadoopnode1 demo]# hdfs dfs -ls /wordcount/output

此时的结果:

注意:

_SUCCESS 文件字节数为 0 ,没有任何内容,只是标记输出成功而已,实际内容在 part-r- 00000 中,该文件可能会有多个,而且序号不同
Found 2 items -rw-r--r-- 3 root supergroup 0 2020-03-18 09:42 /wordcount/output/_SUCCESS -rw-r--r-- 3 root supergroup 120 2020-03-18 09:42 /wordcount/output/part-r-00000
下载到本地查看
[root@hadoopnode1 demo]# hdfs dfs -get /wordcount/output/part* 
[root@hadoopnode1 demo]# cat part-r-00000

结果如下:

a 1 are 2 end! 1 from! 1 hello! 1 is 2 jerry. 1 my 1 name 1 test! 1 the 1 this 1 where 1 who 1 wordcount 1 you 1 you! 1

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐