MapReduce编程模型详解— —以经典Word Count为例

MapReduce:来自于Google的计算模式

MapReduce最早是由Google研究提出的一种面向大规模数据处理的并行计算模型和方法,其初衷主要是为了解决搜索引擎中大规模网页数据的并行化处理。由于MapReduce可以普遍应用于很多大规模数据的计算问题,Google进一步将其广泛应用于很多大规模数据处理问题。到目前为止,Google有上万个各种不同的算法问题和程序都使用MapReduce进行处理。
MapReduce的推出给大数据并行处理带来了巨大的革命性影响,使其已经成为事实上的大数据处理的工业标准。尽管MapReduce还有很多局限性,但普遍公认,MapReduce是到目前为止最为成功、最广为接受和最易于使用的大数据并行处理技术。
MapReduce的发展普及和带来的巨大影响远远超出了发明者和开源社区当初的意料,以至于马里兰大学教授、2010年出版的Data-Intensive Text Processing with MapReduce的作者Jimmy Lin在书中提出:

“MapReduce改变了我们组织大规模计算的方式,它代表了第一个有别于冯·诺依曼结构的计算模型,是在集群规模而非单个机器上组织大规模计算的新的抽象模型上的第一个重大突破,是到目前为止所见到的最为成功的基于大规模计算资源的计算模型”。

Google最初的MapReduce框架如下图所示,后来发展成了Hadoop的MapReduce框架。
Google MR模型
在Google论文中提出的编程模型如下图,包括map和reduce两个过程,Hadoop的MapReduce框架完整地继承了Google的思想,无论是MR的组件、阶段还是编程时的类结构都一律全盘接收。
在这里插入图片描述

MapReduce示例程序WordCount过程

以Hadoop 2.7.3版本为例,MR所有示例在安装包的share/mapreduce目录下,名称为hadoop-mapreduce-examples-2.7.3.jar, 除了WordCount示例,其中还包括数据排序、二次排序、用户比赛的TeraSort和各种字符串处理程序,这些程序都是初学者学习MR的宝贵资料,但常常被忽略,实在可惜!从GitHub上可获取示例程序对应的源代码,细细研读体会,融会贯通,必有所得。
WordCount实现的示意图如下图所示,包括数据输入input、数据分片split、map、combine(相对于map端的reduce)、Shuffle&sort(混洗和排序,是由MR框架自动完成的)、reduce和输出ouput。
在这里插入图片描述

WordCount源码解析

package com.hikdata.utils;

import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.io.IntWritable;
import org.apache.hadoop.io.Text;
import org.apache.hadoop.mapreduce.Job;
import org.apache.hadoop.mapreduce.Mapper;
import org.apache.hadoop.mapreduce.Reducer;
import org.apache.hadoop.mapreduce.lib.input.FileInputFormat;
import org<
  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值