美文网首页
【HDFS Client】DFSPacket对象什么情况下是la

【HDFS Client】DFSPacket对象什么情况下是la

作者: 小北觅 | 来源:发表于2023-12-10 16:28 被阅读0次

    前言:
    本篇文章主要回答了如下问题:
    ① HDFS客户端写数据时怎么界定一个DFSPacket对象是此block里的最后一个DFSPacket?
    ② DFSPacket对象里的lastPacketInblock何时设置为true的?

    一、前置补充知识:

    使用过HDFS API创建新文件,然后向这个新文件写数据的朋友一定知道。创建文件(create)的API会给我们返回一个输出流。参考下图,是 org.apache.hadoop.fs. FileSystem 类给我们定义的创建文件的API及其部分重载函数。

    我们拿到这个输出流之后,调用write相关的方法往里面写数据,最后close流。就完成了整个创建、写入的全过程。
    那其实在调用write相关方法后,HDFS Client帮我们封装了很多细节。这里简单提一些本文中会用到的概念:

    • DataStreamer :负责向pipeline里的datanodes发送数据包。调用输出流的write方法会把数据放到DataStreamer的dataQueue这个链表数据结构里。
    • DFSPacket : 即DataStreamer发送的数据包对象 。
    • ResponseProcessor:相应处理器线程,用于处理DFSPacket的响应ack信息。直白点讲就是:我把数据发出去了,我得知道它的状态,发送成功了还是发送失败了。

    二、DFSPacket对象简要介绍

    DFSPacket有如下这些成员变量:

    相关文章

      网友评论

          本文标题:【HDFS Client】DFSPacket对象什么情况下是la

          本文链接:https://www.haomeiwen.com/subject/ujqpgdtx.html