WordCount是一个很经典的MapReduce的例子,hadoop也自带了wordcount的mapreduce的example。wordcount也可说是集群计算中的helloworld。
wordcount是指,统计文件中出现的单词以及每个单词出现的次数。
比如说我们准备一个输入文件,我们可以选择txt格式的文件,我们要统计下面这个文件中每个单词出现的次数。
abc abc abc
ss ss
ttt
kk kk kk kk
tjaf
faf faf
然后我们预期的结果如下,也就是说我们生成的结果文件其内容大致如下所示,因为在mapreduce的过程中,会自动整理成排序的形式(由于map的数据结构),所以实际的结果的单词显示的顺序会与下面所显示的内容顺序不同。
abc 3
ss 2
ttt 1
kk 4
tjaf 1
faf 2
接下来会演示单机模式下的wordcount的编写过程
WordCount 环境准备IDE推荐使用IDEA pro,准备好maven、hadoop文件,然后配置好hadoop的系统环境变量,jdk1.8。
首先创建一个maven项目,项目相关信息随意。
File -> settings,搜索maven,上面的蓝圈选择maven文件夹,下面的选择好自己的settings.xml。
settings.xml这个xml文件中需要配置好aliyun镜像和localrepository路径这两个内容。至于maven文件,Maven – Welcome to Apache Maven 这里可以下载。
settings文件如下,前几行的那个localRepository记得修改为自己的,默认是C:Usersxxx.m2repository这个路径,xxx要换成自己的电脑的用户名,可以去看看。
C:Usersxxx.m2repository org.mortbay.jetty releases ali ali Snapshots ali ali nexus central aliyun maven http://maven.aliyun.com/nexus/content/groups/public/ alimaven central aliyun maven http://maven.aliyun.com/nexus/content/repositoryies/central nexus-public-snapshots public-snapshots http://maven.aliyun.com/nexus/content/repositories/snapshots/ development public-snapshots development central http://central true always true always central http://central true always true always public-snapshots public-snapshots http://public-snapshots false true always public-snapshots http://public-snapshots false true always
好了,IDEA的配置告一段落,在项目文件中,在根目录下可以看到IDEA自己创建的一个pom.xml文件,它用来存放maven的依赖,也就是需要使用到什么包,都可以写在里面,maven自己会去下载。
在这个示例中,可以将pom.xml修改为如下,换句话说在原来的基础之上将其中
4.0.0 com.xunn HDFSClient1.0-SNAPSHOT 8 8 org.apache.hadoop hadoop-client3.1.3 junit junit4.12 org.slf4j slf4j-log4j121.7.30
然后在项目中的srcmainresources下新建一个文件,文件名为log4j.properties,并添加如下代码段,作为log4j的配置信息。
log4j.rootLogger=INFO, stdout log4j.appender.stdout=org.apache.log4j.ConsoleAppender log4j.appender.stdout.layout=org.apache.log4j.PatternLayout log4j.appender.stdout.layout.ConversionPattern=%d %p [%c] - %m%n log4j.appender.logfile=org.apache.log4j.FileAppender log4j.appender.logfile.File=target/spring.log log4j.appender.logfile.layout=org.apache.log4j.PatternLayout log4j.appender.logfile.layout.ConversionPattern=%d %p [%c] - %m%n
在下图的位置创建package,然后建三个类。
然后,基本工作就准备完毕,接下来可以开始编写Mapper、Reducer和Driver的代码了。详见下一篇文章。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)