【Hadoop】NameNode 客户端协议详解

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 之间心跳协议。

  • Hadoop

    Hadoop 是由 Apache 基金会所开发的一个分布式系统基础架构。用户可以在不了解分布式底层细节的情况下,开发分布式程序。充分利用集群的威力进行高速运算和存储。

    86 引用 • 122 回帖 • 625 关注
1 操作
zeekling 在 2024-06-10 00:43:28 更新了该帖

相关帖子

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...
zeekling
应无所住,而生其心。 --《金刚经》 吾生也有涯,而知也无涯。 --《庄子》 西安