什么是MapReduce

例如用MapReduce如何计算12+22+32+42

用MapReduce执行Wordcount

步骤1:Map

map task1 和map task2是独立,并行进行

并行处理能加快速度

Map阶段输出起中间媒介作用的(key,value)值,做为Reduce的输入

步骤2 Reduce

Map的输出是Reduce的输入,最后Reduce输出右边的(key,value)

Reduce阶段不是独立进行的,而是根据key值进行分组,同一个key值的record在一个Reduce进程中运行,这样它们才能sum up.

Reduce具体的工作(partition和merge)

相同的key分到一个Reduce task, 具体分给哪个reduce处理,可以用Hash partitioning来计算,之所以选择Hash是因为它映射的hash number能做到均匀负载

Hadoop code - Map(Hadoop是开源的,而MapReduce不是的,MapReduce是由google发明的)

Wordcount的代码

MapReduce是由Google发明的,但是并没有公开实现代码,只是发表了关于它的论文

Yahhoo的工程师写了开源的MapReduce的实现,所以它变为了Apache Hadoop,现在被广泛应用

MapClass继承了基础的MapReduceBase类,实现了一个接口(一个模板接口)

Main function 是map, key和value(是text类型的数据)作为参数,有一个output,和reporter(以防止你想事后report一些事情)

Hadoop code - Reduce

Main function为reduce

一个key调用一次reduce function,多个key则调用多次reduce function

reduce function将对应同一个key的values相加.

Hadoop code - Driver

conf.setJobName(“mywordcount”);       设置job的名字

conf.setOutputKeyClass("Text.class");   设置output key的class为words

conf.setOutputValueClass(IntWritable.class); 设置values的class为 ints

conf.setMapperClass();设置map的class

conf.setReducerClass();设置reduce的class

FileInputFormat.addInputPath(); 将data的文件目录加入inputPath

FileOutputFormat.setOutputPath(); 设置output的path目录

JobClient.runJob(conf);  run这个job

云计算(5)---MapReduce的更多相关文章

  1. 换个角度理解云计算之MapReduce

    上一篇简单讲了一下HDFS,简单来说就是一个叫做“NameNode”的大哥,带着一群叫做“DataNode”的小弟,完成了一坨坨数据的存储,其中大哥负责保存数据的目录,小弟们负责数据的真正存储,而大哥 ...

  2. 换个角度理解云计算之MapReduce(二)

    接上篇 3.Combiner操作 前面讲完Map操作,总结一下就是:一个大文件,分成split1~5,对应于Map1~5,每一个Map处理一个split,每一个split的每一行,会用每一个Map的m ...

  3. 云计算(8)--MapReduce如何处理fault

    一些常见的故障 NM周期性的给RM发送heartbeats,如果RM发现server fails,则它会让所有与这个server有关的AM知道,让受影响的job的AM采取一些action,重新分配它的 ...

  4. 从hadoop框架与MapReduce模式中谈海量数据处理

    http://blog.csdn.net/wind19/article/details/7716326 前言 几周前,当我最初听到,以致后来初次接触Hadoop与MapReduce这两个东西,我便稍显 ...

  5. 从Hadoop框架与MapReduce模式中谈海量数据处理(含淘宝技术架构) (转)

    转自:http://blog.csdn.net/v_july_v/article/details/6704077 从hadoop框架与MapReduce模式中谈海量数据处理 前言 几周前,当我最初听到 ...

  6. 从Hadoop骨架MapReduce在海量数据处理模式(包括淘宝技术架构)

    从hadoop框架与MapReduce模式中谈海量数据处理 前言 几周前,当我最初听到,以致后来初次接触Hadoop与MapReduce这两个东西,我便稍显兴奋,认为它们非常是神奇.而神奇的东西常能勾 ...

  7. Hadoop-- MapReduce简单理解

    1.Hadoop和MapReduce概念 Mapreduce是一种模式. Hadoop是一种框架. Hadoop是一个实现了mapreduce模式的开源的分布式并行编程框架. 2.Hadoop框架   ...

  8. 系统架构师JD

    #################################################################################################### ...

  9. (转)Hadoop 简介

    转自:http://www.open-open.com/lib/view/open1385685943484.html mapreduce是一种模式,一种什么模式呢?一种云计算的核心计算模式,一种分布 ...

随机推荐

  1. k8s nfs

    1 yum install -y nfs-utils-* 2 mkdir /home/data 3 vim /etc/exports /home/data 10.0.0.0/24(rw,async,n ...

  2. noVNC使用——访问多台vnc

    一.模拟实验环境 1.CentOS6.8系统2.KVM环境3.使用KVM环境的两个系统(Windows,Linux)4.noVNC5.vncserver 二.实验过程1.在kvm的环境下,通过xml创 ...

  3. 创建一个用目录分层的Rust应用

    一:前言,这是Rust基础程序,主要是用来讲解怎么创建分层(类似Java package)的应用: 二:代码实现: 2.1在src下创建main.rs,然后声明main方法,代码如下: fn main ...

  4. 剑指offer27:按字典序打印出该字符串中字符的所有排列

    1 题目描述 输入一个字符串,按字典序打印出该字符串中字符的所有排列.例如输入字符串abc,则打印出由字符a,b,c所能排列出来的所有字符串abc,acb,bac,bca,cab和cba. 输入描述: ...

  5. Linux基础-13-源码安装软件包

    1.准备 安装必要软件 yum install gcc-* glibc-* -y yum groupinstall '开发工具' -y 2.解包 tar xvf 包名 3.运行configure脚本, ...

  6. 【HC89S003F4开发板】 4端口消抖

    HC89S003F4开发板端口消抖 一.前言 看到资料里有中断消抖的例子,因为以前项目里有遇到高频干扰频繁退出休眠的情况,所以好奇用这个配置能不能解决. 二.对demo进行修改 @实现效果 P01设置 ...

  7. 如何利用 iTunes 把 m4a/wav 文件转成 MP3 格式

    MAC技巧 | 如何利用 iTunes 把 m4a/wav 文件转成 MP3 格式 - 简书

  8. vue常用时间修饰符记录

    1.stop:阻止冒泡 如下:正常情况下,我们点击最内层的inner_inner的时候,事件会向上冒泡,inner 和outer也会执行.我们在inner_inner事件加上.stop修饰符,就会阻止 ...

  9. ESlint 格式化代码 备忘

    vscode 代码格式化配置 vscode 菜单 文件->首选项->设置 --->进入扩展查找到ESlint,点击任一选项中的[在setting.json中配置],复制以下代码 { ...

  10. Go 操作 Mysql(一)

    关于 Go 的标准库 database/sql 和 sqlx database/sql 是 Go 操作数据库的标准库之一,它提供了一系列接口方法,用于访问数据库(mysql,sqllite,oralc ...