《Data-Intensive Text Processing with MapReduce》读书笔记——第1章
1 引言
MapReduce是什么?
MapReduce是一种编程模型和执行平台,用于分布式海量数据处理
- 本书范围
本书主要探讨基于MapReduce的可扩展大规模文本处理方法
Why MapReduce?
- 大数据已成为信息社会的现实,web content的收集、分析、监测、过滤、搜索与组织必须解决大数据问题,web-scale范围的处理与数据密集型处理息息相关
- 其次是分析用户行为数据的需要,成功运营的网站都能记录用户行为,如果对这些数据进行有效处理,将有利于商业决策(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编程。
浙公网安备 33010602011771号