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 之间心跳协议。
欢迎来到这里!
我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。
注册 关于