hadoop_book/hdfs/NamenodeProtocols详解.md
zeekling f3917672d1 NM协议详解 (#26)
Reviewed-on: #26
Co-authored-by: zeekling <lingzhaohui@zeekling.cn>
Co-committed-by: zeekling <lingzhaohui@zeekling.cn>
2024-05-25 15:11:39 +00:00

1.6 KiB
Raw Blame History

NameNode客户端协议详解

协议的定义主要在类NamenodeProtocols中。如下

public interface NamenodeProtocols
  extends ClientProtocol,
          DatanodeProtocol,
          DatanodeLifelineProtocol,
          NamenodeProtocol,
          RefreshAuthorizationPolicyProtocol,
          ReconfigurationProtocol,
          RefreshUserMappingsProtocol,
          RefreshCallQueueProtocol,
          GenericRefreshProtocol,
          GetUserMappingsProtocol,
          HAServiceProtocol {
}

根据交互对象的不同,将协议进行了不同的归类。要想了解协议内容,需要将其单独分开分析。

NamenodeProtocol 详解

BlocksWithLocations getBlocks(DatanodeInfo datanode, long size, long
      minBlockSize) throws IOException;

当前协议主要是备NameNode和主NameNode之间的通信协议。

获取指定DataNode中的块信息。

  • size 请求的块数量。
  • minBlockSize 查询的block块需要小于当前值。
public ExportedBlockKeys getBlockKeys() throws IOException;

获取NameNode产生的所有的blockkey信息。blockKey是由BlockTokenSecretManager产生的BlockTokenSecretManager有两种模式master模式和worker模式。 master主要产生token并且将token导入给workers。master和worker都可以校验token。一般情况下NN是master模式DN是worker模式。主要用于加密。

public long getTransactionID() throws IOException;

获取最新的事务ID。

DatanodeProtocol

DataNode和NameNode之间的协议。

DatanodeLifelineProtocol

DN和NN之间心跳协议。