美文网首页
【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