HDFS读写文件

写文件:

  1. client向远程NameNode发起RPC请求;
  2. NameNode检查文件是否存在,成功则为文件创建一个记录;
  3. client根据block size将文件切分成多个packets,并以“data queue”的形式进行管理,另外获取block的replication数;
  4. 以pipeline的形式将packets写入所有的replication中,先写入第一个DataNode,该DataNode把packets存储之后,将其传递给pipeline的下一个DataNode,直到最后一个DataNode(流水线形式);
  5. 最后一个DataNode存储成功后返回ack确认,在pipeline中传递到client;
  6. 传输过程中某个DataNode故障,则将当前pipeline关闭,移除故障的DataNode,剩余的DataNode仍以pipeline的形式传输,根据replication数量,分配需要的DataNode;
  7. client完成数据的写入之后,调用close()方法,关闭数据流

 

读文件:

  1. client向远程namenode发起RPC请求;
  2. namenode返回文件的block列表,元数据,DataNode地址等信息;
  3. client选取离它最近的datanode读取block;
  4. 读取完当前block之后,关闭DataNode连接,开始读取下一个最佳位置的block;
  5. 直到所有数据读取完之后,关闭数据流。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值