2. MapReduce 简介

MapReduce 实际上是分为两个过程

  1. map 过程 : 数据的读取
  2. reduce 过程 : 数据的计算

并行计算是一个非常复杂的过程, mapreduce是一个并行框架。

在Hadoop中,每个MapReduce任务都被初始化为一个Job,每个Job又可以分为两种阶段:map阶段和reduce阶段。这两个阶段分别用两个函数表示,即map函数和reduce函数

我们可以看下典型的官方列子

开发

用idea 开发开发

pom.xml 添加依赖

<dependencies>
<dependency>
<groupId>org.apache.hadoop</groupId>
<artifactId>hadoop-common</artifactId>
<version>2.7.2</version>
</dependency>
<dependency>
<groupId>org.apache.hadoop</groupId>
<artifactId>hadoop-core</artifactId>
<version>1.2.1</version>
</dependency>
</dependencies>

写代码:

import org.apache.hadoop.fs.Path;

import org.apache.hadoop.io.IntWritable;

import org.apache.hadoop.io.LongWritable;

import org.apache.hadoop.io.Text;

import org.apache.hadoop.mapred.*;

import java.io.IOException;

import java.util.Iterator;

import java.util.StringTokenizer;

/**

  • Created by diwu.sld on 2016/4/13.

    */

    public class WordCount{

    public static class CountMap extends MapReduceBase

    implements Mapper<LongWritable, Text, Text, IntWritable>{

    private final static IntWritable one = new IntWritable(1);

    private Text word = new Text();

     public void map(LongWritable longWritable,
    Text text,
    OutputCollector<Text, IntWritable> outputCollector,
    Reporter reporter) throws IOException {
    String line = text.toString();
    StringTokenizer tokenizer = new StringTokenizer(line); while(tokenizer.hasMoreTokens()){
    word.set(tokenizer.nextToken());
    outputCollector.collect(word, one);
    }
    }

    }

    public static class CountReduce extends MapReduceBase implements

    Reducer<Text, IntWritable, Text, IntWritable> {

    public void reduce(Text key, Iterator values,

    OutputCollector<Text, IntWritable> output, Reporter reporter)

    throws IOException {

    int sum = 0;

    while (values.hasNext()) {

    sum += values.next().get();

    }

    output.collect(key, new IntWritable(sum));

    }

    }

    public static void main(String[] args) throws Exception {

    JobConf conf = new JobConf(WordCount.class);

    conf.setJobName("wordcount");

     conf.setOutputKeyClass(Text.class);
    conf.setOutputValueClass(IntWritable.class); conf.setMapperClass(CountMap.class);
    conf.setCombinerClass(CountReduce.class);
    conf.setReducerClass(CountReduce.class); conf.setInputFormat(TextInputFormat.class);
    conf.setOutputFormat(TextOutputFormat.class); FileInputFormat.setInputPaths(conf, new Path(args[0]));
    FileOutputFormat.setOutputPath(conf, new Path(args[1])); JobClient.runJob(conf);

    }

    }

然后打好包 HadoopDemo:

1. Project Sturcture->Artifacts->+
2. Build Artifacts

放到 hadoop 目录下运行

运行

  1. bin/hadoop fs -mkdir -p input
  2. bin/hadoop fs -copyFromLocal README.txt input
  3. bin/hadoop jar demos/HadoopDemo.jar WorldCount input output
  4. bin/hadoop fs -cat output/* 或者bin/hadoop fs -ls output
  5. bin/hadoop fs -cat output/part-r-00000

总结

如果有N个文件,和对这个N个文件的计算,我们可以用并行来提高运行效率。但是文件有大有小, 计算量有多又少, 如何进行并行和分配任务是一个非常繁琐的事情。 所以有了Hadoop这个并行框架来解决我们的问题。

Hadoop 主要分为两大块: 分布式文件存储和分布式计算。

在分布式文件存储中,他会把文件分割为想多相同的小块。

MapReduce 简介的更多相关文章

  1. MapReduce简介

    MapReduce简介 参考自[http://www.cnblogs.com/swanspouse/p/5130136.html] MapReduce定义: MapReduce是一种可用于数据处理的编 ...

  2. 【MapReduce】一、MapReduce简介与实例

    (一)MapReduce介绍 1.MapReduce简介   MapReduce是Hadoop生态系统的一个重要组成部分,与分布式文件系统HDFS.分布式数据库HBase一起合称为传统Hadoop的三 ...

  3. 大数据技术 —— MapReduce 简介

    本文为senlie原创,转载请保留此地址:http://www.cnblogs.com/senlie/ 1.概要很多计算在概念上很直观,但由于输入数据很大,为了能在合理的时间内完成,这些计算必须分布在 ...

  4. MapReduce简介以及详细配置

    1.MapReduce(一个分布式运算框架)将数据分为数据块,发送到不同的节点,并行方式处理. 2.NodeManager和DataNode在一个节点上,程序与数据在一个节点. 3.内容分为两个部分 ...

  5. MapReduce的核心资料索引 [转]

    转自http://prinx.blog.163.com/blog/static/190115275201211128513868/和http://www.cnblogs.com/jie46583173 ...

  6. MapReduce原理与设计思想

    简单解释 MapReduce 算法 一个有趣的例子 你想数出一摞牌中有多少张黑桃.直观方式是一张一张检查并且数出有多少张是黑桃? MapReduce方法则是: 给在座的所有玩家中分配这摞牌 让每个玩家 ...

  7. 化繁为简(三)—探索Mapreduce简要原理与实践

    目录-探索mapreduce 1.Mapreduce的模型简介与特性?Yarn的作用? 2.mapreduce的工作原理是怎样的? 3.配置Yarn与Mapreduce.演示Mapreduce例子程序 ...

  8. Hadoop(十二)MapReduce概述

    前言 前面以前把关于HDFS集群的所有知识给讲解完了,接下来给大家分享的是MapReduce这个Hadoop的并行计算框架. 一.背景 1)爆炸性增长的Web规模数据量 2)超大的计算量/计算复杂度 ...

  9. 典型分布式系统分析之MapReduce

    在 <分布式学习最佳实践:从分布式系统的特征开始(附思维导图)>一文中,提到学习分布式系统的一个好方法是思考分布式系统要解决的问题,有哪些衡量标准,为了解决这些问题:提出了哪些理论.协议. ...

随机推荐

  1. asp.net三层架构详解

    一.数据库 /*==============================================================*/ /* DBMS name:      Microsof ...

  2. Windows Phone Sliding Effect

    <Grid x:Name="ContentPanel" Grid.Row="1" Margin="12,0,12,0" Backgro ...

  3. Twentydaysgone

    这个暑假,在学校呆了一个月,考了两次科目二,被驾校坑了五百块,四级又挂了,段位差点掉到白银 参加二十多天工作室的培训,学长直接带着做itheima的某某安全卫士,跟着视频也迷迷瞪瞪敲完了代码,一知半解 ...

  4. iOS开发之Core Animation

    在IOS中如果使用普通的动画则可以使用UIKit提供的动画方式来实现,如果想实现更复杂的效果,则需要使用Core Animation了. 在Core Animation中我们经常使用的是 CABasi ...

  5. spring mvc异常统一处理(ControllerAdvice注解)

    首先我的项目是一个为移动端提供的json数据的,当后台报错时如果为移动端返回一个错误页面显得非常不友好,于是通过ControllerAdvice注解返回json数据. 首先创建一个异常处理类: pac ...

  6. xdebug所有相关方法函数详解(中文翻译版)

    此次翻译部分借助google翻译,如有错误,请联系qq:903464207反馈问题,或者留言反馈 翻译时间:2016年4月18日09:41:34 xdebug.remote_enable = onxd ...

  7. osip2 代码分析

    主要类型定义: 1.osip_t /** * Structure for osip handling. * In order to use osip, you have to manage at le ...

  8. Unity字节序问题

    问题 Unity中有些配置信息并不想在发布之后给其他人看到,所以在打包的时候进行了简单的编码处理,然后保存为.bytes类型,读取的时候再进行解码处理.今天遇到的很奇葩的问题是: 如果bytes文件U ...

  9. 利用JS生成01010101……长度可控的序列

    function ab(d){ var a = []; var x = 1 ; for (var i = 0; i < d; i++) { if (x == 0) { x = x + 1; } ...

  10. mysql_索引原理及优化

    思考: 我们知道mysql最好的数据存储量级是百万级别,是的往往在百万级别或者几十万级别就会出现慢查询(我对慢查询的定义是大于1秒),几年前我所在的一个做pos机支付的联机交易的核心系统组,当时就做过 ...