UserGroupInformation类定义了一个与文件系统相关的用户和组信息抽象的内容,Hadoop框架实现了一个基于Unix系统的用户和组信息的实现类UnixUserGroupInformation,该类继承自UserGroupInformation抽象类。
从UserGroupInformation抽象类与其子类UnixUserGroupInformation的属性字段可以看出,抽象类所定义的功能信息重心在,描述一个登录以后获得的UserGroupInformation实例,而UnixUserGroupInformation类主要是侧重于登录前的信息的处理。首先看一下UnixUserGroupInformation类中定义的属性:
前面两个是默认的Unix用户名DEFAULT_USERNAME和组名DEFAULT_GROUP,另外其中用户名userName和组名groupNames是根据UnixUserGroupInformation类构造方法设置的,这样保证了即使无法得到用户和组的信息,也能够使用默认的值去填充,比较适合用于测试,快速定位到用户名和组名的设置处。
第二个属性user2UGIMap是一个<用户名, 用户和组信息实例>的Map,用来快速获取到用户和组的信息。
最后一个UGI_TECHNOLOGY定义读获取用户和组信息的方式,显然该类中默认使用从文本中读取字符串的方式来构造。
对于UnixUserGroupInformation类实例的构造,该类给出了四个方法: