HDFS数据如何保持一致性

数据一致性通常指关联数据之间的逻辑关系是否正确和完整,HDFS是如何确保数据的一致性。

 hdfs在namenode上备份元数据,并将数据存储在datanode上的,默认备份3份。那么hdfs是如何保证数据的一致性呢?

1、hdfs的namenode机制

hdfs只有一个namenode,一旦namenode出现问题,数据块信息无法寻找。namenode中的元数据信息在工作时,会将元数据信息缓存在内存中。namenode将这些内存中的数据备份到磁盘中fsimage,每当有数据进行存入时,元数据信息会被追加到editLog文件中,内存中实际是这两部分的集合。那么什么时候将editlog与fsimage进行合并呢?HDFS引入了secondnamenode这个节点,该节点主要功能就是定期或者等到editlog达到一定数量(可在hdfs_site.xml设置)之后,就会copy namenode中的editlog和fsimage文件到secondnamenode中,在secondenamenode合并之后再更新namenode上的fsimage文件。如果一旦namenode中的数据丢失,secondenamenode中的数据将作为备份,确保元数据信息不会丢失。

2、心跳机制

namenode与datanode之间通过心跳(每3秒一次可以在配置文件中设置)信息来确认并更新datanode的元数据信息。若datanode发生故障,namenode就会将取消对该datanode节点的信任(之后的读写都不会在该datanode节点上),同时,namenode将该节点上的数据进行备份处理。namenode的备份节点的选择主要依据的是拓扑距离和具体node负载情况。

3、安全模式

HDFS在初始化阶段会进入安全模式,在安全模式下namenode不允许操作。namenode会与连接的datanode进行安全检查,只有当安全的数据块比值达到设定的阈值才会退出安全模式,

4、回滚机制

在hdfs升级或者执行数据写入时,相关的数据将会被保留备份,如果成功,则更新备份,失败,则使用备份信息。

5、安全校验

为了避免网络传输造成的数据错误问题,HDFS采用了校验和机制。各个node之间数据备份和数据读取,校验通过数据备份成功,否则备份失败,重新备份

6、回收站

当数据文件从hdfs中删除时,文件并没有消失,而是转存/trash目录下。如果误删除的话,可以在该目录下找回文件,文件的存储时间可以配置fs.trash.interval。超过该时间namenode将该文件的元数据删除,同时datanode上的文件将会被删除。

发布了42 篇原创文章 · 获赞 4 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/wangyhwyh753/article/details/105563348
今日推荐