`
sunqi
  • 浏览: 230856 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

hadoop Map/Reduce 初试

 
阅读更多

安装好了hadoop集群环境,详细见(hadoop安装),当然得要跑一下Map/Reduce

 

 

package com.hadoop;

import java.io.IOException;

import org.apache.hadoop.fs.Path;
import org.apache.hadoop.io.*;
import org.apache.hadoop.mapreduce.*;
import org.apache.hadoop.mapreduce.lib.input.FileInputFormat;
import org.apache.hadoop.mapreduce.lib.output.FileOutputFormat;

public class MaxValue {

	static class MaxValueMapper extends
			Mapper<LongWritable, Text, Text, IntWritable> {

		public void map(LongWritable key, Text value, Context context)
				throws IOException, InterruptedException {

			String line = value.toString();
			// 从每行的数据中分解要统计的key和value
			String thekey = line.substring(0, 4);
			int theValue = Integer.parseInt(line.substring(5, 8));
			context.write(new Text(thekey), new IntWritable(theValue));
		}
	}

	static class MaxValueReducer extends
			Reducer<Text, IntWritable, Text, IntWritable> {

		public void reduce(Text key, Iterable<IntWritable> values,
				Context context) throws IOException, InterruptedException {

			int maxValue = Integer.MIN_VALUE;
			// key求出最大的温度值
			for (IntWritable value : values) {
				maxValue = Math.max(maxValue, value.get());
			}
			context.write(key, new IntWritable(maxValue));
		}
	}

	public static void main(String[] args) throws Exception {
		if (args.length != 2) {
			System.err.println("Usage: MaxValue <input path> <output path>");
			System.exit(-1);
		}

		Job job = new Job();
		job.setJarByClass(MaxValue.class);

		FileInputFormat.addInputPath(job, new Path(args[0]));
		FileOutputFormat.setOutputPath(job, new Path(args[1]));

		job.setMapperClass(MaxValueMapper.class);
		job.setReducerClass(MaxValueReducer.class);

		job.setOutputKeyClass(Text.class);
		job.setOutputValueClass(IntWritable.class);

		System.exit(job.waitForCompletion(true) ? 0 : 1);
	}
}

 

 

代码很简单,打包成jar包,随便命名成first.jar

 

然后写个程序,随机生成一批数据上传到hadoop中,为程序简单处理,生成一批格式如

2000 111

2012 333

2012 444

2000 222

类似一大批数据命名为temp.txt

 

上传

hadoop dfs -put temp1.txt /user/hadoop/input/

 

列出HDFS下的文件

 

hadoop dfs -ls

Found 2 items

drwxr-xr-x   - hadoop supergroup          0 2012-04-06 13:40 /user/hadoop/input

drwxr-xr-x   - hadoop supergroup          0 2012-04-06 11:30 /user/hadoop/output

 

 

hadoop dfs -ls in 列出HDFS下某个文档中的文件

 

hadoop dfs -ls in /user/hadoop/input  

Found 2 items

-rw-r--r--   2 hadoop supergroup       2043 2012-02-29 18:18 /user/hadoop/input/slaves.sh

-rw-r--r--   2 hadoop supergroup      10000 2012-04-06 13:39 /user/hadoop/input/temp1.txt

可以看到上传上去的temp1.txt文件

 

 

 

然后运行

 

hadoop jar first.jar com.hadoop.MaxValue /user/hadoop/input/temp1.txt output1

 

first.jar jar的名字

com.hadoop.MaxValue  类名

/user/hadoop/input/temp1.txt  mian函数对应的输入

output1 mian函数对应的输出

 

 

然后可以看到

12/04/06 13:41:43 WARN mapred.JobClient: Use GenericOptionsParser for parsing the arguments. Applications should implement Tool for the same.

12/04/06 13:41:43 INFO input.FileInputFormat: Total input paths to process : 1

12/04/06 13:41:44 INFO mapred.JobClient: Running job: job_201203121856_0005

12/04/06 13:41:45 INFO mapred.JobClient:  map 0% reduce 0%

12/04/06 13:41:58 INFO mapred.JobClient:  map 100% reduce 0%

12/04/06 13:42:10 INFO mapred.JobClient:  map 100% reduce 100%

12/04/06 13:42:15 INFO mapred.JobClient: Job complete: job_201203121856_0005

12/04/06 13:42:15 INFO mapred.JobClient: Counters: 25

12/04/06 13:42:15 INFO mapred.JobClient:   Job Counters 

12/04/06 13:42:15 INFO mapred.JobClient:     Launched reduce tasks=1

12/04/06 13:42:15 INFO mapred.JobClient:     SLOTS_MILLIS_MAPS=12195

12/04/06 13:42:15 INFO mapred.JobClient:     Total time spent by all reduces waiting after reserving slots (ms)=0

12/04/06 13:42:15 INFO mapred.JobClient:     Total time spent by all maps waiting after reserving slots (ms)=0

12/04/06 13:42:15 INFO mapred.JobClient:     Launched map tasks=1

12/04/06 13:42:15 INFO mapred.JobClient:     Data-local map tasks=1

12/04/06 13:42:15 INFO mapred.JobClient:     SLOTS_MILLIS_REDUCES=10085

12/04/06 13:42:15 INFO mapred.JobClient:   File Output Format Counters 

12/04/06 13:42:15 INFO mapred.JobClient:     Bytes Written=27

12/04/06 13:42:15 INFO mapred.JobClient:   FileSystemCounters

12/04/06 13:42:15 INFO mapred.JobClient:     FILE_BYTES_READ=11006

12/04/06 13:42:15 INFO mapred.JobClient:     HDFS_BYTES_READ=10111

12/04/06 13:42:15 INFO mapred.JobClient:     FILE_BYTES_WRITTEN=63937

12/04/06 13:42:15 INFO mapred.JobClient:     HDFS_BYTES_WRITTEN=27

12/04/06 13:42:15 INFO mapred.JobClient:   File Input Format Counters 

12/04/06 13:42:15 INFO mapred.JobClient:     Bytes Read=10000

12/04/06 13:42:15 INFO mapred.JobClient:   Map-Reduce Framework

12/04/06 13:42:15 INFO mapred.JobClient:     Reduce input groups=3

12/04/06 13:42:15 INFO mapred.JobClient:     Map output materialized bytes=11006

12/04/06 13:42:15 INFO mapred.JobClient:     Combine output records=0

12/04/06 13:42:15 INFO mapred.JobClient:     Map input records=1000

12/04/06 13:42:15 INFO mapred.JobClient:     Reduce shuffle bytes=11006

12/04/06 13:42:15 INFO mapred.JobClient:     Reduce output records=3

12/04/06 13:42:15 INFO mapred.JobClient:     Spilled Records=2000

12/04/06 13:42:15 INFO mapred.JobClient:     Map output bytes=9000

12/04/06 13:42:15 INFO mapred.JobClient:     Combine input records=0

12/04/06 13:42:15 INFO mapred.JobClient:     Map output records=1000

12/04/06 13:42:15 INFO mapred.JobClient:     SPLIT_RAW_BYTES=111

12/04/06 13:42:15 INFO mapred.JobClient:     Reduce input records=1000

 

 

同时可以在控制台http://node1:50030/jobtracker.jsp

看到任务的运行情况,

运行完毕,可以执行

hadoop dfs -ls in /user/hadoop/output1

Found 3 items

-rw-r--r--   2 hadoop supergroup          0 2012-04-06 13:42 /user/hadoop/output1/_SUCCESS

drwxr-xr-x   - hadoop supergroup          0 2012-04-06 13:41 /user/hadoop/output1/_logs

-rw-r--r--   2 hadoop supergroup         27 2012-04-06 13:42 /user/hadoop/output1/part-r-00000

 

生成了结果文件,

查看最终结果

hadoop dfs -cat /user/hadoop/output1/part-r-00000

2009    999

2010    129

2011    177

 

这是程序生成原始数据,然后手动加入2009 最大值999 可以检查结果是否正确

 

 

当然可以看看hadoop的示例,在http://hadoop.apache.org/common/docs/r0.20.2/cn/mapred_tutorial.html

 

 

 

分享到:
评论

相关推荐

    远程调用执行Hadoop Map/Reduce

    本篇文章将深入探讨“远程调用执行Hadoop Map/Reduce”的概念、原理及其实现过程,同时结合标签“源码”和“工具”,我们将涉及到如何通过编程接口与Hadoop集群进行交互。 Hadoop MapReduce是一种编程模型,用于大...

    hadoop中map/reduce

    MapReduce的设计理念源于Google的同名论文,它通过将大规模数据处理任务分解为两个阶段:Map(映射)和Reduce(化简),使得海量数据能够在多台计算机上并行处理,极大地提高了数据处理效率。 Map阶段是数据处理的...

    Windows平台下Hadoop的Map/Reduce开发

    在Windows平台上进行Hadoop的Map/Reduce开发可能会比在Linux环境下多一些挑战,但通过详细的步骤和理解Map/Reduce的工作机制,开发者可以有效地克服这些困难。以下是对标题和描述中涉及知识点的详细说明: **Hadoop...

    hadoop map-reduce turorial

    ### Hadoop Map-Reduce 教程详析 #### 目标与作用 Hadoop Map-Reduce框架是设计用于处理大规模数据集(多太字节级)的软件框架,它允许在大量廉价硬件集群上(可达数千节点)进行并行处理,确保了数据处理的可靠性...

    基于Map/Reduce的分布式搜索引擎研究

    本文将基于Map/Reduce算法,探讨如何利用开源框架Hadoop来设计和实现一种高容错、高性能的分布式搜索引擎。 #### 2. Map/Reduce算法 ##### 2.1 Map/Reduce算法概述 Map/Reduce是一种用于处理大规模数据集的编程...

    Hadoop Map-Reduce教程

    ### Hadoop Map-Reduce 教程 #### 一、Hadoop Map-Reduce 概述 Hadoop Map-Reduce 是一种编程模型,用于处理大规模数据集(通常为TB级或以上)。这种模型支持分布式计算,可以在成百上千台计算机上运行。Map-...

    hadoop教程

    Hadoop Map/Reduce 框架是一个使用简易的软件框架,基于它写出来的应用程序能够运行在由上千个商用机器组成的大型集群上,并以一种可靠容错的方式并行处理上 T 级别的数据集。该框架由一个单独的 master JobTracker ...

    Hadoop教程.pdf

    本文档提供了Hadoop Map/Reduce教程的详细介绍,从用户的角度出发,全面地介绍了Hadoop Map/Reduce框架的各个方面。下面是其中的重要知识点: 1. Hadoop是一个分布式的文件系统,可以将多台机器组装成一台超级...

    基于Eclipse的Hadoop应用开发环境配置

    复制 Hadoop 安装目录/src/example/org/apache/hadoop/example/WordCount.java 到刚才新建的项目下面。 7. 上传模拟数据文件夹 新建 word.txt 文件,通过 Hadoop 的命令在 HDFS 上创建/tmp/wordcount 目录,然后 ...

    在solr文献检索中用map/reduce

    标题中的“在solr文献检索中用map/reduce”指的是使用Apache Solr,一个流行的开源搜索引擎,结合Hadoop的MapReduce框架来处理大规模的分布式搜索任务。MapReduce是一种编程模型,用于处理和生成大型数据集,它将...

    map/reduce template

    标题中的“map/reduce template”指的是MapReduce编程模型的一个模板或框架,它是Apache Hadoop项目的核心部分,用于处理和生成大数据集。MapReduce的工作原理分为两个主要阶段:Map阶段和Reduce阶段,它允许程序员...

    hadoop权威指南part2

    hadoop权威指南,hadoop map/reduce 分布式计算

    hadoop权威指南.part1

    hadoop权威指南,hadoop map/reduce 分布式计算

    基于Map_Reduce的分布式搜索引擎研究

    在对Map/Reduce算法进行分析的基础上,利用开源Hadoop软件设计出高容错高性能的分布式搜索引擎,以面对搜索引擎对海量数据的处理和存储问题

    hadoop-eclipse-plugin-2.7.3.jar

    放到eclipse的plugins目录下。重启eclipse ...配置 Map/Reduce Master和DFS Mastrer,Host和Port配置成hdfs-site.xml与core-site.xml的设置一致即可。  如果连接成功,会出现hdfs上面的文件夹

    hadoop 1.2.1 api 最新chm 伪中文版

    Hadoop Map/Reduce是一个使用简易的软件框架,基于它写出来的应用程序能够运行在由上千个商用机器组成的大型集群上,并以一种可靠容错的方式并行处理上T级别的数据集。 一个Map/Reduce 作业(job) 通常会把输入的...

Global site tag (gtag.js) - Google Analytics