单机时代,主要使用的是RAID(独立磁盘冗余阵列)就是将多块普通磁盘组成阵列,共同对外提供服务。分布式时代,主要解决方案是分布式文件系统。
大数据技术主要是解决大规模数据的计算处理问题,但是要对数据计算,首先要解决的是大规模数据的存储问题。主要分为以下三个方面:
- 容量。大数据是以PB为单位的数据计算问题,如何存储。
- 速度。磁盘的连续读写速度很慢,通常只有几十兆。
- 可靠性。磁盘损坏怎么办
首先来说明一下RAID,常见的RAID方案有如下几种:
【RAID0】是将多块磁盘组成阵列,写数据时把数据分为N份,各自实现N块磁盘的读写,这样就可以以N份并发的写入N块磁盘。
---RAID0的可靠性不足,万一有个盘坏了咋办,于是有了RAID1,
【RAID1】是两块磁盘当一块用,同一份数据会写入两块盘中,相当于备份了一份。
---如何兼顾速度,和可靠性呢,于是有RAID3
【RAID3】RAID3是按照RAID0的方式写数据,但是会留出一块盘用于写校验码
---但是RAID3校验码的盘坏了怎么办,于是有了RAID5
【RAID5】是将校验码数据也分别存储到了各个磁盘中,基于RAID3的一个改进
【RAID6】对于RAID5的又一个改进,引入双重校验的概念,除了对数据的XOR校验,还有对XOR内容的校验
【RAID10】其实是RAID1和RAID0的合体首先基于RAID1模式将磁盘分为2份,当要写入数据的时候,将所有的数据在两份磁盘上同时写入,相当于写了双份数据,起到了数据保障的作用。且在每一份磁盘上又会基于RAID0技术讲数据分为N份并发的读写,这样也保障了数据的效率。
技术比较如下:
RAID类型 | 访问速度 | 数据可靠性 | 磁盘利用率 |
RAID0 | 很快 | 很低 | 100% |
RAID1 | 很慢 | 很高 | 50% |
RAID5 | 较快 | 较高 | (N-1)/N |
RAID6 | 较快 | 较5高 | (N-2)/N |
RAID10 | 中等 | 很高 | 50% |
RAID是一种“垂直伸缩”(scaling up),通过升级CPU、内存、磁盘等将一台计算机变得更强大。大数据使用的存储是一种“水平伸缩”(scaling out),添加更多的计算机到系统中,从而实现更强大的计算能力。垂直伸缩总有尽头,水平伸缩理论上是没有止境的,在实践中,数万台服务器的HDFS集群已经出现,我会在下一期谈谈HDFS的架构。