| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 大数据 -> 大数据hadoop hdfs 读写流程 -> 正文阅读 |
|
[大数据]大数据hadoop hdfs 读写流程 |
1、HDFS读流程1、首先调用FileSystem对象的open()方法,其实获取的是一个DistributedFileSystem的实例。 2、DistributedFileSystem用RPC调用元数据节点,得到文件的数据块信息,对于每一个数据块,元数据节点返回保存数据块的数据节点的地址。 3、会返回一个FSDataInputStream对象,可以方便的管理datanode和namenode数据流。 4、客户端调用 FSDataInputStream对象的read方法,DFSInputStream就会找出离客户端最近的datanode并连接datanode。数据从datanode流向客户端。 ?5、如果第一个block块的数据读完了,就会关闭指向第一个block块的datanode连接,(会记录失败的块+Datanode信息,下次就不会读取)接着读取下一个block块。 6、当客户端读取完毕数据的时候,调用FSDataInputStream的close()函数。 2、HDFS写流程1、客户端通过调用 DistributedFileSystem 的create方法,创建一个新的文件 2、通过 RPC(远程过程调用)调用 NameNode,去创建一个没有blocks关联的新文件。创建前,NameNode 会做各种校验,比如文件是否存在,客户端有无权限去创建等。如果校验通过,NameNode 就会记录下新文件,否则就会抛出IO异常 3、返回FSDataOutputStream,执行write()方法 4、会将第一个块写入第一个DataNode,第一个DataNode写完传给第二个节点,第二个写完传给第三节点 5、当第三个节点写完返回一个ack packet给第二个节点,第二个返回一个ack packet给第一个节点,第一个节点返回ack packet给FSDataOutputStream对象,意思标识第一个块写完,副本数为3;然后剩余的块依次这样写。 6、当向文件写入数据完成后,Client调用FSDataOutputStream.close()方法,关闭输出流,flush缓存区的数据包。 7、再调用FileSystem.complete()方法,告诉NameNode节点写入成功。 ? ? |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
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/26 8:12:17- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |