首页
Web开发
Windows程序
编程语言
数据库
移动开发
系统相关
微信
其他好文
会员
首页
>
其他好文
> 详细
好程序员大数据学习路线分享HDFS读流程
时间:
2019-08-28 17:08:14
阅读:
87
评论:
0
收藏:
0
[点我收藏+]
标签:
方法
就会
关联
nod
存储
任务
地址
数据
形式
1.客户端或者用户通过调用FileSystem对象的Open()方法打开需要读取的文件,这时就是HDSF分布式系统所获取的一个对象
2.FileSystem通过远程协议调用NameNode确定文件的前几个Block的位置,对于每一个block,NameNode返回一个含有Block的元数据信息,接下来DataNode按照上面定义的距离(offSet偏移量)进行排序,如果Client本身即是一个DataNode,那么就会优先从本地DataNode节点读取数据. HDFS完成上面的工作之后返回一个FSDatalnputStream给客户端,让其从FSDatalnputStream中读取。FSDatalnputStream包装了一个类DFSInputStream,用来管理DataNode和NameNode的I/O操作。
3.NameNode向客户端返回一个包含了数据信息的地址,客户端根据地址创建一个FSDDatalnputStream的对象开始进行数据的读取
4.FSDatalnputStream根据开始存的前几个Block的DataNode地址,连接到最近DataNode上对数据开始从头读取,客户端会反复调用read()方法,以流的形式读取DataNode这中的数据
5.当读取到Block的结尾的时候,FSDatalnputStream会关闭当前DataNode的连接然后查找能否读取下一个Block的DataNode位置信息,此时给客户端产生的感觉就是数据是连续读取的,也就说在读取的时候开始查找下一个块所在的地址。读取完成时需要使用close()方法关闭FSDatalnputStream
HDFS写流程:
1.Client通过调用FileSystem类的Create()方法请求创建文件
2.FileSystem通过对NameNode发出远程请求,在NameNode里面创建一个新的文件,但是此时并不关联任何块,NameNode进行很多检查来保证不存在要创建文件已经在系统中,同时检查是否有相当权限来创建文件,如果这些都检查完了,那么NamdNode会记录下这个新文件的信息。FileSystem返回一个FSDatalnputStream给客户端用来写入数据,FSDatalnputStream将包装一个DFsOutputStream用于对DataNode和NameNode的通信,一旦文件创建失败,会给客户端返回一个l0Exception表示文件创建失败并停止任务
3.客户端开始写数据FSDatalnputStream把要写的数据分成包的形式将其写入到中间队列中,其中的数据有DataStramer来读取,DataStreamer的职责就是让NameNode分配一个新的块通过查找对应DataNode来存数据,来存储的数据会被备份出一个副本,存储到其他节点完成数据写入即可
4.FSDatalnputStream维护了一个内部关于packets的队列,里面存放着等待被DataNode确认的信息,一旦数据信息写入DataNode成功后,就会从队列中移除
5.当数据完成写入之后客户会调用close方法,通过NameNode完成写入之前通过一个方法flush将残留数据一起写进去。和NameNode确定写入的位置信息,并返回成功状态。
好程序员大数据学习路线分享HDFS读流程
标签:
方法
就会
关联
nod
存储
任务
地址
数据
形式
原文地址:https://blog.51cto.com/14479068/2433353
踩
(
0
)
赞
(
0
)
举报
评论
一句话评论(
0
)
登录后才能评论!
分享档案
更多>
2021年07月29日 (22)
2021年07月28日 (40)
2021年07月27日 (32)
2021年07月26日 (79)
2021年07月23日 (29)
2021年07月22日 (30)
2021年07月21日 (42)
2021年07月20日 (16)
2021年07月19日 (90)
2021年07月16日 (35)
周排行
更多
分布式事务
2021-07-29
OpenStack云平台命令行登录账户
2021-07-29
getLastRowNum()与getLastCellNum()/getPhysicalNumberOfRows()与getPhysicalNumberOfCells()
2021-07-29
【K8s概念】CSI 卷克隆
2021-07-29
vue3.0使用ant-design-vue进行按需加载原来这么简单
2021-07-29
stack栈
2021-07-29
抽奖动画 - 大转盘抽奖
2021-07-29
PPT写作技巧
2021-07-29
003-核心技术-IO模型-NIO-基于NIO群聊示例
2021-07-29
Bootstrap组件2
2021-07-29
友情链接
兰亭集智
国之画
百度统计
站长统计
阿里云
chrome插件
新版天听网
关于我们
-
联系我们
-
留言反馈
© 2014
mamicode.com
版权所有 联系我们:gaon5@hotmail.com
迷上了代码!