在本地文件系统上测试MapReduce程序

在开发MapReduce程序的过程中,可以首先在本地文件系统上对程序进行测试,而不是一开始就在HDFS上,这样调试起来更加方便。

以《Hadoop权威指南》上的MaxTemperature程序为例,整个项目中包括如下3个源文件,依次为Mapper程序、Reducer程序和job启动程序:

MaxTemperatureMapper.java,MaxTemperatureReducer.java,MaxTemperatureDriver.java

MaxTemperatureMapper.java和MaxTemperatureReducer.java的代码可在MRUnit的安装和使用中找到。

MaxTemperatureDriver.java

import org.apache.hadoop.conf.Configured;
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.io.IntWritable;
import org.apache.hadoop.io.Text;
import org.apache.hadoop.mapreduce.Job;
import org.apache.hadoop.mapreduce.lib.input.FileInputFormat;
import org.apache.hadoop.mapreduce.lib.output.FileOutputFormat;
import org.apache.hadoop.util.Tool;
import org.apache.hadoop.util.ToolRunner;

public class MaxTemperatureDriver extends Configured implements Tool {
	public int run(String[] args) throws Exception {
		if(args.length != 2) {
			System.err.printf("Usage: %s [generic options] <input> <output>\n",
					getClass().getSimpleName());
			ToolRunner.printGenericCommandUsage(System.err);
			return -1;
		}

		Job job = new Job(getConf(), "Max temperature");
		job.setJarByClass(getClass());

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

		job.setMapperClass(MaxTemperatureMapper.class);
		job.setCombinerClass(MaxTemperatureReducer.class);
		job.setReducerClass(MaxTemperatureReducer.class);

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

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

	public static void main(String[] args) throws Exception {
		int exitCode = ToolRunner.run(new MaxTemperatureDriver(), args);
		System.exit(exitCode);
	}
}

在Eclipse中执行测试程序的步骤如下:

选中文件MaxTemperatureDriver.java-->右键Run
As-->Run Configurations-->New launch configuration-->选中Arguments,在Program arguments中填入本地文件系统中的输入输出路径,例如

file:///home/hadoop/input
file:///home/hadoop/output

点击Apply-->点击Run。

执行结束后,可以根据输出文件的内容判断程序是否正确。

时间: 2024-10-14 23:01:58

在本地文件系统上测试MapReduce程序的相关文章

Hadoop YARN上运行MapReduce程序

(1)配置集群 (a)配置hadoop-2.7.2/etc/hadoop/yarn-env.sh 配置一下JAVA_HOME export JAVA_HOME=/home/hadoop/bigdatasoftware/jdk1.8.0_161 (b)配置yarn-site.xml <!-- reducer获取数据的方式 --> <property> <name>yarn.nodemanager.aux-services</name> <value>

解决从linux本地文件系统上传文件到HDFS时的权限问题

当使用 hadoop fs -put localfile /user/xxx 时提示: put: Permission denied: user=root, access=WRITE, inode="/user/shijin":hdfs:supergroup:drwxr-xr-x 表明:权限不够.这里涉及到两个方面的权限.一个是本地文件系统中localfile 文件的权限,一个是HDFS上 /user/xxx目录的权限. 先看看 /user/xxx目录的权限:drwxr-xr-x  

解决从本地文件系统上传到HDFS时的权限问题

当使用 hadoop fs -put localfile /user/xxx 时提示: put: Permission denied: user=root, access=WRITE, inode="/user/shijin":hdfs:supergroup:drwxr-xr-x 表明:权限不够.这里涉及到两个方面的权限.一个是本地文件系统中localfile 文件的权限,一个是HDFS上 /user/xxx目录的权限. 先看看 /user/xxx目录的权限:drwxr-xr-x  

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

原文:http://xiaoxia.org/2011/12/18/map-reduce-program-of-rmm-word-count-on-hadoop/ 在Hadoop上运行基于RMM中文分词算法的MapReduce程序 23条回复 我知道这个文章标题很“学术”化,很俗,让人看起来是一篇很牛B或者很装逼的论文!其实不然,只是一份普通的实验报告,同时本文也不对RMM中文分词算法进行研究.这个实验报告是我做高性能计算课程的实验里提交的.所以,下面的内容是从我的实验报告里摘录出来的,当作是我学

MapReduce程序运行模式

本地运行模式: mapreduce程序是被提交给LocalJobRunner在本地以单进程的形式运行 而处理的数据及输出结果可以在本地文件系统,也可以在hdfs上 怎样实现本地运行?写一个程序,不要带集群的配置文件 本质是程序的conf中是否有mapreduce.framework.name=local以及yarn.resourcemanager.hostname参数 本地模式非常便于进行业务逻辑的debug,只要在eclipse中打断点即可 集群运行模式: 将mapreduce程序提交给yar

MapReduce程序之二次排序与多次排序

[toc] MapReduce程序之二次排序与多次排序 需求 有下面的数据: cookieId time url 2 12:12:34 2_hao123 3 09:10:34 3_baidu 1 15:02:41 1_google 3 22:11:34 3_sougou 1 19:10:34 1_baidu 2 15:02:41 2_google 1 12:12:34 1_hao123 3 23:10:34 3_soso 2 05:02:41 2_google 假如我们现在的需求是先按 cook

转:visualvm监控远程机器上的Java程序

转自:http://hanwangkun.iteye.com/blog/1195526 JDK里面本身就带了很多的监控工具,如JConsole等.我们今天要讲的这款工具visualvm,就是其中的一款.但是这款工具是在JDK1.6.07及以上才有的.它能够对JAVA程序的JVM堆.线程.类加载情况.JVM GC情况进行监控,是一个很好的免费的监控工具. 监控范围:JDK1.4及以上版本的程序都能够监控. 它在JDK里面叫做: jvisualvm,当然我们可以到它的官方网站上去下载它的最新版本,当

visualvm 监控 远程 机器上的 Java 程序

JDK里面本身就带了很多的监控工具,如JConsole等. 我们今天要讲的这款工具visualvm,就是其中的一款.但是这款工具是在JDK1.6.07及以上才有的.它能够对JAVA程序的JVM堆.线程.类加载情况.JVM GC情况进行监控,是一个很好的免费的监控工具. 监控范围:JDK1.4及以上版本的程序都能够监控. 它在JDK里面叫做: jvisualvm,当然我们可以到它的官方网站上去下载它的最新版本,当前最新版本是: 1.3.2,如下所示: 在图中已经列出了它的官方网站地址: http:

在Eclipse中开发MapReduce程序

一.Eclipse的安装与设置 1.在Eclipse官网上下载eclipse-jee-oxygen-3a-linux-gtk-x86_64.tar.gz文件并将其拷贝到/home/jun/Resources下,然后再将文件拷贝到/home/jun下并解压. [[email protected] ~]$ cp /home/jun/Resources/eclipse-jee-oxygen-3a-linux-gtk-x86_64.tar.gz /home/jun/ [[email protected]