架构师训练营 -week8 命题作业
本周作业:请画出 DataNode 服务器节点宕机的时候,HDFS 的处理过程时序图。
RAID独立硬盘冗余阵列
文件存储在性能、可用性要求不那么极致的情况下,对服务器进行磁盘冗余阵列就可以满足要求。
下面介绍几种RAID磁盘冗余阵列的方式。
RAID0
OS把数据分成几块写到多个硬盘上,任何一块硬盘损坏都导致数据不可用。写数据的性能提高了,但是可用性降低了。
RAID1
OS把数据分块之后,把一个数据块同时写入两个硬盘中去,在两个硬盘写同样的数据。比如一个数据分四块,那么两个硬盘上都写了四块。任何一个硬盘坏掉,可以从另外一个硬盘读取数据。可用性增高,但是写入速度降低。
RAID10
也就是RAID0和RAID1相互结合的方式,比如一共8个硬盘,则分为四组,每组两个硬盘相互备份。将数分为四块,每块写入每个组进行两两备份。由于数据分为4块写入,写入速度是提升的,而且任何一个硬盘损坏都可以从其分组中另一个硬盘中读取数据,可用性也提高了。但缺点是硬盘利用率低,每组浪费一个硬盘。
RAID5
比如有8块磁盘,使用其中一块磁盘保存其余7块保存数据的校验信息。也就是其余7块数据进行异或运算校验结果保存在最后一台上。当任何一台损坏的时候,使用校验信息和剩下的磁盘再进行异或运算就可以得到损坏磁盘的数据。这样就浪费了一块磁盘保存数据,对于损坏的硬盘直接插入新磁盘就可以根据校验结果进行数据恢复。校验数据是螺旋式写入到每一台硬盘上。
RAID6
与RAID5相似,但是可以损坏两块盘都能恢复。
如果有更高的写入性能要求,更加高可用,则需要使用分布式文件系统比如HDFS。
分布式文件系统HDFS
DataNode:大规模集群,大的可能几千台节点服务器,客户端可以针对多个DataNode服务器进行读写。默认情况下,一个数据块在不同的服务器上一共复制三副本作为备份,且集群至少把数据块在不同的机架上分配一个副本。这样就不担心某台服务器甚至机架损坏造成数据丢失。
DataNode失效副本复制流程
DataNode启动之后会向NameNode注册,而且会定时向NameNode发送心跳。超时未发送NameNode则判断DataNode坏掉,然后NameNode会检查坏掉的节点是哪个服务器,其备份节点在哪些服务器。然后通知其他有备份节点的其他服务器把那些备份节点复制到某个机器上去。重新恢复到三个副本备份。时序图如下:
版权声明: 本文为 InfoQ 作者【J.Spring】的原创文章。
原文链接:【http://xie.infoq.cn/article/4ceed5f4404fad6724c7203b8】。文章转载请联系作者。
评论