Google大数据处理系统介绍之MapReduce浅析
Posted 企通查
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Google大数据处理系统介绍之MapReduce浅析相关的知识,希望对你有一定的参考价值。
上篇文章中,企通查对解决了Google海量数据存储问题的进行了介绍。有了海量数据后,如何在其中快速计算并获得期望结果呢?这就不得不提到MapReduce的工作原理。
MapReduce是由Google开发的一个针对大规模群组中的海量数据(大于1TB)处理分析的分布式编程模型。
MapReduce实现了Map(映射)和Reduce(规约)两个功能,基于这两个主要思想,MapReduce极大地方便了编程人员,能够令用户只需能提供自己的Map函数及Reduce函数,即可在不会分布式编程的情况下在集群上进行大规模的分布式数据处理。
同时,MapReduce能令程序设计人员在编写大规模的并发应用程序时无需考虑集群的并发性、分布性、可靠性和可拓展性等问题。
与传统的分布式程序设计相比,MapReduce封装了并行处理、容错处理、本地化计算、负载均衡等细节,具有简单而强大的接口。
正是由于MapReduce具有函数式编程语言和矢量编程语言的共性,使得这种编程模式特别适合于结构化和非结构化的海量数据的搜索、挖掘、分析等应用。
Map的本质实际上相当于拆解。
举个例子,如果现在有一辆红色的小汽车,需要把它拆解回归成零件,其中的拆解过程就是Map。
图:Map过程示例,来源于网络
那什么是Reduce呢?Reduce就是组合。
假设我们有很多来自不同汽车的零件,和各种装置零件,将其改造设计最终成为变形金刚,这个过程就是Reduce。
图:Reduce过程示例,来源于网络
知道了Map和Reduce的扮演角色后,我们理解MapReduce就更容易了。MapReduce可以简单拆分为六大过程:Input, Split, Map, Shuffle, Reduce, Finalize。
以厨房为客人提供食品为例,MapReduce就像你有很多蔬菜水果面包之类的食材(Input),也有很多位厨师,不同的厨师分到了不同的蔬菜水果面包,自己主动去拿过来(Split),拿到手上以后切碎处理(Map),随后放进不同的烤箱或冷藏机里(Shuffle),将食材存放好以后根据不同的顾客需求拿不同的素材拼装成最终的结果,这就是Reduce,产生结果以后会放到顾客那边等待付费(Ticket),这个过程是Finalize。
图:MapReduce过程示例,来源于网络
MapReduce在设计上主要具有以下技术特征:
向“外”横向扩展,而非向“上”纵向扩展
即MapReduce集群的构建完全选用价格便宜、易于扩展的低端商用服务器,而非价格昂贵、不易扩展的高端服务器。
失效被认为是常态
MapReduce集群中使用大量的低端服务器,因此,节点硬件失效和软件出错是常态。MapReduce并行计算软件框架使用了多种有效的错误检测和恢复机制,如节点自动重 启技术,使集群和计算框架具有对付节点失效的健壮性,能有效处理失效节点的检测和恢复。
把处理向数据迁移
MapReduce采用了数据/代码互定位的技术方法,计算节点将首先尽量负责计算其本地存储的数据,以发挥数据本地化特点,仅当节点无法处理本地数据时,再采用就近原则寻找其他可用计算节点,并把数据传送到该可用计算节点。
顺序处理数据、避免随机访问数据
由于磁盘的顺序访问要远比随机访问快得多,因此 MapReduce主要设计为面向顺序式大规模数据的磁盘访问处理。
为应用开发者隐藏系统层细节
MapReduce提供了一种抽象机制将程序员与系统层细节隔离开来,程序员仅需描述需要计算什么、怎么去计算即可,这样程序员可从系统层细节中解放出来。
平滑无缝的可扩展性
这里指出的可扩展性主要包括数据扩展和系统规模扩展性两层含义。
MapReduce主要提供了以下主要功能:
系统自动将一个作业(Job)待处理的大数据划分为很多个数据块,每个数据块对应于一个计算任务(Task),并自动 调度计算节点来处理相应的数据块。
作业和任务调度功能主要负责分配和调度计算节点(Map节点或Reduce节点),同时负责监控这些节点的执行状态,并 负责Map节点执行的同步控制。
为了减少数据通信,一个基本原则是本地化数据处理,即一个计算节点尽可能处理其本地磁盘上所分布存储的数据,这实现了代码向 数据的迁移。
当无法进行这种本地化数据处理时,再寻找其他可用节点并将数据从网络上传送给该节点(数据向代码迁移),但将尽可能从数据所在的本地机架上寻 找可用节点以减少通信延迟。
为了减少数据通信开销,中间结果数据进入Reduce节点前会进行一定的合并处理;一个Reduce节点所处理的数据可能会来自多个 Map节点,为了避免Reduce计算阶段发生数据相关性,Map节点输出的中间结果需使用一定的策略进行适当的划分处理,保证相关性数据发送到同一个 Reduce节点。
此外,系统还进行一些计算性能优化处理,如对最慢的计算任务采用多备份执行、选最快完成者作为结果。
以低端商用服务器构成的大规模MapReduce计算集群中,节点硬件(主机、磁盘、内存等)出错和软件出错是常态。
因此 MapReduce需要能检测并隔离出错节点,并调度分配新的节点接管出错节点的计算任务。同时,系统还将维护数据存储的可靠性,用多备份冗余存储机制提 高数据存储的可靠性,并能及时检测和恢复出错的数据。
企通查-动态大数据资源中心基于互联网+大数据+人工智能技术构建,通过分布式数据采集集群、数据特征提取、机器学习和深度学习算法模型、NLP文本分析等技术实现了数据的实时更新、高度关联、动态下载、主动推送,提供了全面、权威、及时、准确的数据资源,涵盖了宏观、中观、微观层面的全维度数据体系。大数据资源中心包含上百个维度、上千条二级类目及上千亿数据,数据类型包括结构化数据、网页数据、文本数据、图像数据等,数据存储总量超过500T,为企业采购风控、销售客户评估、Al精准获客、精准招商、投融资、高校科研机构、政府事业单位提供了全方位的数据支持和数据应用解决方案。
如您对我们感兴趣,欢迎进行咨询:
联系人:赵先生
参考文献:
https://mp.weixin.qq.com/s/mxWxyCHhYU2mx_DXfEUh_Q
https://baike.baidu.com/item/MapReduce/133425?fr=aladdin
以上是关于Google大数据处理系统介绍之MapReduce浅析的主要内容,如果未能解决你的问题,请参考以下文章