《Data-Intensive Text Processing with MapReduce》读书笔记——第1章

1 引言

MapReduce是什么?

MapReduce是一种编程模型和执行平台,用于分布式海量数据处理

  • 本书范围

本书主要探讨基于MapReduce的可扩展大规模文本处理方法

Why MapReduce?

    1. 大数据已成为信息社会的现实,web content的收集、分析、监测、过滤、搜索与组织必须解决大数据问题,web-scale范围的处理与数据密集型处理息息相关
    2. 其次是分析用户行为数据的需要,成功运营的网站都能记录用户行为,如果对这些数据进行有效处理,将有利于商业决策(BI)

这些数据有多大

   商业数据

  •       Google在2004年每天用MapReduce处理100TB的数据,而到2008年每天处理20PB的数据

      eBay分别有2个数据仓库用于存储用户数据,容量分别为2PB和6.5PB,存有170 trillion条记录,每天以150 billion条的速度增长

      Facebook存储了2.5PB的用户数据,每天以15TB的速度增长

    PB级别的数据集已成为普遍现象,一个趋势非常明显:数据存储的能力远超过数据处理的能力。

   科研数据

      Geneva的Large Hadron Collider是世界上最大的粒子加速器,每年将产生15PB的数据

      Large Synoptic Survey Telescope天文望远镜每月将产生0.5PB的图片

      欧洲生物信息研究所保存了一种DNA序列数据,容量从2008年的2.5PB增加至2009年的5PB

 

     本书主要关注文本数据的处理,也会接触其他数据类型(例如关系型数据和图数据),涉及自然语言处理(NLP)和信息检索(IR)领域,这些领域的研究工作都是数据驱动的实证研究方法,采集一些应用的统计数据。由三个组件组成:数据、数据表示(特征)、捕捉特征的方法。三个组件中,数据最为重要。大量实验表明:对于单词分类应用,起决定性作用不是机器学习算法而是数据量大小,数据量越大越精确。

总之,Why large data?一是现实如此;二,more date—>better algorithms and systems

 

1.1 云计算

云计算应用实例(与MapReduce相关)

1) Web 2.0网站,UGC(User-Generated Content)存储在云中;

      基于MapReduce的应用:社交关系推荐、基于用户行为的广告推送

2) Utility computing,资源按需提供,其中伸缩性是云计算关键属性

     与MapReduce的关系:按需调配集群的size

MapReduce编程模型提供了一种抽象,把需要做的工作(what)和怎样做工作(why)区分开。

 

1.2 MapReduce的思想

横向扩展(Scale out),而不是纵向扩展(Scale up

      大量低端服务器(scale out)>少量高端服务器(scale up),这是因为高端服务器性能不是线性叠加,低端服务器性价比高,能节约成本。2007年TPC-C基准测试的结论是,一个低端服务器的性价比是同品牌高端服务器的四倍。

      投资成本只是服务器总成本的一部分,运营成本占了大头,例如能量成本、空调成本等,因此功耗成为集群的关键问题。

      数据中心效率=输入效率(有多少能量损耗在传输中)+供给效率(有多少能量损耗在降温中)+工作效率(有多少能量提供给计算单元)。三种效率中,最后一个最难测量,因为计算单元的负载和功耗不是线性关系,例如10%负载情况下的功耗大于100%负载下的二分之一。来自Google的统计数据表明,服务器负载长期在10%至50%,功耗较大。

服务器宕机很平常

      单机:磁盘失效、RAM错误

      集群:可预知的失效(系统维护或硬件升级)、不可预知失效(断电、断网)

      一个可容错的服务必须解决这些失效问题,同时不影响服务质量,也就是从用户看来并没有失效。如果一个服务器失效了,其他节点能处理请求,且其服务质量能缓慢提升。

将计算逻辑移到数据附近

      MapReduce将数据分布至各个节点存储,计算任务也由这些节点承担。这样很好地利用了局部数据,避免了过多的网络传输。

顺序处理数据,避免随机访问

      数据密集型计算中,数据集一般很大,因此数据必须存储在磁盘当中。磁盘的随机读取受物理介质限制,所以应该避免随机数据访问,而应该顺序读取数据。并且,SSD的出现,也不会使得随机访问变快。MapReduce把计算任务组成长的流操作。

为应用开发者屏蔽底层系统细节

      在撰写分布式程序时,开发者必须管理很多细节(线程、进程及机器通信等),由于分布式程序并行运行在多个主机上,数据访问时常遇到不可预知的情况,难以调试。MapReduce提供了很好的抽象,为开发者屏蔽了很多系统细节。

无缝扩展性

扩展性包括两个方面

      1)数据:两倍的数据量,相同算法下运行时间最多是两倍

      2)资源:给予两倍的资源,相同算法下运行时间不超过之前的二分之一

在扩展的时候,算法相关的属性(例如参数配置)都没发生改变。扩展性同时也带来了通信开销和内存开销。

 

1.3 MapReduce的不同之处

      并行计算将可能代替顺序处理,尤其在21世纪头十年,单核的摩尔定律已经到达极限。同时在这个时期,我们遇到了大数据的问题。数据密集型计算开始流行。MapReduce的重要性在于,它提供了解决大数据问题的有效工具,是冯诺依曼计算体系的突破。但是,MapReduce也不是完美的,它能解决部分大数据问题,但不是所有。

 

1.4 这本书不是讲什么

      这本书主要介绍MapReduce算法设计,特别是针对文本处理应用。虽然与Hadoop相关,但是这本书不讲述Hadoop编程。

posted @ 2011-12-06 15:37  维尼熊  阅读(255)  评论(0)    收藏  举报