大数据处理——Hadoop解析(二):MapReduce

  大">数据处理模型MapReduce

  (接《大数据处理——Hadoop解析(一)》)

  大数据时代生产的数据最终是需要进行计算的,存储的目的也就是为了做大数据分析。通过计算、分析、挖掘数据背后的东西,才是大数据的意义所在。Hadoop不仅提供了数据存储的分布式文件系统,更重要的是提供了分布式编程模型和分布式计算系统,通过该编程模型和分布式计算架构可以解决大数据时代所面临的数据处理问题。该分布式计算模型、架构就是大名鼎鼎的Mapreduce。Mapreduce同样来自于Google,2004年Google发表了著名的Mapreduce论文,然后被Hadoop的前身项目采纳。Mapreduce分布式计算模型应用于Google的数据搜索、数据挖掘业务中,因此,目前很多互联网企业都采用mapreduce的思路进行大数据处理。

  Mapreduce计算模型将数据的计算过程分成两个阶段:一个阶段是Map,另一个是reduce,并且,这两个阶段可以进行串联组合。因此,采用Mapreduce编程模型可以将一个算法分解成Map函数和Reduce函数。Map函数对输入数据进行分布式并行操作;reduce函数对map函数的结果进行合并操作,并且输出结果数据。Mapreduce的运行模型如下图所示:

  Mapreduce是一种分布式编程模型,为了支持这种编程模型,Hadoop项目实现了计算任务的分发、调度、运行和容错机制。Mapreduce的运行框架如下图所示:

  在分布式计算模型中,主要有两个角色,第一个角色是Job Tracker;另一个角色是Task Tracker。Job Tracker的主要任务是负责协调Mapreduce作业的执行,具体是任务的调度、分发。Job Tracker是Mapreduce计算架构中的主控节点。Task Tracker用来执行Job Tracker分配的任务,具体包括Map任务和Reduce任务。因此,Task Tracker可以被分成Map Task Tracker和Reduce Task Tracker。Job Tracker在整个框架中的地位很重要,并且时刻保持和Task Tracker之间的联系,一旦发现Task Tracker出现了故障,那么Job Tracker会在其他节点上对fail的任务进行重新调度。另外,考虑到计算任务需要从数据库或者文件系统中获取数据,因此,在Job Tracker在调度一个任务的时候,需要考虑计算节点和数据源的距离。通常可以将计算任务直接在存储节点上调度,这样可以避免网络上的数据传输,降低IO数据传输引入的延迟。

  十几年前,存储发展到一定规模的时候,提出了存储和计算的模型,从而使得存储技术独立发展,形成SAN和NAS这样的大型存储系统。在大数据计算的时代,存储和计算的无情分离也会带来负面影响,导致计算性能下降,因此,计算和存储的一体化对mapreduce框架下的大数据分析显得很有价值。其实,是否分离不是重点,关键在于系统结构需要满足应用需求。SAN、NAS这样的存储网络往往需要通过高速互连技术(FC/IB/10Gb以太网)与计算Server相连,这样可以降低IO延迟。在大数据环境下,为了降低成本,这种高速互连未必是最佳选择。因此,在以成本为导向的分布式架构中,计算和存储一体化将是一个不错的选择。

  下面来简单描述一下在mapreduce架构下如何进行分布式计算:

  1)当一个Client需要进行计算处理时,需要向Job Tracker提交一个计算作业。并且将作业以文件的形式存放在HDFS中。

  2)Job Tracker是计算资源的调度器,根据一定的策略首先将Client提交的Map任务调度到Task Tracker上。

  3)Map任务会在多个Task Tracker上并发执行。计算的中间结果会以文件的形式存储到HDFS上。

  4)当Map任务都执行完成之后,Job Tracker再分配Reduce任务到task tracker服务器上。

  5)当所有的reduce任务全部执行完成之后,计算结果会输出到Hadoop文件系统中。

  从这个过程可以看出,Job Tracker类似于CPU资源调度器;Task Tracker是CPU资源;数据的输入输出都基于Hadoop文件系统。

  从这个架构可以看出,整个系统的计算节点具有很强的可扩展性,其唯一的潜在瓶颈点在于Job Tracker。并且单一的Job Tracker也会成为一个单点故障点。和分布式文件系统类似,Job Tracker的地位和NameNode是一样的,一旦Job Tracker发生故障,那么整个计算系统将无法正常运行。因此,采用这种架构的分布式计算系统设计重点在于Job Tracker。首先需要保证Job Tracker具有很强的事务处理能力;其次需要保证Job Tracker具有很强的高可用性。

  上述的分布式计算系统只是一种计算工具,要想真正实现分布式数据处理,在编程模型上同样需要采用Mapreduce的思路,特别在算法设计上需要采用Mapreduce的模型。所有的算法需要分解成Map和Reduce的两类方法,并且这些方法可以并发执行。在数据挖掘领域有一些mapreduce的开源算法资源,例如mahout项目就是一个很有代表性的开源资源库。

  本文出自 “存储之道” 博客,请务必保留此出处http://alanwu.blog.51cto.com/3652632/1418021

时间: 2024-10-29 00:58:19

大数据处理——Hadoop解析(二):MapReduce的相关文章

大数据处理——Hadoop解析(一)

概述 这个时代被称之为大数据时代,各行各业生产的数据量呈现爆发性增长,并且基于这些爆发性增长的数据做深层次的数据挖掘.分析.处理.因此,我们可以很容易的感觉到,在这样一个大数据的时代,我们很多做事情的方法正在发生了改变.例如,基于大数据分析可以做疾病预测控制;基于大数据分析可以做交通流量预测控制;基于大数据分析可以做大型系统故障诊断预测;基于大数据分析可以做客户消费推荐.可以说,大数据时代可以解决很多以前非常难以解决的问题.可以这样讲,在这样一个时代,大数据可以让我们的生活变得更加美好. 突如其

《深入理解大数据:大数据处理与编程实践》一一1.3 MapReduce并行计算技术简介

1.3 MapReduce并行计算技术简介 1.3.1 MapReduce的基本概念和由来 1.?什么是MapReduce MapReduce是面向大数据并行处理的计算模型.框架和平台,它隐含了以下三层含义: 1)MapReduce是一个基于集群的高性能并行计算平台(Cluster Infrastructure).它允许用市场上普通的商用服务器构成一个包含数十.数百至数千个节点的分布和并行计算集群. 2)MapReduce是一个并行计算与运行软件框架(Software Framework).它提

Spark与Hadoop两大技术趋势解析

文章讲的是Spark与Hadoop两大技术趋势解析,开源数据集如今深受开发者喜爱,比如谷歌的Images dataset数据集,YouTube-8M数据集等.通过对数据集里的数据进行分析,可以发现许多隐藏信息,比如客户喜好.未知相关性,市场趋势以及其他有用的商业信息.大数据分析对企业降低成本,准确掌握市场趋势,更快完成产品迭代十分有用.说到大数据分析,16年基本被Spark与Hadoop霸屏,到底是什么样的魔力让它们足以引起大数据世界的波动,未来又会如何发展呢? Apache Spark Apa

从Hadoop框架与MapReduce模式中谈海量数据处理(含淘宝技术架构)

 文章转载自: http://blog.csdn.net/v_july_v/article/details/670407 从hadoop框架与MapReduce模式中谈海量数据处理 前言     几周前,当我最初听到,以致后来初次接触Hadoop与MapReduce这两个东西,我便稍显兴奋,觉得它们很是神秘,而神秘的东西常能勾起我的兴趣,在看过介绍它们的文章或论文之后,觉得Hadoop是一项富有趣味和挑战性的技术,且它还牵扯到了一个我更加感兴趣的话题:海量数据处理.     由此,最近凡是空闲时

Hadoop:稳定、高效、灵活的大数据处理平台

如果你和别人谈论大数据,那么你们很快就会把话题转到那只黄色的大象身上--Hadoop(它的标志是一只黄色大象).这个开源的软件平台是由Apache基金会发起的,它的价值在于能够简便且高效地处理超大型数据. 但是,究竟什么是 Hadoop呢?简单地说, Hadoop是一个能够对大量数据进行分布式处理的软件框架.首先,它将大量的数据集保存在分布式服务器集群中,之后它将在每个服务器集群里运行"分布式"数据分析应用. 那Hadoop又有什么特殊之处呢?首先,它很可靠,即使某一个或某一组服务器宕

如何低成本、高效率搭建Hadoop/Spark大数据处理平台

随着人们逐渐认识到 "大数据"的价值,互联网.电商到金融业.政企等各行业开始处理海量数据.如何低成本.敏捷高效地搭建大数据处理平台,成为影响大数据创新效率的关键. 为了让用户以最简便地方式享用阿里云全球资源,在云端构建敏捷弹性.高可靠和高性价比的大数据平台,近日,阿里云在成都云栖大会上发布了一款Hadoop/Spark场景专用的ECS存储优化型实例D1规格族,单实例提供最高56核CPU,224GB内存,168TB本地盘容量,5GB/S总吞吐,PPS达120万+.这对Hadoop/Spa

如何为大数据处理构建高性能Hadoop集群

越来越多的企业开始使用Hadoop来对大数据进行处理分析,但Hadoop集群的整体性能却取决于CPU.内存.网络以及存储之间的性能平衡.而在这篇文章中,我们将探讨如何为Hadoop集群构建高性能网络,这是对大数据进行处理分析的关键所在. 关于Hadoop "大数据"是松散的数据集合,海量数据的不断增长迫使企业需要通过一种新的方式去管理.大数据是结构化或非结构化的多种数据类型的大集合.而Hadoop则是Apache发布的软件架构,用以分析PB级的非结构化数据,并将其转换成其他应用程序可管

为什么hadoop对你大数据处理的意义重大

Hadoop得以在大数据处理应用中广泛应用得益于其自身在数据提取.变形和加载(ETL)方面上的天然优势.Hadoop的分布式架构,将大数据处理引擎尽可能的靠近存储,对例如像ETL这样的批处理操作相对合适,因为类似这样操作的批处理结果可以直接走向存储.Hadoop的MapReduce功能实现了将单个任务打碎,并将碎片任务发送(Map)到多个节点上,之后再以单个数据集的形式加载(Reduce)到数据仓库里. 但是对于Hadoop,特别是Hadoop分布式文件系统(HDFS)来说,大数据处理至少需要三

怎么为大数据处理构建高性能Hadoop集群

越来越多的企业开始使用Hadoop来对大数据进行处理分析,但Hadoop集群的整体性能却取决于CPU.内存.网络以及存储之间的性能平衡.而在这篇文章中,我们将探讨如何为Hadoop集群构建高性能网络,这是对大数据进行处理分析的关键所在. 关于Hadoop "大数据"是松散的数据集合,海量数据的不断增长迫使企业需要通过一种新的方式去管理.大数据是结构化或非结构化的多种数据类型的大集合.而 Hadoop则是Apache发布的软件架构,用以分析PB级的非结构化数据,并将其转换成其他应用程序可