用户组:游客
使用道具 举报
创建一个新文件的过程: 第一步:客户端通过DistributedFilesystem 对象中的creat()方法来创建文件,此时,RPC会 通过一个RPC链接协议来调用namenode,并在命名空间中创建一个新文件,namenode执行各种权限以及文件isexist 的检查,dfs返回一个输出流,否则抛出 IOEXCEPTION。输出流控制一个DFSoutPutstream,负责处理数据节点和名称节点之间的通信 第二步:客户端开始通过输出流写入数据,DFSoutPutstream将客户端写入的数据分成一个个的数据包包,然后写入到dfs中的一个queue,这些queue中的数据包被dfs中的数据流管理,数据流通过一定的分发机制,将这些数据包形成副本并存放在datanode上,当前例如我们设置的dfs.replication=3,则需要将副本放在三个datanode上,这三个datanode会通过一个管线连接,数据流将包分流给管线中第一个的datanode,这个节点会存储包并且发送给管线中的第二个datanode。同样地,第二个数据节点存储包并且传给管线中第三个datanode (我就不画流程图了,大家肯定能想明白咯 ) 第三步:其实第三步应该归属到第二步里面,上一步中所提到的DFSoutPutstream有一个内部等待确认queue,专门用来存放datanode收到的数据包,只有管线中所有的datanode收到副本并且存储成功返回成功标识后等待确认queue才会移除所有的数据包。
tntzbzc 发表于 2015-5-5 12:43 楼主是说的hadoop,还是hbase.hadoop上传文件是这么个过程
Joker 发表于 2015-5-5 13:10 这个是我个人的想法。 数据被传送到HDFS上之后,肯定被edits文件记录下来这次的操作,那么,在fsimage ...
本版积分规则 发表回复 回帖后跳转到最后一页
积极上进,爱好学习
经常帮助其他会员答疑
高级会员
44
主题
271
帖子
3
粉丝
查看 »