什么是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. npm安装10

    https://www.cnblogs.com/zouke1220/p/9723191.html

  2. SQL语言的分类(DQL、DML、DDL、DCL的概念与区别)

    SQL语言共分为四大类:数据查询语言DQL,数据操纵语言DML,数据定义语言DDL,数据控制语言DCL. 1. 数据查询语言DQL数据查询语言DQL基本结构是由SELECT子句,FROM子句,WHER ...

  3. win10 linux Ubuntu 18.04更换国内源

    安装了win10的linux bash 版本为ubuntu 18.04 首先查询自己的linux版本信息 cat /etc/issue   然后对系统的镜像源文件进行备份,再修改镜像源文件/etc/a ...

  4. poj1056(字符串判断是否存在一个字符串是另一个字符串的前缀)

    题目链接:https://vjudge.net/problem/POJ-1056 题意:给定一个字符串集,判断是否存在一个字符串是另一个字符串的前缀. 思路:和hdoj1671一样,有两种情况: 当前 ...

  5. 【剑指offer】面试题 52. 两个链表的第一个公共结点

    面试题 52. 两个链表的第一个公共结点 NowCoder 题目描述 输入两个链表,找出它们的第一个公共结点. Java 实现 ListNode Class class ListNode { int ...

  6. [Xamarin] - "GenerateJavaStubs" 异常之解决

    背景 新建的 Xamarin 项目,编译失败. Error The "GenerateJavaStubs" task failed unexpectedly.Error The s ...

  7. mysql常用系统函数归类

    数学函数 函数 作用 ABS(x) 返回x的绝对值 BIN(x) 返回x的二进制(OCT返回八进制,HEX返回十六进制) EXP(x) 返回值e(自然对数的底)的x次方 GREATEST(x1,x2, ...

  8. 稀疏数组(java实现)

    1.稀疏数组 当一个数组中大部分元素为0,或者为同一个值的数组时,可以使用稀疏数组来保存该数组. 稀疏数组的处理方法是: 1.1记录数组一共有几行几列,有多少个不同的值 1.2把具有不同值的元素的行列 ...

  9. Java 发送http GET/POST请求

    最近项目里面需要用到Java发送http请求,由于发送https请求有点复杂,暂时不考虑 HttpURLConnection HttpURLConnection是一种多用途.轻量极的HTTP客户端,使 ...

  10. 剑指offer25:复杂链表(每个节点中有节点值,以及两个指针,一个指向下一个节点,另一个特殊指针指向任意一个节点),结果返回复制后复杂链表的head。

    1 题目描述 输入一个复杂链表(每个节点中有节点值,以及两个指针,一个指向下一个节点,另一个特殊指针指向任意一个节点),返回结果为复制后复杂链表的head.(注意,输出结果中请不要返回参数中的节点引用 ...