Mapreduce概述和WordCount程序

一、Mapreduce概述

  Mapreduce是分布式程序编程框架,也是分布式计算框架,它简化了开发!

  Mapreduce将用户编写的业务逻辑代码和自带默认组合整合成一个完整的分布式运算程序,并发的运行在hadoop集群上。

二、Mapreduce优缺点

  优点:1.易于编程:只用实现几个接口即可完成一个并发的程序。

     2.良好的拓展性:再不行当前程序运行的情况下,可以通过增加节点来解决用户/数据扩展,计算量增加的问题。

     3.高容错性:可以运行在廉价的集群机器上。

     4.适合处理PB级别以上的离线处理。

  缺点:1.不擅长做实时计算、流式计算。

     2.不支持DAG(有向图)计算,有依赖的程序(spark支持)。

     3.每次把计算结果写入磁盘当中,造成磁盘io,性能较低。

三、Mapreduce编程思想

  需求:统计一个200M的单词文件,查询出每个单词出现的次数。

  思想:1.将200M的文件切分为两块,128M和72M;

     2.将两块文件分别交给两个maptask处理,对数据进行读取,切分,封装,然后传输到reducetask;

     3.reducetask将数据再次整合,累加,输出到结果文件中。

  注意:mapreduce中的所有maptask都是并行运行的,reducetask也是,

    但是reducetask的运行要依赖maptask的输出。

四、WordCount程序

/**
 * @author: PrincessHug
 * @date: 2019/3/24, 0:52
 * @Blog: https://www.cnblogs.com/HelloBigTable/
 */
public class WordCountMapper extends Mapper<LongWritable, Text,Text, IntWritable> {
    @Override
    protected void map(LongWritable key, Text value, Context context) throws IOException, InterruptedException {
        //读取数据
        String line = value.toString();

        //切分数据
        String[] fields = line.split(" ");

        //传输数据
        for (String f:fields){
            context.write(new Text(f),new IntWritable(1));
        }
    }
}

public class WordCountReducer extends Reducer<Text, IntWritable,Text,IntWritable> {
    @Override
    protected void reduce(Text key, Iterable<IntWritable> values, Context context) throws IOException, InterruptedException {
        //累加
        int sum = 0;
        for (IntWritable i:values){
            sum += i.get();
        }
        //输出
        context.write(key,new IntWritable(sum));
    }
}

public class WordCountDriver {
    public static void main(String[] args) throws IOException, ClassNotFoundException, InterruptedException {
        //配置,job对象
        Configuration conf = new Configuration();
        Job job = Job.getInstance();

        //设置运行类
        job.setJarByClass(WordCountDriver.class);

        //设置Mapper,Reducer类
        job.setMapperClass(WordCountMapper.class);
        job.setReducerClass(WordCountReducer.class);

        //设置Mapper输出数据类型
        job.setMapOutputKeyClass(Text.class);
        job.setMapOutputValueClass(IntWritable.class);

        //设置Reducer输出数据类型
        job.setOutputKeyClass(Text.class);
        job.setOutputValueClass(IntWritable.class);

        //设置输入输出流
        FileInputFormat.setInputPaths(job,new Path("G:\\mapreduce\\wordcount\\in"));
        FileOutputFormat.setOutputPath(job,new Path("G:\\mapreduce\\wordcount\\out"));

        //提交任务
        if (job.waitForCompletion(true)){
            System.out.println("运行完成!");
        }else {
            System.out.println("运行失败!");
        }

    }

}

  

原文地址:https://www.cnblogs.com/HelloBigTable/p/10586669.html

时间: 2024-10-10 01:23:09

Mapreduce概述和WordCount程序的相关文章

021_在Eclipse Indigo中安装插件hadoop-eclipse-plugin-1.2.1.jar,直接运行wordcount程序

1.工具介绍 Eclipse Idigo.JDK1.7-32bit.hadoop1.2.1.hadoop-eclipse-plugin-1.2.1.jar(自己网上下载) 2.插件安装步骤 1)将hadoop-eclipse-plugin-1.2.1.jar放到eclipse安装目录的plugins文件夹中,重新启动eclipse. 2)打开Window-->Preferens,发现Hadoop Map/Reduce选项,说明插件安装成功,配置Hadoop installation direct

hadoop---运行自带的MapReduce WordCount程序

MapReduce入门程序:WordCount hadoop的share目录下 创建一个HDFS数据目录,用于保存mapreduce的输入文件 创建一个目录,用于保存mapreduce的任务输出文件 创建一个单词文件,并上传到HDFS上面 上传该文件到HDFS上在文件所在目录下, 运行wordcount程序 查看输出结果 原文地址:https://www.cnblogs.com/taoHongFei/p/9348013.html

Yarn集群的搭建和WordCount程序在集群提交方式

一.Yarn集群概述及搭建 1.Mapreduce程序运行在多台机器的集群上,而且在运行是要使用很多maptask和reducertask,这个过程中需要一个自动化任务调度平台来调度任务,分配资源,这个平台就是Yarn! 2.Yarn提交任务的流程: 当我们向Yarn集群提交任务后,Yarn通过Resourcemanager给任务分配资源,然后由NodeManager开辟运算空间来执行任务,在这个运算空间中开辟maptask和reducetask来运行任务. 3.Yarn集群的搭建 修改配置文件

在ubuntu上安装eclipse同时连接hadoop运行wordcount程序

起先我是在win7 64位上远程连接hadoop运行wordcount程序的,但是这总是需要网络,考虑到这一情况,我决定将这个环境转移到unbuntu上 需要准备的东西 一个hadoop的jar包,一个连接eclipse的插件(在解压的jar包里有这个东西),一个hadoop-core-*.jar(考虑到连接的权限问题) 一个eclipse的.tar.gz包(其它类型的包也可以,eclipse本身就是不需要安装的,这里就不多说了) 因为我之前在win7上搭建过这个环境,所以一切很顺利,但还是要在

eclipse下安装配置hadoop(含WordCount程序测试)

这里我为大家介绍如何在windows下安装配置hadoop.,以及测试一个程序 所需要使用的插件和分别有: 一.准备工作 1.eclipse,最好是JAVAEE版本的,以为可以改变模式. 2.hadoop和eclipse的连接器: hadoop-eclipse-plugin-1.2.1.jar(这个是我所使用的,在这里可以自定义选取版本) 3.是hadoop源码包(下载最新的就可以). 将hadoop-0.20.2-eclipse-plugin.jar 复制到eclipse/plugins目录下

Hadoop学习笔记(1):WordCount程序的实现与总结

开篇语: 这几天开始学习Hadoop,花费了整整一天终于把伪分布式给搭好了,激动之情无法言表······ 搭好环境之后,按着书本的代码,实现了这个被誉为Hadoop中的HelloWorld的程序--WordCount,以此开启学习Hadoop的篇章. 本篇旨在总结WordCount程序的基本结构和工作原理,有关环境的搭建这块,网上有很多的教程,大家可以自行找谷歌或百度. 何为MapReduce: 在开始看WordCount的代码之前,先简要了解下什么是MapReduce.HDFS和MapRedu

编写Spark的WordCount程序并提交到集群运行[含scala和java两个版本]

编写Spark的WordCount程序并提交到集群运行[含scala和java两个版本] 1. 开发环境 Jdk 1.7.0_72 Maven 3.2.1 Scala 2.10.6 Spark 1.6.2 Hadoop 2.6.4 IntelliJ IDEA 2016.1.1 2. 创建项目1) 新建Maven项目 2) 在pom文件中导入依赖pom.xml文件内容如下: <?xml version="1.0" encoding="UTF-8"?> &l

spark快速入门与WordCount程序机制深度解析 spark研习第二季

2.spark wordCount程序深度剖析 标签: spark 一.Eclipse(scala IDE)开发local和cluster (一). 配置开发环境 要在本地安装好java和scala. 由于spark1.6需要scala 2.10.X版本的.推荐 2.10.4,java版本最好是1.8.所以提前我们要需要安装好java和scala并在环境变量中配置好. 下载scala IDE for eclipse安装 连接:http://scala-ide.org/download/sdk.h

win7 64位下安装hadoop的eclipse插件并编写运行WordCount程序

win7 64位下安装hadoop的eclipse插件并编写运行WordCount程序 环境: win7 64位 hadoop-2.6.0 步骤: 1.下载hadoop-eclipse-plugin-2.6.0.jar包 2.把hadoop-eclipse-plugin-2.6.0.jar放到eclipse安装目录下的plugins目录下 3.打开eclipse发现左边多出来一个DFS Locations 4.在win7上解压hadoop-2.6.0. 5.下载hadoop.dll.winuti