设为首页 收藏本站
查看: 1137|回复: 0

[经验分享] Hadoop学习笔记—MapReduce的理解

[复制链接]

尚未签到

发表于 2015-7-11 09:12:38 | 显示全部楼层 |阅读模式
  
  我不喜欢照搬书上的东西,我觉得那样写个blog没多大意义,不如直接把那本书那一页告诉大家,来得省事。我喜欢将我自己的理解。所以我会说说我对于Hadoop对大量数据进行处理的理解。如果有理解不对欢迎批评指责,不胜感激。
Hadoop为何有如此能耐?
  Hadoop之所以能处理大量数据,是因为他提供了一个让大量机器同时处理问题的一个框架,而且高扩展性,可以随时添加机器进来。我曾经和学长讨论过Hadoop和高性能计算机,当时我说这个就像,小白对阵大侠,大侠是高性能计算,小白是普通机器。大侠只有一个,小白却能有千千万万。一个小白肯定拼不过大侠,上十个小白,百个小白……迟早小白会超过大侠。那么如何让一群性能不是很强劲的电脑结合起来,产生惊人的处理能力呢?就是通过Hadoop系统来实现。
什么是MapReduce
  Hadoop的文件系统,对于节点管理,最终还是为了进行运算。所以其中最主要的运算核心还是MapReduce。有些书上会吧Map和Reduce翻译过来讲,我觉得很生硬,不如直接用英文来的好。不翻译过来的前提要明白Map和Reduce的内在含义。Map原意是地图,计算机上多为映射,怎么个映射法?其实就是某个键值对映射到固定的reduce。那reduce又是什么,开始我也不明白,为什么不用compute了?后来算是明白了,其实reduce是对数据集进行精简,然后得出相应结果。所以叫reduce减少的意思,有翻译为归并。
为什么提出Map和Reduce
  当我们手中有大量数据的时候,如何对数据进行处理,比如去重,排序等甚至更加复杂的处理呢?我们又要如何来用多台机器对数据进行处理?
  要是我,我肯定会将大量的数据进行分类,同一类的数据集给同一台机器来处理。怎么分?怎么处理呢?这就需要看到底要对数据做那些处理了。
  而这种先分类后处理的想法就是MapReduce的过程。其中分类的具体过程在mapreduce结构中称为shuffle,下面讲解mapreduce的过程中会包涵在其中,但不会单独提出来讲。
  如果不对数据分类,意味着不能用多台机器对数据进行处理,因为会出现机器处理的数据之间存在某些重要的联系,这些联系决定了这类数据一定要在同一台机器上运行。所以,运算前对数据进行分类是必要的准备。也就是Map的过程,将有联系的数据分到一起,然后交给相应的reduce做处理。Reduce是对数据进行最终目的性的处理。
MapReduce的细节处理
  首先对大量的数据进行简单的分割,如下图所示,每一个split的大小可能是64M也可能是128M其大小是由硬盘传输速度决定的。
   DSC0000.png
  图1.HDFS对大量数据进行分块
Map过程
  对于每个split交给一个map来处理。过程如下。Map的输入是split里面的一行,key为偏移量,value就是该行的内容。处理的结果放入一个容器中,容器填满了就溢出到硬盘,溢出的过程会对数据进行partition和sort。Sort很容易理解,关键是partition,partition也就是前面说的分类,这一部最终决定该键值对未来会交给哪个reduce。但所有map运行完了,就会有一堆spill。当然在map的过程中reduce的准备阶段以及开始,reduce的准备阶段就是把本reduce对应的partition移动到本地来。但要进行reduce操作一定要等所有map结束,属于本reduce的partition全部移到本地,然后真正进入reduce阶段。
  
DSC0001.png
  图2.Map过程

  
Reduce 阶段
  首先数据准备,也就是上面说的,将属于本reduce的partition移动到本地来。然后进行排序最后成为reduce 的运算数据。Reduce才是真正对数据进行相应的处理产生最终结果。在map和reduce有一个环节—shuffle。我已经融合在了上面说介绍的步骤里面了。Shuffle指的就是数据通过map进行初步处理后,将同一类的数据分发给同一个reduce。
DSC0002.png
  图3.map+reduce过程

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-85386-1-1.html 上篇帖子: Hadoop杂记 下篇帖子: Hadoop伪分布模式配置
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表