RAID用于两个目的.根据RAID配置,您可以获得:
>更好的性能:读取文件可以分布在多个磁盘上,也可以透明地使用不同的磁盘从同一文件系统中读取多个文件.
>容错:使用多个磁盘上的奇偶校验位复制或存储数据.如果磁盘发生故障,可以从其他副本恢复,或使用奇偶校验位重新计算.
HDFS具有类似的软件内置机制. HDFS将文件拆分为块(所谓的文件块),这些块在多个数据节点之间复制并存储在其本地文件系统中.通常,datanode有多个单独安装的磁盘(JBOD). datanode应在其所有磁盘/本地文件系统上分发其文件块.
这可以确保:
>容错:如果磁盘或节点发生故障,则可以在不同的数据节点和磁盘上使用其他副本.
>高顺序读/写性能:通过将文件拆分成多个块并将它们存储在不同的节点(和不同的磁盘)上,可以通过同时访问多个磁盘(在不同的节点上)并行读取文件.每个磁盘都可以使用其全带宽读取数据,并且其读取操作不会干扰其他磁盘.如果群集得到充分利用,所有磁盘将全速旋转,从而提供最大的顺序读取性能.
由于HDFS负责容错和“条带”读取,因此无需在HDFS下使用RAID.使用RAID只会更昂贵,提供更少的存储空间,而且速度也更慢(取决于具体的RAID配置).
由于namenode是HDFS中的单点故障,因此需要更可靠的硬件设置.因此,建议在名称节点上使用RAID.