数据存储与分析
对多个磁盘数据的并行读写,有很多问题需要解决
- 硬件故障。避免数据丢失的常见做法是使用备份:系统保存数据的冗余副本,在发生故障后,可以使用数据的另一可用副本。
- 大多数分析任务需要以某种方式结合大部分数据共同完成分析任务。各种分布式系统允许结合多个来源的数据并实现分析,但保证其正确性是一个非常大的挑战。
Hadoop提供了一个可靠的共享存储和分析系统。HDFS实现存储,而MapReduce实现分析处理,这两部分是它的核心。
为什么不使用数据库来对大量磁盘上的大规模数据进行批量分析?
磁盘的一个发展趋势:寻址时间的提高远远慢于传输速率的提高。寻址是将磁头移动到特定磁盘位置进行读写操作的过程。它是导致磁盘操作延迟的主要原因,而传输速率取决于磁盘的带宽。
如果数据的访问模式中包含大量的磁盘寻址,那么读取大量数据集所花的时间势必会更长(相较于流式数据读取模式),流式读取主要取决于传输速率。
如果数据库系统只更新一小部分记录,那么传统的B树更有优势。但数据库系统更新大部分数据时,B树的效率比MapReduce低得多,因为需要使用“排序/合并”(sort/merge)来重建数据库。
许多情况下,可以将MapReduce视为关系型数据库管理系统的补充。MapReduce比较适合以批处理的方式处理需要分析整个数据集的问题,尤其是即席分析。RDBMS适用于点查询和更新,数据集被索引后,数据库系统能够提供低延迟的数据检索和快速的少量数据更新。MapReduce适合一次写入、多次读取数据的应用,而关系型数据库更适合持续更新的数据集。
关系型数据库和MapReduce的比较
特性 | 传统关系型数据库 | MapReduce |
---|---|---|
数据大小 | GB | PB |
访问 | 交互式和批处理 | 批处理 |
更新 | 多次读写 | 一次写入多次读取 |
结构 | 静态模式 | 动态模式 |
完整性 | 高 | 低 |
横向扩展 | 非线性 | 线性 |
网格计算
数据本地化(data locality)特性是MapReduce的核心特征,并因此而获得良好的性能。