2021年山东大学软件工程应用与实践项目——Hadoop源码分析(四)

2021SC@SDUSC

Hadoop源码分析(四)——DFSClient HDFS客户端(2)


上篇博客分析了DFSClient内部类,本篇,我们来分析DFSOutputStream中的成员变量和成员方法。
DFSClient HDFSk客户端源码1

3.成员变量

private Socket s;
//与目标DataNode所建立起来的Socket连接。
boolean closed = false;
//该输出流是否关闭的标识。
private String src;
//在DataNode上创建的用于保存DFSOutputStream中的数据的文件的路径字符串。
private DataOutputStream blockstream;
//用于将数据写入到DataNode的socket输出流。
private DatalnputStream blockReplyStream;
//用于接收从DataNode返回的确认信息的socket输入流。
private Block block;
//当前正在被写入的数据块对象。
final private long blocksize;
//数据块的大小。
private DataChecksum checksum;
//数据的校验和。
private LinkedList<Packet> dataQueue = new LinkedList<Packet>();
//数据队列,用于保存等待发送给DataNode的数据包Packet。
private LinkedList<Packet> ackQueue = new LinkedList<Packet>();
//确认队列,用于保存还没有被DataNode确认接收的数据包Packeto
private Packet currentpacket = null;
//当前正在被写入的数据包。
private int maxPackets = 80;
//dataQueue和ackQueue队列中一共允许存在的数据包Packet的最多个数。
private DataStreamer streamer = new DataStreamer();
//streamer线程,该线程不停地从dataQueue中取出数据包,然后发送给DataNode管道中的第一个DataNode。
private ResponseProcessor response = null;
//response线程,该线程用于接收从DataNode返回的反馈信息。
private long currentSeqno = 0;
//当前正在被DataStreamer发送的Packet在整个数据Block中的序列号。
private long lastQueuedSeqno = -1;
//dataQueue队列中最后一个Packet的序列号。
private long lastAckedSeqno = -1;
//ackQueue队列中最后一个Packet的序列号。
private long bytesCurBlock - 0;
//写入到当前Block中的字节数。
private int packetsize = 0;
//被发送的Packet的大小,其中头信息的大小也包含在内。
private int chunksPerPacket = 0;
//每个Packet中chunk的数量。
private Datanodelnfo[] nodes = null;
//保存当前正在被写入的Block的DadaNode集合。
private ArrayList<DatanodeInfo> excludedNodes = new ArrayList<DatanodeInfo>();
//用于保存返回错误的响应信息的DataNode的集合。
private boolean persistBlocks = false
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值