08hadoop完全分布式安装第八步MapReduce查行数.docx

上传人:b****6 文档编号:16351722 上传时间:2023-07-12 格式:DOCX 页数:9 大小:651.36KB
下载 相关 举报
08hadoop完全分布式安装第八步MapReduce查行数.docx_第1页
第1页 / 共9页
08hadoop完全分布式安装第八步MapReduce查行数.docx_第2页
第2页 / 共9页
08hadoop完全分布式安装第八步MapReduce查行数.docx_第3页
第3页 / 共9页
08hadoop完全分布式安装第八步MapReduce查行数.docx_第4页
第4页 / 共9页
08hadoop完全分布式安装第八步MapReduce查行数.docx_第5页
第5页 / 共9页
08hadoop完全分布式安装第八步MapReduce查行数.docx_第6页
第6页 / 共9页
08hadoop完全分布式安装第八步MapReduce查行数.docx_第7页
第7页 / 共9页
08hadoop完全分布式安装第八步MapReduce查行数.docx_第8页
第8页 / 共9页
08hadoop完全分布式安装第八步MapReduce查行数.docx_第9页
第9页 / 共9页
亲,该文档总共9页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

08hadoop完全分布式安装第八步MapReduce查行数.docx

《08hadoop完全分布式安装第八步MapReduce查行数.docx》由会员分享,可在线阅读,更多相关《08hadoop完全分布式安装第八步MapReduce查行数.docx(9页珍藏版)》请在冰点文库上搜索。

08hadoop完全分布式安装第八步MapReduce查行数.docx

08hadoop完全分布式安装第八步MapReduce查行数

实验八MapReduce查行数

一、实验题目

开发MapReduce程序

二、实验要求

对于各种形式的文本分析而言,LineCount应用程序是一个不可或缺的统计工具。

想分析文本,我们必须知道文本中的行数、字数和单词数。

此外,这些参数的出现频率也有助于我们对数(值)进行分类。

本次实验练习中,我们将借助Eclipse集成开发环境(IDE)编写MapReduce程序,以统计给定文本文件的行数。

三、操作步骤

1.在Ubuntu上安装Eclipse、Hadoop和JDK(虚拟机里已经安装了这些环境);

2.打开Eclipse,创建一个新的JavaProject;

3.选择“ConfigureBuildPath”,选择Library标签,AddExternalJARs;

4.选择Apache/Hadoop1.0.4文件夹,选择下列jar文件:

commons-collections-3.2.1.jar

commons-configuration-1.6.jar

commons-httpclient-3.0.1.jar

commons-lang-2.4.jar

commons-logging-1.1.1.jar

commons-logging-api-1.0.4.jar

jackson-core-asl-1.8.8.jar

jackson-mapper-asl-1.8.8.jar

log4j-1.2.15.jar

Hadoop-core-1.0.4.jar

5.创建“com.trendwise.java”包,并在包中创建“LineCount”类(可使用附件文件);

6.将LineCount项目导出为Jar文件;

7.启动Hadoop,复制loaddata1文件到“/home/wcbdd/Desktop/loaddata1”;

8.访问localhost:

50070,利用文件选择器选择选择loaddata1;

9.运行MapReduce程序,“bin/hadoopjar/home/wcbdd/linecount.jarcom.trendwise.java.linecount/LOAD/home/wcbdd/workspace/BIGmb”;

10.打开浏览器查看LineCount结果;

11.复制结果到本地文件output.txt;

四、实验结果

首先,建立一个JavaProject。

在建立时,要将默认的Java1.7改为Java1.6.

新建JavaClass,并且添加jar。

需要将Hadoop文件夹下的以及lib文件夹下的所有jar均添加进去。

输入代码:

[java] viewplain copy

 

1.//This wraps the modules into a single programpackage com.trendwise.java; //Package name  

2.import java.io.IOException;  

3.import java.util.Iterator;  

4.import org.apache.hadoop.fs.Path;  

5.import org.apache.hadoop.io.IntWritable;  

6.import org.apache.hadoop.io.LongWritable;  

7.import org.apache.hadoop.io.Text;  

8.import org.apache.hadoop.mapred.FileInputFormat;  

9.import org.apache.hadoop.mapred.FileOutputFormat;  

10.import org.apache.hadoop.mapred.JobClient;  

11.import org.apache.hadoop.mapred.JobConf;  

12.import org.apache.hadoop.mapred.MapReduceBase;  

13.import org.apache.hadoop.mapred.Mapper;  

14.import org.apache.hadoop.mapred.OutputCollector;  

15.import org.apache.hadoop.mapred.Reducer;  

16.import org.apache.hadoop.mapred.Reporter;  

17.import org.apache.hadoop.mapred.TextInputFormat;  

18.import org.apache.hadoop.mapred.TextOutputFormat;  

19.public class LineCount {  

20.    public static class Map extends MapReduceBase implements Mapper {  

21.        private final static IntWritable obj = new IntWritable

(1);  

22.        private Text words = new Text("Total Lines");  

23.        public void map(LongWritable key, Text value, OutputCollector output,  

24.            Reporter reporter) throws IOException {  

25.            output.collect(words, obj);  

26.        }  

27.    }  

28.  

29.public static class Reduce extends MapReduceBase implements  

30.    Reducer {  

31.    public void reduce(Text key, Iterator values,  

32.        OutputCollector output, Reporter reporter)  

33.        throws IOException {  

34.            int sum1 = 0;  

35.            while (values.hasNext()) {  

36.                sum1 += values.next().get();  

37.            }  

38.            output.collect(key, new IntWritable(sum1));  

39.        }  

40.}  

41.  

42.public static void main(String[] args) throws Exception {  

43.    JobConf config = new JobConf(LineCount.class);  

44.    config.setJobName("LineCount");  

45.    config.setOutputKeyClass(Text.class);  

46.    config.setOutputValueClass(IntWritable.class);  

47.    config.setMapperClass(Map.class);  

48.    config.setCombinerClass(Reduce.class);  

49.    config.setReducerClass(Reduce.class);  

50.    config.setInputFormat(TextInputFormat.class);  

51.    config.setOutputFormat(TextOutputFormat.class);  

52.    FileInputFormat.setInputPaths(config, new Path(args[0]));  

53.    FileOutputFormat.setOutputPath(config, new Path(args[1]));  

54.    JobClient.runJob(config);  

55.}  

56.}  

上述代码,map部分负责从原始数据中提取感兴趣的内容,在本例中,也就是行数。

reduce部分不择将map获取的数据进行整合,也就是求出中行数,并且输出。

main部分起到drive的作用。

编写完代码后,将其导出为jar文件,方便运行使用。

将文件从本地拷贝到HDFS中:

由于hadoop在安全模式下是不能创建文件夹的,因此需要将安全模式关闭。

可以看到关闭后,文件成功拷贝到HDFS中了。

接下来就是启动hadoop,运行MapReduce程序了。

打开浏览器,查看LineCount的运行结果

将文件从hdfs中导出

查看output1.text

可以看到结果和浏览器中查看的结果是一致的。

需要注意的是,文档中给的很多路径是错误的,包括LineCount小写了,以及导出文件时,路径给的是源文件的路径,而不是处理之后的路径等。

总结下就是,文档可以帮助我们快速入门,但是过于依靠文档,会频繁出错,还是需要加深自己对这个实验过程的理解。

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 工程科技 > 能源化工

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2