Client将数据写入HDFS流程

1.Client调用DistributedFileSystem对象的create()方法,创建一个文件输出流

2.DistributedFileSystem对namenode创建一个RPC调用,在文件系统的命名空间中创建一个新文件。

3.Namenode执行各种不同的检查以确保这个文件不存在,并且客户端有创建该文件的权限。如果这些检查均通过,namenode就会为创建新文件记录一条记录,否则,文件创建失败,向Client抛出IOException,DistributedFileSystem向Client返回一个FSDataOutputStream队形,Client可以开始写入数据。

4.DFSOutputStream将它分成一个个的数据包,并写入内部队列。DataStreamer处理数据队列,它的责任时根据datanode列表来要求namenode分配适合新块来存储数据备份。这一组datanode构成一个管线---我们假设副本数为3,管路中有3个节点,DataStreamer将数据包流式床书到管线中第一个datanode,该dananode存储数据包并将它发送到管线中的第二个datanode,同样地,第二个datanode存储该数据包并且发送给管县中的第3个。

5.DFSOutputStream也维护着一个内部数据包队列来等待datanode的收到确认回执(ack queue)。当收到管道中所有datanode确认信息后,该数据包才会从确认队列删除。

6.Client完成数据的写入后,回对数据流调用close()方法

7.将剩余所有的数据包写入datanode管线中,并且在练习namenode且发送文件写入完成信号之前


©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 关于Mongodb的全面总结 MongoDB的内部构造《MongoDB The Definitive Guide》...
    中v中阅读 32,039评论 2 89
  • 摘要:当数据集超出一台物理计算机的存储能力量时,便有必要将它分布到多个独立的计算机。管理着跨计算机网络存储的文件系...
    杨赟快跑阅读 1,015评论 0 11
  • HDFS的设计 HDFS以流式数据访问模式来存储超大文件,运行于商用硬件集群上。 超大文件:指的是几百MB、几百G...
    Vechace阅读 854评论 0 1
  • 科多大数据老师根据同学们最近的问题总结了Hadoop之HDFS的学习笔记,现在分享给大家,希望这个学习笔记可以帮助...
    kuntoria阅读 712评论 0 0
  • 第十三节 将计就计文:ShakespeareSky(莎士比亚斯基) 父亲第三次来喊的时候,济雨已经收拾好了碗筷,但...
    ShakespeareSky阅读 246评论 0 0