分布式文件系统HDFS名字节点(续)
来源:互联网 发布:苹果电脑mac怎么下游戏 编辑:程序博客网 时间:2024/06/07 02:30
接着上篇的数据块和数据节点管理,都在blockmanager包下面,FSNamesystem是在server.namenode包下面。知道为什么别的什么fs系列的都放在common工程的fs包下吗,因为FSNamesystem是特定HDFS文件系统的namenode中的内容,common放的是公共的东西,还有一些抽象出来的接口(此接口非彼接口)。
1. 几个类
第一关系中的INodeFile有BlockInfo,BlockInfo保存数据块的数据节点信息。数据节点信息由DatanodeDescription表示,但是我们发现在BlockInfo的构造方法中,除了super(),还创建了一个对象数组triplets,triplets的大小为3*副本个数,类型为DatanodeDescriptor。所以通过triplets可以找到数据块的位置(包括副本的位置),还可以找到前一个数据块,后一个数据块的位置包括他们的副本。这是通过链表来实现的。
和BlockInfo一样,DatanodeDescription添加了一些名字节点工作时需要的数据。这些数据分为三类:
(1)数据节点的状态
如数据节点的状态
(2)名字节点下发给数据节点的指令
如数据块的添加,删除,恢复,复制等命令
(3)BlockIterator
这是数据块迭代器,作用和早期版本的BlockInfo的变量相同,只不过,迭代器更近了一步
DatanodeDescription有如下的方法:
a. 当数据节点成功接收到一个数据块后,会通过远程方法blockRecieved报告名字节点。名字节点把它添加或更新到对应数据节点的DatanodeDescriptor对象中,使用的就是addBlock方法。但是它调用的不是BlockInfo.addNode(),BlockInfo也没有这个方法。他调用的是DatanodeStorageInfo的addBlock()方法,方法内部又将数据块插入到数据节点管理的数据块列表中。
b. 当namenode产生一条数据块复制命令时,他会在BlockQueue队列中获取最多maxTransfers个元素,然后返回BlockTargetPair类型的集合,即数据块与数据节点存储的对应关系。
2. 数据块副本状态
这个主要涉及FSNamesystem的成员FSDirectory,FSDirectory用于操作目录树,是个facade(也可叫service)。
对特定的数据块副本,FSNamesystem会有成员变量保存相应的数据块和执行操作时需要的附加信息,有些还有计数器来存放待删除数据块数目。
数据块复制有几个不同的状态,遵循特定的转换关系,分别为:复制中,等待复制,损坏,等待删除等状态。状态转换图就不画了。
- 分布式文件系统HDFS名字节点(续)
- 分布式文件系统HDFS名字节点
- Hadoop分布式文件系统(HDFS)
- Hadoop分布式文件系统(HDFS)
- 分布式文件系统:HDFS(5)
- hdfs(分布式文件系统)基本概念
- Hadoop分布式文件系统(HDFS)
- Hadoop的分布式文件系统(HDFS)
- Hadoop分布式文件系统(HDFS)学习笔记
- Hadoop — 分布式文件系统HDFS(初识 )
- 理解Hadoop分布式文件系统HDFS(一)
- 理解Hadoop分布式文件系统HDFS(二)
- 利用libhdfs访问分布式文件系统(hdfs)
- Hadoop之HDFS(分布式文件系统)-yellowcong
- 伪分布式文件系统设置(hdfs)
- HDFS-hadoop分布式文件系统
- 分布式文件系统HDFS
- Hadoop HDFS分布式文件系统
- LeetCode OJ 之Sum Root to Leaf Numbers (根到叶上数字的和)
- 第16周oj项目3
- OC学习篇之---谓词(NSPredicate)
- DOM学习笔记五
- 安装并配置JIRA(实践笔记)
- 分布式文件系统HDFS名字节点(续)
- 第16周oj项目4
- 兔子--Google地图支持的地图模式
- DOM学习笔记六
- c++ : 过程抽象和返回值的函数
- 读取ARCGIS server发布出来的图层属性信息
- 一种免费下载CNKI、维普等资源的方法
- 抽象工厂模式
- Nginx反向代理+DNS轮询+IIS7.5 千万PV 百万IP 双线 网站架构案例