HDFS内副本和块的状态分析

本文深入探讨了HDFS中副本和块的各种状态,包括finalized、rbw、rwr、rur、temporary等副本状态,以及UnderConstruction、UnderRecovery、Committed和Complete的块状态。详细介绍了HDFS数据写入的Pipeline过程、块数据一致性保证、Pipeline的失败恢复机制,并提供了副本和块状态转化图,帮助理解HDFS内部工作原理。
摘要由CSDN通过智能技术生成

前言


在HDFS内,我们通常听到的最频繁的2个名词术语:副本(Replica)和块(Block).几乎可以这么说,HDFS所有涉及到文件的操作都与这两个词相关。但是大家可能对这2个概念的理解还仅仅停留在一个比较浅的层面:比如说就是一个单一的replica或是一个单一的block块。尤其是在对块的层面,一个block块在最终完成后,它会经历哪些状态过程呢?这些细节的内容就是本文所准备阐述的。

副本/块的状态


在了解副本、块在文件的写入过程中的状态变化情况之前,我们需要对它们所有可能存在的状态做一个全面的了解。

副本状态


副本的所有潜在状态可以在DataNode的数据存放目录中进行查找。在BP打头的目录下,继续往里寻找,你应该会发现一些诸如rbw、finalized、tmp这些名称的目录。不要以为这些目录名称看起来没什么特别的,其实这与副本当前所处状态是息息相关的。

下面是一个副本所有可能处于的状态:

  • 1.finalized.finalized的意思是确定好了的状态,表明此副本是已经写好的完整的副本块,这种状态的副本是HDFS内最多的,放置于finalized目录下。
  • 2.rbw.rbw的全称是Replica being written to,表示正在被写入的副本块。所以下次如果在DataNode的数据存储目录中看到rbw下面的文件时,就明白这些块是正在被写入的副本块了。
  • 3.rwr.rwr的全称是Replica waiting to be recovered,表示的意思是等待被恢复的块。这种情况发生于DataNode突然挂掉并重启时,之前正在写的块即rbw下的块会变为rwr状态的块。因为在DataNode恢复服务之后,会涉及到租约失效,恢复操作等等。
  • 4.rur.rur的名称为Replica under recovery,表示正在恢复中的副本。这个状态是紧跟着rwr状态的。
  • 5.temporary.temporary表示的是一种临时状态。当一个副本因为没有达到规定副本系数,而发生副本块的复制或集群进行数据平衡时,这些过程中产生的副本块就处于temporary状态,位于tmp目录下。当这些副本块完全写入完毕,则会从tmp目录转到finalized目录下。当DataNode在这个时候重启的时候,tmp目录下的副本块会被删除。

块的状态


与副本类似,一个block同样有多种状态,主要有以下几种:

  • 1.Un
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值