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

前言:
本篇文章主要回答了如下问题:
① 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信息。直白点讲就是:我把数据发出去了,我得知道它的状态,发送成功了还是发送失败了。

相关推荐

  1. 什么面向对象

    2023-12-12 13:18:03       39 阅读
  2. 什么面向对象

    2023-12-12 13:18:03       23 阅读
  3. 什么情况导致索引失效

    2023-12-12 13:18:03       34 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2023-12-12 13:18:03       98 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2023-12-12 13:18:03       106 阅读
  3. 在Django里面运行非项目文件

    2023-12-12 13:18:03       87 阅读
  4. Python语言-面向对象

    2023-12-12 13:18:03       96 阅读

热门阅读

  1. C++相关闲碎记录(7)

    2023-12-12 13:18:03       43 阅读
  2. UGUI - 动态赋值后刷新不及时问题

    2023-12-12 13:18:03       63 阅读
  3. VTK:使用AlignFrames进行帧对齐的用法

    2023-12-12 13:18:03       63 阅读
  4. 基于协同过滤算法的旅游推荐系统设计与实现

    2023-12-12 13:18:03       56 阅读
  5. Albumentations(Augmentation Transformations)

    2023-12-12 13:18:03       48 阅读
  6. SVM与核函数在Python中的选择

    2023-12-12 13:18:03       62 阅读