设为首页 加入收藏

TOP

HDFS(六)—— HDFS 文件下载的过程
2018-12-13 16:11:43 】 浏览:27
Tags:HDFS 文件下载 过程
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/a909301740/article/details/84454520

HDFS文件下载过程

一、客户端发出下载文件的请求

客户端执行hdfs dfs -get /movie/a.avi命令请求 HDFS 下载文件到本地。

二、DFSClient 接收请求,创建 DistributedFileSystem 对象

DFSClient 接收下载文件的请求,并且创建 DistributedFileSystem 对象。

三、DistributedFileSystem 建立与 NameNode 的 RPC 通信,得到 NameNodeProxies

DistributedFileSystem 建立与 NameNode 的 RPC 通信,并且得到 NameNode 的代理对象 NameNodeProxies。

四、DistributedFileSystem 通过代理对象获取文件的元信息

DistributedFileSystem 通过代理对象去 HDFS 上查找文件的元信息。

五、在内存中查找文件的元信息

数据的元信息是优先存储在内存中的,所以 NameNode 会优先去内存中查找。

为了保证元信息的查找速率,通常我们会使用 NameNode 的联盟对内存容量进行扩展。

六、在 fsimage 文件中查找文件的元信息

如果在内存中找到了元信息,就直接返回,在内存中没有找到就会去 fsimage 文件中查找。

七、返回文件的元信息

NameNode 将找到的元信息返给 DFSClient。

八、创建输入流 FSDataInputStream

DFSClient 创建 FSDataInputStream 对象建立与 HDFS 的 IO 流。

// 打开一个输入流 <------HDFS
InputStream in = client.open(new Path("/tools/stt.txt"));

九、下载数据块

通过 IO 流循环去 DataNode 下载数据。

HDFS 会维护一个 DataNode 的失败列表,记录哪些 DataNode 坏掉了,客户端在访问数据的时候就不会去这些 DataNode 上访问。

】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇sqoop   把 hdfs 和关系型数.. 下一篇java hadoop   hdfs 上写文..

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目