在eclipse上实现一个 WordCount 程序,并将 WordCount 程序打包发布到 Hadoop 分布式中运行。

1、在eclipse上编写方法,实现一个 WordCount 程序

package cn.cqsw;

import java.io.IOException;
import org.apache.hadoop.io.LongWritable;
import org.apache.hadoop.io.Text;
import org.apache.hadoop.mapreduce.Mapper;

public class WCMap extends Mapper<LongWritable, Text, Text, LongWritable> {
@Override
protected void map(LongWritable key, Text value, Mapper<LongWritable, Text, Text,LongWritable>.Context context)
throws IOException, InterruptedException {
      	String[] splited=value.toString().split(" ");
        	for(String str :splited)
       	 {
		context.write(new Text(str),new LongWritable(1));
       	 }
        }
}
package cn.cqsw;

import java.io.IOException;
import org.apache.hadoop.io.LongWritable;
import org.apache.hadoop.io.Text;
import org.apache.hadoop.mapreduce.Reducer;


public class WCReduce extends Reducer<Text, LongWritable,Text, LongWritable> {
@Override
protected void reduce(Text text, Iterable<LongWritable> iterable,Reducer<Text, LongWritable,Text,LongWritable>.Context   context) throws IOException,InterruptedException {
        	long time=0;
        	for(LongWritable lw :iterable)
       	 {
		time+=lw.get();
       	 }
        	context.write(text, new LongWritable(time));
        }
}
package cn.cqsw;

import java.io.IOException;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.io.LongWritable;
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;

public class MapReduceDemo{
	public static void main(String[] args) throws IOException, ClassNotFoundException, InterruptedException {
	    Configuration conf = new Configuration();
	    Job job = Job.getInstance(conf);
	    job.setJarByClass(MapReduceDemo.class);
	    job.setMapperClass(WCMap.class);
	    job.setReducerClass(WCReduce.class);
	    job.setMapOutputKeyClass(Text.class);
	    job.setMapOutputValueClass(LongWritable.class);
	    job.setOutputKeyClass(Text.class);
	    job.setOutputValueClass(LongWritable.class);
	    Path inputPath = new Path("/hello");
	    Path outputPath = new Path("/output");
	    FileInputFormat.setInputPaths(job, inputPath);
	    FileOutputFormat.setOutputPath(job, outputPath);
	    boolean waitForCompletion = job.waitForCompletion(true);
	    System.exit(waitForCompletion?0:1);
	}

}

2、将 WordCount 程序打包

将本机的 jar包拖到虚拟机里 

3、将打包的jar包 发布到 Hadoop 分布式中运行。

(1)创建一个文件 xiaole, 并写入一些单词“xiaolei yi mi ba”  保存

(2)复制这个文件到HDFS系统上

(3)在端口上查看,创建成功!

统计单词个数

hadoop jar jar_002.jar cn.cqsw.MapReduceDemo

使用 cat 查看统计结果

hadoop fs -cat /output/part-r-00000

在端口上查看,output文件上传成功!

且能查看之前创建的hello文件中单词数量统计结果

补充,也可以用hadoop命令上传文件到hdfs系统上

1、使用 put 操作将“hello”文件上传到 HDFS 的根目录

hadoop fs -put hello /out

2、使用 Hadoop 中自带的 jar 包,实现文档中单词个数的统计功能

  1. cd hadoop/share/hadoop/mapreduce/
  2. 输入:hadoop jar hadoop-mapreduce-examples-2.7.1.jar wordcount /hello /out

3、使用 cat 查看统计结果

hadoop fs -cat /out/part-r-00000

  • 4
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值