标签:
1.图解MapReduceMapReduce整体流程图

并行读取文本中的内容,然后进行MapReduce操作

Map过程:并行读取三行,对读取的单词进行map操作,每个词都以<key,value>形式生成

reduce操作是对map的结果进行排序,合并,最后得出词频。

2.简单过程:
MergeSort的过程(ps:2012-10-18)Map:
<Hello,1><World,1><Bye,1><World,1><Hello,1><Hadoop,1><Bye,1><Hadoop,1><Bye,1><Hadoop,1><Hello,1><Hadoop,1>
MergeSort:
3.代码实例:
package cn.opensv.hadoop.ch1;
import java.io.IOException;
import java.util.StringTokenizer;
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.Mapper;
import org.apache.hadoop.mapreduce.Reducer;
import org.apache.hadoop.mapreduce.lib.input.FileInputFormat;
import org.apache.hadoop.mapreduce.lib.output.FileOutputFormat;
/**
 * Hello world!
 * 
 */
public class WordCount1 {
        public static class Map extends        Mapper<LongWritable, Text, Text, LongWritable> {
        
                private final static LongWritable one = new LongWritable(1);
                private Text word = new Text();
        
                
                @Override
                public void map(LongWritable key, Text value, Context context)
                                throws IOException, InterruptedException {
                        String line = value.toString();
                        StringTokenizer tokenizer = new StringTokenizer(line);
                        while (tokenizer.hasMoreTokens()) {
                                word.set(tokenizer.nextToken());
                                context.write(word, one);
                        }
                }
        }
        public static class Reduce extends Reducer<Text, LongWritable, Text, LongWritable> {
                @Override
                public void reduce(Text key, Iterable<LongWritable> values, Context context)
                                throws IOException, InterruptedException {
                        long sum = 0;
                        for (LongWritable val : values)  {
                                sum += val.get();
                        }
                        context.write(key, new LongWritable(sum));
                }
        }
        public static void main(String[] args) throws Exception {
        
                Configuration cfg = new Configuration();
                 Job job = new Job(cfg);         
                 job.setJarByClass(WordCount1.class);    
                job.setJobName("wordcount1"); // 设置一个用户定义的job名称
                
                job.setOutputKeyClass(Text.class); // 为job的输出数据设置Key类
                job.setOutputValueClass(LongWritable.class); // 为job输出设置value类
                job.setMapperClass(Map.class); // 为job设置Mapper类
                job.setCombinerClass(Reduce.class); // 为job设置Combiner类
                job.setReducerClass(Reduce.class); // 为job设置Reduce类
                
        
                            
                FileInputFormat.setInputPaths(job, new Path(args[0]));
                FileOutputFormat.setOutputPath(job, new Path(args[1]));
                job.waitForCompletion(true);
        }
}
标签:
原文地址:http://www.cnblogs.com/qiumingcheng/p/5396369.html