首页 > 代码库 > 从协议VersionedProtocol开始3——ClientProtocol、DatanodeProtocol、NamenodeProtocol、RefreshAuthorizationPolicyProtocol、RefreshUserMappingsProtocol

从协议VersionedProtocol开始3——ClientProtocol、DatanodeProtocol、NamenodeProtocol、RefreshAuthorizationPolicyProtocol、RefreshUserMappingsProtocol

1、ClientProtocol这个玩意的版本号是61L;DatanodeProtocol 是26L;NamenodeProtocol是 3L;RefreshAuthorizationPolicyProtocol是1L,RefreshUserMappingsProtocol是1L,

好了,列举这玩意有什么用,大家也看到了,其实,最经常变化的是ClientProtocol,然后是DatanodeProtocol,后边那两个基本没动过,嘿嘿

人家写代码也不是随便来的,有顺序的

public class NameNode implements ClientProtocol, DatanodeProtocol,
                                 NamenodeProtocol, FSConstants,
                                 RefreshAuthorizationPolicyProtocol,
                                 RefreshUserMappingsProtocol

2、先看看ClientProtocol,这个里边方法多,常量也不少,枚举下常量


public int GET_STATS_CAPACITY_IDX = 0;
public int GET_STATS_USED_IDX = 1;
public int GET_STATS_REMAINING_IDX = 2;
public int GET_STATS_UNDER_REPLICATED_IDX = 3;
public int GET_STATS_CORRUPT_BLOCKS_IDX = 4;
public int GET_STATS_MISSING_BLOCKS_IDX = 5;

这六个数字是干什么事情的呢?

不要急,慢慢看,

这个protocol共有三部分的方法:

分别是

File contents、Namespace management、System issues and management

第一大部分是File contents,共14个方法,里边create和addBlock都有重载的方法。

getBlockLocations、create(2)、append、recoverLease、isFileClosed、setReplication、setPermission、setOwner、abandonBlock、addBlock(2)、complete、reportBadBlocks。

按照增删改查来划分,

增:create(2)、addBlock(2)、

删:abandonBlock

改:append、setReplication、setPermission、setOwner、recoverLease

查:getBlockLocations、isFileClosed、complete、reportBadBlocks

 

从协议VersionedProtocol开始3——ClientProtocol、DatanodeProtocol、NamenodeProtocol、RefreshAuthorizationPolicyProtocol、RefreshUserMappingsProtocol