IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: 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中的文件操作

public void abandonBlock(Block b, String src, String holder
 ) throws IOException;
abandonBlock 用于放弃一个数据块。当客户端通过类似addBlock方法获取LocatedBlock 后,可以打开到一个 block 的输出流,由于从DataNode 出错到?NameNode 发现这个信息,需要有一段时间,导致打开输出流时可能出错,这 时客户端可以向 NameNode 请求放弃这个数据块。
abandonBlock 的处理不是很复杂,首先检查租约(调用 checkLease 方法。block 对应的文件存在,文件处于构造状态,租约拥有者匹配),如果通过检查,调用 FSDirectory 的 removeBlock,从INodeFileUnderConstruction/BlocksMap/CorruptReplicasMap 中删除 block,然后通过 logOpenFile()记录变化。
public LocatedBlock addBlock(String src, String clientName) throws IOException;
如果数据块被写满,客户端可以通过 addBlock 创建新的数据块。allocateBlock 创建一个新的 Block 对象,然后调用 addBlock,检查参数后把数据块加到?BlocksMap 对象和对应的 INodeFile 对象中。allocateBlock 返回后,getAdditionalBlock 还会继续更新一些需要记录的信息,最后返回一个新构造的 LocatedBlock。
 public boolean complete(String src, String clientName) throws IOException;
当客户端完成对数据块的写操作后,调用 complete 完成写操作。方法 complete 如果返回是 false,那么,客户端需要继续调用 complete 方法。
public void reportBadBlocks(LocatedBlock[] blocks) throws IOException;

调用reportBadBlocks.

2.目录树

public boolean rename(String src, String dst) throws IOException;
更改文件名。调用 FSNamesystem 的 renameTo方法。
?
 public void finalizeUpgrade() throws IOException;
finalize 一个升级,确认客户端有超级用户权限以后,调用 FSImage.finalizeUpgrade()。
public void fsync(String src, String client) throws IOException;
将文件信息持久化。调用 FSDirectory 的 persistBlocks,将文件的原信息通过 logOpenFile(path, file)写日志。
public DatanodeRegistration register(DatanodeRegistration nodeReg
 ) throws IOException
用于?DataNode 向 NameNode 登记。输入和输出参数都是 DatanodeRegistration。
public DatanodeCommand sendHeartbeat(DatanodeRegistration nodeReg,
 long capacity,
 long dfsUsed,
 long remaining,
 int xmitsInProgress,
 int xceiverCount) throws IOException
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。
  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章      下一篇文章      查看所有文章
加:2021-11-29 16:23:14  更:2021-11-29 16:24:59 
 
开发: 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-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码