CGFT《大数据技术原理与应用》中的数据错误与恢复?HDFS具有较高的容错性,可以兼容廉价的硬件,它把硬件出错看成一种常态,而不是异常,并设计了相应的机制检测数据错误和进行自动恢复,主要包括以下几种情形。
1.名称节点出错
名称节点保存了所有的元数据信息,其中,*核心的两大数据结构是Fslmage和Editlog,如果这两个文件发生损坏,那么整个HDFS实例将失效。因此,HDFS设置了备份机制,把这些核心文件同步复制到备份服务器SecondaryNameNode上,备份服务器本身不会处理任何请求,只扮演备份机的角色,虽然这样会增加名称节点服务器的负担,但是,可以有效*数据的可靠性和系统可用性。当名称节点出错时,就可以根据备份服务器SecondaryNameNode中的Fslmage和Editlog数据进行恢复。
2.数据节点出错
每个数据节点会定期向名称节点发送“心跳”信息,向名称节点报告自己的状态。当数据节点发生故障,或者网络发生断网时,名称节点就无法收到来自一些数据节点的心跳信息,这时,这些数据节点就会被标记为“岩机”,节点上面的所有数据都会被标记为“不可读”,名称节点不会再给它们发送任何I/O请求。这时,有可能出现一种情形,即由于一些数据节点的不可用,会导致一些数据块的副本数量小于沉余因子。名称节点会定期检查这种情况,一旦发现某个数据块的副本数量小于阮余因子,就会启动数据穴余复制,为它生成新的副本。HDFS和其他分布式文件系统的*区别就是可以调整沉余数据的位置。
3.数据出错
网络传输和磁盘错误等因素,都会造成数据错误。客户端在读取到数据后,会采用md5和shal对数据块进行校验,以确定读取到正确的数据。在文件被创建时,客户端就会对每一个文件块进行信息摘录,并把这些信息写入同一个路径的隐藏文件里面。当客户端读取文件的时候,会先读取该信息文件,然后,利用该信息文件对每个读取的数据块进行校验,如果校验出错,客户端就会请求到另外一个数据节点读取该文件块,并且向名称节点报告这个文件块有错误,名称节点会定期检查并且重新复制这个块。
