• HDFS读写过程


    HDFS的读写过程:

      读过程:

    Client收到用户的读请求——client拿着pathnamenode请求文件或者blockdatanode列表——client从返回的datanode列表中选择一个离自己最近的datanode,并且向他请求数据——datanode接到请求返回block的数据

    读过程:

      DFSInputStream对象中包含文件开始部分的数据块所在的DataNode地址,首先它会链接包含文件第一个块最近的DataNode。随后,在数据流中重复调用read函数,知道这个块全部读完位置,当最后一个块读取完毕时,DFSInputStream会关闭连接,并查找存储下一个数据块客户端最近的DataNode。客户端按照DFSInputSttream打开和DataNode连接返回的数据流的顺序读取该块,它会调用NameNode来检索下一组块所在的DataNode的位置信息。

      写过程:client接到用户的写请求——client接收到数据,分割成一个个block——client请求namenode,并说明写入的数据大小和备份数——namenode返回给client需要的datanode列表——client写入第一个datanode,以packet的形式写入,一个packet一般为64k;第一个datanode写入第二个datanode,依次类推;每写入一个datanode都会返回ack信息,第一个datanode返回所有的ack信息;当datanode持久化数据后向namenode汇报已经完成——client接收到ack,检查所有datanode都写入正常,发送请求给namenode要求关闭文件——namenode关闭文件。

      写过程:DFSOutputStream将文件分割成包,然后放入一个内部队列。DataStreamer会将这些小的文件包放入数据流中。

      

      副本写过程:假设副本系数为3,当本地临时文件累积到一个数据块的大小(累积量超过一个数据块的大小),客户端会从NameNode获取一个Datanode列表用于存放副本,然后客户端开始向第一个Datanode传输数据,第一个Datanode一小部分一小部分(4kb)接收数据,将每一部分写入本地仓库,并同时传输到该部分到列表中第二个Datanode节点,第二个Datanode也是这样所以,Datanode采取流水线复制,从前一个节点接收数据,并在同时转发给下一个节点。

  • 相关阅读:
    Qt编写数据可视化大屏界面电子看板4-布局另存
    Qt编写数据可视化大屏界面电子看板3-新建布局
    Qt编写数据可视化大屏界面电子看板2-配色方案
    Qt编写数据可视化大屏界面电子看板1-布局方案
    Qt编写自定义控件19-图片背景时钟
    Qt编写自定义控件18-魔法小鱼
    AngularJS概述-3D
    controller与requestmapping
    Maven pom.xml 报 Missing artifact jdk.tools:jdk.tools:jar:1.7
    大数据究竟是什么
  • 原文地址:https://www.cnblogs.com/kxdblog/p/5358822.html
Copyright © 2020-2023  润新知