更新时间:2024-04-02 GMT+08:00
分享

Yarn应用开发规则

使用YarnClient.createYarnClient()创建客户端

不建议直接使用protocol接口ClientRMProxy.createRMProxy(config,ApplicationClientProtocol.class)创建客户端。

Application master使用异步接口AMRMClientAsync.createAMRMClientAsync()与ResourceManager交互

不建议直接使用protocol接口ClientRMProxy.createRMProxy(config,ApplicationMasterProtocol.class) 创建application master与resource manager交互的客户端。

Application master使用异步接口AMRMClientAsync.createAMRMClientAsync()与NodeManager交互

不建议直接使用接口ContainerManagementProtocolProxy创建application master与node manager交互的客户端。

多线程安全登录方式

如果有多线程进行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;     
}
分享:

    相关文档

    相关产品