精通HADOOP(二) - 初识Hadoop - MapReduce模型介绍

1 初识Hadoop

一个独立的低端硬件通常不能满足应用程序对资源的需求。许多企业发现他们的业务流软件并不是安装在一台成本效益较好的计算机上。对于他们来说,一个简单的解决方案就是购买具有更多内存和CPU的高端硬件,这通常需要巨额资金。这个解决方案能够达到理想的效果只要你能买到最高端的硬件,但是通常来说,预算是最主要的问题。我们有另外一个可选方案,那就是构建一个高性能的集群。一个集群能够模拟成为一个单个计算机,然而,它需要专业的安装和管理服务。现今,存在着许多专有的高性能的并且造价昂贵的集群。

幸运的是,一个更经济的解决方案是通过云计算来获得必要的计算资源。这里是一个典型的应用场景,你有一大批数据需要进行处理,这些数据分成若干个项,项与项之间不存在依赖关系,因此,你可以使用单指令多数据(SIMD)算法。Hadoop核心提供了云计算的开源框架和一个分布式文件系统。

Hadoop是阿帕奇软件基金下的一个著名的项目。这本书是一本在Hadoop核心上开发和运行软件的使用指南。这章节介绍了Hadoop核心,讲述了如何去安装也运行Hadoop。

 

1.1 MapReduce模型介绍

Hadoop完全支持MapReduce模型,MapReduce模型是谷歌公司为了在廉价的计算机集群上处理以P数量级计算的大数据集而发明的一个解决方案。这个解决方案把解决问题分成两个截然不同的步骤:

l Map: 初始化数据的读入和转换,独立的输入记录是被并行处理的。

l Reduce: 处理数据的组合和抽样,关联的数据必须通过一个模块进行集中处理。

Hadoop中MapReduce的核心概念是把输入的数据分成不同的逻辑块,Map作业首先对每一块进行独立而并行的处理。这些独立的处理块的结果会被重新组合成不同的排序的集合,这些集合最后由Reduce作业进行处理。图表1-1阐述了MapReduce模型是如何工作的。

clip_image002[6]

图表 1‑1 MapReduce模型

一个Map作业可以执行在集群中的任何一个计算机节点上。多个Map作业可以并行的执行在集群中的多个节点上。Map作业负责转换输入记录成为名值对。所有Map作业的输出会被重新组合成多个排序的集合,这里面的每一个集合会被派发给一个单独的Reduce作业。Reduce作业会对集合中排序的键值和关联在键值的多个数据值进行处理。Reduce任务也是并行的运行在集群中的。

应用程序开发人员仅仅需要提供4项输入给Hadoop框架:读取和转换输入记录到键值对的作业类,一个Map方法,一个Reduce方法和一个转换键值到输出记录的Reduce作业类。

我的第一个MapReduce应用程序是一个专业的网络爬虫。这个爬虫接受大量的网页地址,然后读取和处理网页地址的内容。因为这个应用要处理大量的网页地址,所以获取他们的内容是极其浪费时间和资源的。整个处理流程包含一下几个步骤,

1. 输入网页地址和获得网页地址关联的元数据。

2. 规格化网页地址。

3. 排除重复的网页地址。

4. 通过预定义的排除和包含过滤器过滤网页地址。

5. 通过预定义的非取内容列表过滤网页地址。

6. 通过预定义最近已看列表过滤网页地址。

7. 获取网页地址内容。

8. 标志网页地址内容的。

9. 更新最近一看列表。

10. 为下一个应用程序准备工作列表。

在这个项目,我有20个机器可以使用。这个应用程序的原来实现是非常复杂的,它使用了一个开源分不式队列框架,它的效率非常低。因为,我花费了大量的时间在开发应用程序和对应用程序进行调优。因此,这个项目濒临失败。随后,其他团队的一个成员建议我使用Hadoop。

我花费了一整天的时间建立了一个具有20台机器的Hadoop集群,并且试验性的执行了它的样例程序以后,我的团队花了几个小时的时间想出了一个解决方案,在这解决方案中包含了九个Map方法和三个Reduce方法。目标是每一个Map和Reduce方法不能超过100行的代码量。那周结束后,我们的基于Hadoop的应用程序就已经比原来的实现更快和稳定。图表1-2阐述了它的架构。标志网页内容的步骤使用了第三方类库,不幸的是,它会偶尔的出现问题并且引起整个集群瘫痪。

clip_image004

图表 1‑2 我的第一个MapReduce应用程序的架构

使用Hadoop能够把很容易的把分布式应用程序并行的运行在集群上,集群上的一个节点的失败不会影响其他节点的操作,一个作业在一个节点上的失败,Hadoop会分配其他的节点进行重试,因为这些优点,Hadoop已经成为我最喜欢的开发工具之一。

谷歌和雅虎都是用MapReduce集群来处理以P数量级计算的大数据集。在2008年初,谷歌宣布它每天通过MapReduce处理20P的数据http://googleblog.blogspot.com/2008/11/sorting-1pb-with-mapreduce.参考。

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值