Hadoop之MapReduce程序应用一

标签: hadoop mapreduce 程序 | 发表时间:2014-06-18 14:20 | 作者:wangloveall
出处:http://blog.csdn.net

摘要:MapReduce程序处理专利数据集。

关键词:MapReduce程序   专利数据集

数据源:专利引用数据集cite75_99.txt。(该数据集可以从网址 http://www.nber.org/patents/下载)

问题描述:

读取专利引用数据集并对它进行倒排。对于每一个专利,找到那些引用它的专利并进行合并。top5输出结果如下:

1                                3964859, 4647229

10000                            4539112

100000                           5031388

1000006                          4714284

1000007                          4766693

解决方案:

1  开发工具:  VM10+Ubuntu12.04+hadoop1.1.2+eclipse

2  在eclipse中创建一个工程,并且在工程里添加一个java类。

程序清单如下:

package com.wangluqing;

import java.io.IOException; 
import java.util.Iterator; 
import org.apache.hadoop.conf.Configuration; 
import org.apache.hadoop.conf.Configured; 
import org.apache.hadoop.fs.Path; 
import org.apache.hadoop.io.Text; 
import org.apache.hadoop.mapred.FileInputFormat; 
import org.apache.hadoop.mapred.FileOutputFormat; 
import org.apache.hadoop.mapred.JobClient; 
import org.apache.hadoop.mapred.JobConf; 
import org.apache.hadoop.mapred.KeyValueTextInputFormat; 
import org.apache.hadoop.mapred.MapReduceBase; 
import org.apache.hadoop.mapred.Mapper; 
import org.apache.hadoop.mapred.OutputCollector; 
import org.apache.hadoop.mapred.Reducer; 
import org.apache.hadoop.mapred.Reporter; 
import org.apache.hadoop.mapred.TextOutputFormat; 
import org.apache.hadoop.util.Tool; 
import org.apache.hadoop.util.ToolRunner;

public class MyJob1 extends Configured implements Tool {
public static class MapClass extends MapReduceBase implements Mapper<Text,Text,Text,Text> {

@Override
public void map(Text key, Text value, OutputCollector<Text, Text> output,
Reporter reporter) throws IOException {
// TODO Auto-generated method stub

output.collect(value, key);
}

}

public static class Reduce extends MapReduceBase implements Reducer<Text,Text,Text,Text> {

@Override
public void reduce(Text key, Iterator<Text> values,
OutputCollector<Text, Text> output, Reporter reporter)
throws IOException {
// TODO Auto-generated method stub
String csv = "";
while(values.hasNext()) {
if(csv.length()>0) 
csv += ",";
csv += values.next().toString();
}

output.collect(key, new Text(csv));

}
}

public static void main(String[] args) throws Exception {
// TODO Auto-generated method stub
String[] arg={"hdfs://hadoop:9000/user/root/input/cite75_99.txt","hdfs://hadoop:9000/user/root/output"};
int res = ToolRunner.run(new Configuration(),new MyJob1(), arg);
System.exit(res);
}

public int run(String[] args) throws Exception {
// TODO Auto-generated method stub
Configuration conf = getConf(); 
JobConf job = new JobConf(conf, MyJob1.class); 
Path in = new Path(args[0]); 
Path out = new Path(args[1]); 
FileInputFormat.setInputPaths(job, in); 
FileOutputFormat.setOutputPath(job, out);

job.setJobName("MyJob"); 
job.setMapperClass(MapClass.class); 
job.setReducerClass(Reduce.class); 
job.setInputFormat(KeyValueTextInputFormat.class); 
job.setOutputFormat(TextOutputFormat.class); 
job.setOutputKeyClass(Text.class); 
job.setOutputValueClass(Text.class); 
job.set("key.value.separator.in.input.line", ","); 
JobClient.runJob(job); 
return 0;

}

}

运行Run on hadoop,在Ubuntu 下执行命令

hadoop fs -cat  /usr/root/output/part-00000  |  head

可以查看到经过MapReduce程序处理后的结果。

总结:

第一:可以采用装有Hadoop版本对应插件的Eclipse集成开发工具进行MapReduce程序开发。

第二:根据数据流和问题域设计和编写MapReduce程序。

Resource:

http://www.wangluqing.com/2014/03/hadoop-mapreduce-programapp1/ 

2 参考《Hadoop实战》第四章 MapReduce基础程序

 

作者:wangloveall 发表于2014-6-18 6:20:36 原文链接
阅读:5 评论:0 查看评论

相关 [hadoop mapreduce 程序] 推荐:

Hadoop之MapReduce程序应用一

- - CSDN博客推荐文章
摘要:MapReduce程序处理专利数据集. 关键词:MapReduce程序   专利数据集. 数据源:专利引用数据集cite75_99.txt. (该数据集可以从网址 http://www.nber.org/patents/下载). 读取专利引用数据集并对它进行倒排. 对于每一个专利,找到那些引用它的专利并进行合并.

Hadoop MapReduce技巧

- - 简单文本
我在使用Hadoop编写MapReduce程序时,遇到了一些问题,通过在Google上查询资料,并结合自己对Hadoop的理解,逐一解决了这些问题. Hadoop对MapReduce中Key与Value的类型是有要求的,简单说来,这些类型必须支持Hadoop的序列化. 为了提高序列化的性能,Hadoop还为Java中常见的基本类型提供了相应地支持序列化的类型,如IntWritable,LongWritable,并为String类型提供了Text类型.

下一代Hadoop MapReduce

- Jia - NoSQLFan
本文来自Hadoop Summit大会的一个演讲稿,主讲是Hadoop核心开发团队的Arun C Murthy (@acmurthy),同时他也是Yahoo!刚刚剥离的Hadoop独立公司Hortonworks的 Founder和架构师. 演讲中他讲述了现在的Hadoop存在的一些问题和集群上限,并展望了下一代Hadoop和其MapReduce将会得到的巨大提升.

在Hadoop上运行基于RMM中文分词算法的MapReduce程序

- - Xiaoxia[PG]
我知道这个文章标题很“学术”化,很俗,让人看起来是一篇很牛B或者很装逼的论文. 其实不然,只是一份普通的实验报告,同时本文也不对RMM中文分词算法进行研究. 这个实验报告是我做高性能计算课程的实验里提交的. 所以,下面的内容是从我的实验报告里摘录出来的,当作是我学习hadoop分享出来的一些个人经验.

"Hadoop/MapReduce/HBase"分享总结

- - ITeye博客
此分享是关于hadoop生态系统的简单介绍包括起源到相对应用. Hadoop和HBase.pdf (2.1 MB). 已有 0 人发表留言,猛击->> 这里<<-参与讨论. —软件人才免语言低担保 赴美带薪读研.

Hadoop之MapReduce单元测试

- - ITeye博客
通常情况下,我们需要用小数据集来单元测试我们写好的map函数和reduce函数. 而一般我们可以使用Mockito框架来模拟OutputCollector对象(Hadoop版本号小于0.20.0)和Context对象(大于等于0.20.0). 下面是一个简单的WordCount例子:(使用的是新API).

Hadoop MapReduce高级编程

- - 互联网 - ITeye博客
•combine函数把一个map函数产生的对(多个key, value)合并成一个新的. 将新的作为输入到reduce函数中,其格式与reduce函数相同. •这样可以有效的较少中间结果,减少网络传输负荷. •什么情况下可以使用Combiner.

[转]基于mapreduce的Hadoop join实现

- -
对于一个大数据的分析应用,join是必不可少的一项功能.现在很多构建与hadoop之上的应用,如Hive,PIG等在其内部实现了join程序,可以通过很简单的sql语句或者数据操控脚本完成相应的Join工作.那么join应该如何实现呢?今天我们就对join做一个简单的实现. 我们来看一个例子,现在有两组数据:一组为单位人员信息,如下:.

【Hadoop】MapReduce使用combiner优化性能

- - CSDN博客云计算推荐文章
当MapReduce模型中,reduce执行的任务为统计分类类型的值总量或去重后的数量,或最大值最小值时,可以考虑在Map输出后进行combine操作;这样可以减少网络传输带来的开销,同时减轻了reduce任务的负担. Combine操作是运行在每个节点上的,只会影响本地Map的输出结果;Combine的输入为本地map的输出结果(一般是数据在溢出到磁盘之前,可以减少IO开销),其输出则作为reduce的输入.

hadoop的IO和MapReduce优化参数

- - CSDN博客系统运维推荐文章
           在MapReduce执行过程中,特别是Shuffle阶段,尽量使用内存缓冲区存储数据,减少磁盘溢写次数;同时在作业执行过程中增加并行度,都能够显著提高系统性能,这也是配置优化的一个重要依据.            下面分别介绍I/O属性和MapReduce属性这两个类的部分属性,并指明其优化方向.