Hadoop提供了一个稳定的共享存储和分析系统,存储由HDFS实现,分析由MapReduce实现。针对每个查询,每个数据库集(至少是很大一部分)都会被处理。
为什么不通过使用数据库加上更多磁盘来做大规模批量分析?为什么我们还需要MapReduce?
1、磁盘驱动器寻址时间的速度远远慢于传输速率的提高速度,寻址就是将磁头移动到特定位置进行读写操作的工序,它的特点是磁盘操作有延迟,而传输速率对应磁盘的带宽。如果数据的访问受限于磁盘的
寻址,势必会导致它花更长的时间来读或写大部分数据。
2、在更新一小部分数据的情况下,传统的B树效果很好,但在更新大部分数据时,B树的效率就没有MapReduce的高,因为它需要使用排序/合并来重建数据库。
在很多情况下,MapReduce能够被视为一种RDBMS的补充,MapReduce很适合处理那些需要分析整个数据集的问题,以批处理的方式,尤其是Ad Hoc(自主或即时)分析。RDBMS适用于点查询和更新
(其中,数据集已经被索引以提供低延迟的检索和短时间的少量数据更新)。MapReduce适合数据被一次写入和多次读取的应用,而RDBMS更适合持续更新的数据集。
关系型数据库
vs MapReduce
|
|
传统关系型数据库
|
MapReduce
|
|
数据大小
|
GB
|
PB
|
|
访问
|
交互型和批处理
|
批处理
|
|
更新
|
多次读写
|
一次写多次读
|
|
结构
|
静态模式
|
动态模式
|
|
集成度
|
高
|
低
|
|
伸缩性
|
非线性
|
线性
|
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/29974949/viewspace-1447914/
,如需转载,请注明出处,否则将追究法律责任。