DataNode节点的数据存储器——DataStorage

      对于每一个DataNode节点而言,它都需要本地文件系统来存储与自己相关的数据。在前面的文章中我已经说过,任何节点都可以配置多个本地存储路径,每一个存储路径又被HDFS抽象成了一个StorageDirectory对象,但为了DataNode节点对自己存储路径的方便,HDFS又为每一个DataNode节点设计了一个DataStorage对象,DataNode节点可以利用这个对象对自己的所有存储路径进行统一的管理。所以,在本文我将主要介绍DataStorage是如何为DataNode工作的。

         首先来看看与DataStorage相关的类。

       在上面的类图中,NamespaceInfo用来表示整个HDFS集群中命名空间的版本号,这个版本号在NameNode节点格式化时生成,DataNode每一次启动向NameNode节点注册时都会获取到这个命名空间的版本号,如果DataNode是第一次启动,则会持久保存这个版本号;否则,它会用自己第一次启动获取的版本号与这个版本号进行比较,如果不匹配则终止启动。前面说过,StorageDirectory向上提供了粗粒度的事务性操纵,从上面的类图中不难看出,对StorageDirectory的事务性操作都是由DataStorage完成的。另一方面,DataStorage主要在DataNode节点启动时扮演重要的角色,所以接下来我将具体谈谈这一点。


       在DataNode节点启动的时候,DataStorage所做的事情其实也很简单。首先,我们在启动DataNode节点的时候会给它指定若干个本地存储路径,那么DataStorage就能对每一个存储路径构造成一个StorageDirectory,然后分析每一个存储路径当前的状态,对处于非正常状态的存储路径进行相应的操作(关于如何分析存储路径的状态和相应的恢复操作我在博文HDFS中的数据存储路径——StorageDirectory中已详细分析过);当所有的存储路径处于正确的状态之后,就要对每一个存储路径进行用户启动节点时的指定操作(备份/升级/回滚/恢复/提交;最后,如果所有的存储路径操作成功之后,就需要更新每一个存储路径下的版本信息,及对应的VERSION文件(关于VERSION文件,我在前面阐述StorageDirectory时也有讲过)。
        在这里我需要强调的是,DataStorage只是对DataNode的存储路径进行管理,并没有对存储路径中的具体数据文件进行管理,而关于DataNode是如何对它的单个数据文件进行管理的,不是本文要讨论的内容,但我会以后的博文中详细分析。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值