| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 大数据 -> Hadoop源码分析(八) -> 正文阅读 |
|
[大数据]Hadoop源码分析(八) |
2021SC@SDUSC 1.NameNode中的文件操作
abandonBlock 用于放弃一个数据块。当客户端通过类似addBlock方法获取LocatedBlock 后,可以打开到一个 block 的输出流,由于从DataNode 出错到?NameNode 发现这个信息,需要有一段时间,导致打开输出流时可能出错,这
时客户端可以向 NameNode 请求放弃这个数据块。
abandonBlock 的处理不是很复杂,首先检查租约(调用 checkLease 方法。block 对应的文件存在,文件处于构造状态,租约拥有者匹配),如果通过检查,调用 FSDirectory 的 removeBlock,从INodeFileUnderConstruction/BlocksMap/CorruptReplicasMap 中删除 block,然后通过 logOpenFile()记录变化。
如果数据块被写满,客户端可以通过 addBlock 创建新的数据块。allocateBlock 创建一个新的 Block 对象,然后调用 addBlock,检查参数后把数据块加到?BlocksMap 对象和对应的 INodeFile 对象中。allocateBlock 返回后,getAdditionalBlock 还会继续更新一些需要记录的信息,最后返回一个新构造的 LocatedBlock。
当客户端完成对数据块的写操作后,调用 complete 完成写操作。方法 complete 如果返回是 false,那么,客户端需要继续调用 complete 方法。
调用reportBadBlocks. 2.目录树
更改文件名。调用 FSNamesystem 的 renameTo方法。
?
finalize 一个升级,确认客户端有超级用户权限以后,调用 FSImage.finalizeUpgrade()。
将文件信息持久化。调用 FSDirectory 的 persistBlocks,将文件的原信息通过 logOpenFile(path, file)写日志。
用于?DataNode 向 NameNode 登记。输入和输出参数都是 DatanodeRegistration。
DataNode收送到?NameNode 的心跳信息。
DataNode Command支持的命令:
DNA_TRANSFER
:拷贝数据块到其他 DataNode
DNA_INVALIDATE
:删除数据块
DNA_SHUTDOWN
:关闭 DataNode
DNA_REGISTER
:DataNode 重新注册
DNA_FINALIZE
:提交升级
DNA_RECOVERBLOCK
:恢复数据块
FSNamesystem.handleHeartbeat 的处理过程:
调用 getDatanode 方法找对应的 DatanodeDescriptor,保存在变量 nodeinfo(可能为 null)
中,如果现有 NameNode 上记彔的 StorageID 和请求的不一样,返回DatanodeCommand.REGISTER,让DataNode重新注册。
如果发现当前节点需要关闭(已经?isDecommissioned),抛异常
DisallowedDatanodeException。
|
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/24 9:16:26- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |