MapReduce Java API编程简单操作说明

实验环境:本操作说明适合502机房Vmware和504机房Virtual Box

一 实验准备:

1)启动Hadoop伪分布式1台虚拟机用XShell远程连接1台虚拟机hadoop,如果连接不成功参考《502机房主机win7系统与Vmare虚拟机Linux系统的网络连接配置操作说明》完成网络连接配置

2)启动Hadoop虚拟机,运行伪分布式Hadoop,依次执行start-dfs.sh和start-yarn.sh,启动分布式文件系统HDFS和资源调度器YARN

3)双击桌面快捷方式Eclipse Java 2019-06启Java集成开发环境Eclipse

实验步骤:

1)在win7下用Eclipese创建一个Java Project,Eclipese界面上面的菜单栏中选择File-》New-》JavaProject,在弹出的“New Java Project‘窗口中,输入Project Name项目名称WordCount,然后点击【Finish】按钮

2)鼠标右键点击Eclipese界面左边的WordCount项目,弹出菜单中选择Build Path-》Configure Build Path,在弹出的窗口选择Libraries,点击【Add External Jars】按钮,依次导入以下位置的jar包:

要导入的jar包的位置:
D:\Hadoop生态系统及开发\安装包\hadoop-2.6.0-cdh5.7.0\share\hadoop\common
D:\Hadoop生态系统及开发\安装包\hadoop-2.6.0-cdh5.7.0\share\hadoop\common\lib
D:\Hadoop生态系统及开发\安装包\hadoop-2.6.0-cdh5.7.0\share\hadoop\hdfs
D:\Hadoop生态系统及开发\安装包\hadoop-2.6.0-cdh5.7.0\share\hadoop\hdfs\lib
D:\Hadoop生态系统及开发\安装包\hadoop-2.6.0-cdh5.7.0\share\hadoop\mapreduce2
D:\Hadoop生态系统及开发\安装包\hadoop-2.6.0-cdh5.7.0\share\hadoop\mapreduce2\lib
注意:jar包千万不要一个个导入,学会用快捷键Ctrl+A全选目录中所有Jar包后,点【打开】按钮执行导入

3)再创建WordCount.java源代码文件,展开Eclipese界面左边的WordCount项目,鼠标右键点击项目里面的src目录,弹出菜单中选择New-》Class,在弹出的“New Java Class‘窗口中,输入Java类名WordCount,然后点击【Finish】按钮

4)在WordCount.java源码文件中编写源代码:


import org.apache.hadoop.conf.Configuration;
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.input.TextInputFormat;
import org.apache.hadoop.mapreduce.lib.output.FileOutputFormat;
import org.apache.hadoop.mapreduce.lib.output.TextOutputFormat;
import org.apache.hadoop.mapreduce.Mapper;
import org.apache.hadoop.mapreduce.Reducer;
import java.io.IOException;
 
 
public class WordCount
{
	public static void main(String[] args) throws IOException, ClassNotFoundException, InterruptedException 
	{
		if(args.length != 2 || args == null) 
		{
			System.out.println("please input Path!");
			System.exit(0);
		}
		Configuration configuration = new Configuration();
		Job job = Job.getInstance(configuration, WordCount.class.getSimpleName());
		// 打jar包
		job.setJarByClass(WordCount.class);
		// 通过job设置输入/输出格式
		job.setInputFormatClass(TextInputFormat.class);
		job.setOutputFormatClass(TextOutputFormat.class);
		// 设置输入/输出路径
		FileInputFormat.setInputPaths(job, new Path(args[0]));
		FileOutputFormat.setOutputPath(job, new Path(args[1]));
		// 设置处理Map/Reduce阶段的类
		job.setMapperClass(WordMap.class);
		job.setReducerClass(WordReduce.class);
		// 设置最终输出key/value的类型m
		job.setOutputKeyClass(Text.class);
		job.setOutputValueClass(IntWritable.class);
		// 提交作业
		job.waitForCompletion(true);		
	}
}
 
class WordMap extends Mapper<Object, Text, Text, IntWritable> 
{
	protected void map(Object key, Text value, Context context) throws IOException, InterruptedException 
	{
		String[] lines = value.toString().split(" ");
		for (String word : lines) 
		{
			// 每个单词出现1次,作为中间结果输出
			context.write(new Text(word), new IntWritable(1));
		}
	}
}
 
class WordReduce extends Reducer<Text, IntWritable, Text, IntWritable>
{
	protected void reduce(Text key, Iterable<IntWritable> values, Context context) throws IOException, InterruptedException
	{
		int sum = 0;
		for (IntWritable count : values)
		{
			sum = sum + count.get();
			//context.write(key, new IntWritable(sum));// 输出最终结果,放到这里会导致重复输出
		}
        context.write(key, new IntWritable(sum));// 输出最终结果
	}
}

5)编译并导出Jar包文件WordCount.jar,鼠标右键点击Eclipese界面左边的WordCount项目,弹出菜单中选择Export,在弹出的Export窗口选择Java文件夹中的Jar File,点击【Next】按钮,选择导出Jar File的目标路径,例如可以选择桌面,设置Jar包文件名为WordCount,继续点击【Next】按钮,再继续点击【Next】按钮,最下面的Main Class,【Brows】按钮打开”Select Main Class“,选择WordCount类后点【OK】按钮,最后点【Finish】按钮完成Jar包文件的导出操作。

6)打开XShell菜单中的的Xftp(新建文件传输)操作界面,左边窗口找到WordCount.jar文件的存放位置(例如Win7系统桌面),右边窗口切换到Linux的/root目录,将WordCount.jar包从win7上传到Linux的/root目录

7)运行MapReduce作业:

a)执行cd切换导入/root目录,执行hadoop fs -ls -R / 查看HDFS是否有word.txt文件,如果没有就执行hadoop fs -put word.txt / 把要进行单词统计的文档word.txt上传到HDFS的根目录

b)执行hadoop jar WordCount.jar  /word.txt  /output   运行WordCount.jar包中的词频统计程序,将会输出word.txt的单词统计结果到/output,输出目录/output不能存在

c)执行 hadoop fs -cat /output/part-r-00000   查看词频统计的结果

参考文章MapReduce Java API编程实验https://blog.csdn.net/qq_35447918/article/details/102717659 继续执行后续的MapReduce程序示例
 

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值