MAPREDUCE服务 MRS-HDFS应用开发规则:多线程安全登录方式

时间:2024-05-28 14:22:57

多线程安全登录方式

如果有多线程进行login的操作,当应用程序第一次登录成功后,所有线程再次登录时应该使用relogin的方式。

login的代码样例:

  private Boolean login(Configuration conf){     
    boolean flag = false;     
    UserGroupInformation.setConfiguration(conf);          
    try {       
          UserGroupInformation.loginUserFromKeytab(conf.get(PRINCIPAL), conf.get(KEYTAB));       
          System.out.println("UserGroupInformation.isLoginKeytabBased(): " +UserGroupInformation.isLoginKeytabBased());       
          flag = true;     
        } catch (IOException e) {       
           e.printStackTrace();     
        }     
     return flag;        
  }

relogin的代码样例:

public Boolean relogin(){         
        boolean flag = false;         
        try {                        
              UserGroupInformation.getLoginUser().reloginFromKeytab();           
              System.out.println("UserGroupInformation.isLoginKeytabBased(): " +UserGroupInformation.isLoginKeytabBased());           
              flag = true;         
            } catch (IOException e) {             
                e.printStackTrace();         
            }         
        return flag;     
   }

多次重复登录会导致后建立的会话对象覆盖掉之前登录建立的,将会导致之前建立的会话无法被维护监控,最终导致会话超期后部分功能不可用。

support.huaweicloud.com/devg-rule-mrs/mrs_07_450021.html