Hadoop之MapReduce简介

背景:今天的MapReduce简介从生活中的一个例子说起,相信麻将作为一个中国人大家应该都熟悉,现在有一个任务,将一堆数量不确定的麻将中的萬字都挑出来统计个数该怎么做?最直接的办法就是自己动手一个一个的清一个一个的数,如果这堆麻将的数量很大呢?是不是可以分成多份,多个人清多个人数,然后把每个人的数量加起来就是所需要的总数。没错,MapReduce就是这个原理,在分布式文件系统中进行分布式处理就是把一个复杂繁重的任务分配到多个服务器处理,然后处理完各个服务器再将处理结果发回给一个汇总服务器完成汇总工作,MapReduce就是这样进行分布式计算的,下面进入我们的正题简单介绍一下MapReduce。

 

简介:

MapReduce分为两个阶段:一个Map阶段一个Reduce阶段,Map阶段是一个独立程序,由多个节点通常是多个服务器独立进行,通常这里的多个节点都是并发执行,就如上面例子的多个人清麻将中的萬字并统计数量,Reduce阶段是一个独立的程序,有很多个单独的节点处理,每一个单独的节点处理一部分数据,通常的可以看做是把多个数据合并成一个的过程,如上面例子的统计每个人的萬字数汇总工作。在MapReduce框架中具体程序编写时只需要继承一个Mapper,Reducer类,覆盖里面的Map,Reduce方法即可实现,具体的安装Hadoop和编写MapReduce程序会单独抽时间跟大家分享,这里先讲原理。

 

移动计算:

在讲解MapReduce的原理之前,我们先来了解两个概念:移动计算与移动数据,传统的数据库应用程序的方式是移动数据,它的执行原理是在一个客户端上执行程序,然后通过数据库执行语句从数据库拿数据,这种方式的好处是客户端可以任意位置,数据库固定位置,数据库将所需的数据通过网络发送给客户端,这种方式的劣势也很明显,那就是当数据量很大时绝大部分时间浪费在了数据传输上,如果是大数据计算PB级的数据拷贝绝对是噩梦,因此诞生了另外一个概念:移动计算,移动计算的思想是将应用程序复制到数据所在的位置,数据获取通过磁盘IO完成,没有网络IO,往往这种程序的特点是计算的程序本身比要处理的数据小很多,需要返回的结果也很小,拷贝应用的时间与拷贝数据的时间相比有绝对的优势,由于省略了数据源网络IO只需网络传输数据处理结果,运行效率也很大提高,这种思想就是MapReduce的基本思路。了解了移动计算后我们来讲解MapReduce的原理。

 

MapReduce整体的框架原理如下:需要注意的是所有应用计算过程都是移动计算的,即将计算程序拷贝到多个数据节点上进行的。

 

具体的MapReduce过程的讲解这里用另外一个例子来讲解,例如:对一个文本内容中各个单词的个数进行统计的例子,这里出于简单只讲一个文件即只有一个数据块一个数据分区没有Combine阶段的特例讲解其原理,假设这个文件包含这些文本:

Hello Hirisw

Hello Kris

Hello Chance

Hello Change

Hello Chandi

具体的操作如下:

 

以上内容是我对Hadoop的MapReduce的个人理解,如果有什么地方有问题还请大家多多指正,谢谢

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值