hadoop2.x mapreduceDemo

【前言】hadoop2.X后就不能再用eclipse的hadoop插件了,所以在书写hadoop工程的时候尤其是mapreduce计算工程运行时与hadoop1.x稍有区别,在此简短做一记录

注意:这里以jar包的方式运行mapreduce工程

典型案例wordCount

【1】书写WCMapper

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

public class WCMapper extends Mapper<LongWritable, Text, Text, LongWritable>{

    @Override
    protected void map(LongWritable key, Text value, Context context)
            throws IOException, InterruptedException {
        //accept
        String line = value.toString();
        //split
        String[] words = line.split(" ");
        //loop
        for(String w : words){
            //send
            context.write(new Text(w), new LongWritable(1));
        }
    }
}

【2】书写WCReduce

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

public class WCReducer extends Reducer<Text, LongWritable, Text, LongWritable>{

    @Override
    protected void reduce(Text key, Iterable<LongWritable> values, Context context)
            throws IOException, InterruptedException {
        //define a counter
        long counter = 0;
        //loop
        for(LongWritable l : values){
            counter += l.get();
        }
        //write
        context.write(key, new LongWritable(counter));
    }
}

【3】书写WordCount

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 WordCount {
    public static void main(String[] args) throws Exception {
        Job job = Job.getInstance(new Configuration());
        
        //notice
        job.setJarByClass(WordCount.class);
        
        //set mapper`s property
        job.setMapperClass(WCMapper.class);
        job.setMapOutputKeyClass(Text.class);
        job.setMapOutputValueClass(LongWritable.class);
        FileInputFormat.setInputPaths(job, new Path("/mrDemo/input/words.txt"));
        
        //set reducer`s property
        job.setReducerClass(WCReducer.class);
        job.setOutputKeyClass(Text.class);
        job.setOutputValueClass(LongWritable.class);
        FileOutputFormat.setOutputPath(job, new Path("/mrDemo/output/wcCount"));
        
        //submit
        job.waitForCompletion(true);
    }
}

【4】打jar包

步骤:
        右击 > export > java > JAR file > next > 填写jar名称 > next > next > 选择main方法入口
1.png
2.png
3.png

【5】将jar包和所要计算的文件上传至linux
注意:这里所要分析的文件必须存入再次上传到HDFS,而且其路径要与代码中inputPath的路径一致
【6】hadoop运行jar

hadoop jar /jar包路径
2016-12-06_205407.png
2016-12-06_205544.png
2016-12-06_205613.png
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • Hadoop的编程可以是在Linux环境或Winows环境中,在此以Windows环境为示例,以Eclipse工具...
    欢醉阅读 1,602评论 0 28
  • 之前的有点忘记了,这里在云笔记拿出来再玩玩.看不懂的可以留言 大家可以尝试下Ambari来配置Hadoop的相关环...
    HT_Jonson阅读 3,227评论 0 50
  • 使用搭建部署分布式集群一:环境准备: 1:首先要有一个Centos7操作系统,可以在虚拟机中安装。 2:在cent...
    yaoshiyou阅读 388评论 0 1
  • 经过一系列的前期环境准备,现在可以开始Hadoop的安装了,在这里去apache官网下载2.7.3的版本http:...
    欢醉阅读 1,839评论 8 28
  • 网友小悠跟我说他被孤立了,感觉同事正在疏远她,小悠百思不得其解。直到有一天,小悠中午吃完饭刚拿出书来,准备看书。同...
    桐花满地阅读 397评论 3 1

友情链接更多精彩内容