Hadoop学习十六:Hadoop-Hdfs DataXceiverServer源码读数据

一.DataXceiverServer入口 

        Hadoop学习十五:Hadoop-Hdfs DataXceiverServer源码概述提到

  • DataXceiverServer每接收到一个请求,就创建一个DataXceiver来处理该请求。
  • DataXceiver首先读取请求版本号并检验;然后再读取一个字节的操作码,根据操作码转入相关的子程序进行处理。本文介绍读数据。

二.读数据

  • 读取客户端发送过来的信息。
    • blockId:要读取块的block id。
    • generationStamp:要读取块的block generationStamp。此时客户端已经知道了block id and generationStamp,至于怎么知道的,后续文章会讲到。
    • startOffset:偏移量。
    • length:读取长度。
    • clientName:客户端名字。

  • 根据上述信息创建BlockSender,以上信息都是BlockSender的成员变量。
  • 创建BlockSender出错,返回给客户端一个错误状态OP_STATUS_ERROR,不再继续进行下面步骤。创建成功,返回给客户端一个错误状态OP_STATUS_SUCCESS。
  • 调用BlockSender.sendBlock发送数据。
    • 首先发送应答头。
      • checksum
      • offset

    • 然后发送数据快。
      • packetLen:包长度,不好包头。
      • offset:偏移量。
      • seqno:包序列号。
      • tail:是否最后一个包,(offset + len >= endOffset) ? 1 : 0)。
      • len:数据长度。
      • checksum:校验数据。
      • data:block数据块。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值