Hadoop概述

Hadoop和关系型数据库

为什么不能用配有大量硬盘的数据库来进行大规模数据分析?我们为什么需要Hadoop?
这两个问题的答案来自于计算机硬盘的另一个发展趋势:寻址时间的提升远远不敌传输速率的提升。寻址是将磁头移动到特定磁盘位置进行读/写操作的过程,它是导致磁盘操作延迟的主要原因,而传输速率取决于磁盘的带宽(IOPS,I/O Per Second)。
如果数据访问模式中包含大量的磁盘寻址,那么读取大量数据集就必然会花更长的时间(相较于流数据读取模式,流读取模式主要取决于传输速率)。此外,数据库系统如果有大量更新时,B树的效率就明显落后于MapReduce,因为需要使用“排序/合并(sort/merge)”来重建数据库。
注1:关系型数据库使用B树构建索引。
注2:流数据读取模式,含义参看文件流读取,通过批量读取磁盘,内存缓存buffer,减少平均读取时延。

在许多情况下,可以将MapReduce视为关系型数据库管理系统的补充。两个系统之间的差异见下表:

Hadoop概述
MapReduce比较适合解决需要以批处理方式分析整个数据集的问题,尤其是一些特定目的的分析。RDBMS适用于索引后数据集的点查询(Point Query)和更新,建立索引的数据库系统能够提供对小规模数据的低延迟数据检索和快速更新。MapReduce适合一次写入、多次读取数据的应用,关系型数据库则更适合持续更新的数据集。
内容源自《Hadoop权威指南》