protected LlapTaskUmbilicalProtocol createUmbilical(final AMNodeInfo amNodeInfo)
    throws IOException, InterruptedException {
    final InetSocketAddress address = NetUtils.createSocketAddrForHost(
      amNodeInfo.amNodeId.getHostname(), amNodeInfo.amNodeId.getPort());
    SecurityUtil.setTokenService(amNodeInfo.jobToken, address);
    UserGroupInformation ugi = UserGroupInformation.createRemoteUser(amNodeInfo.umbilicalUser);
    ugi.addToken(amNodeInfo.jobToken);
    return ugi.doAs(new PrivilegedExceptionAction<LlapTaskUmbilicalProtocol>() {
      @Override
      public LlapTaskUmbilicalProtocol run() throws Exception {
        return RPC
          .getProxy(LlapTaskUmbilicalProtocol.class, LlapTaskUmbilicalProtocol.versionID,
            address, UserGroupInformation.getCurrentUser(), amNodeInfo.conf,
            amNodeInfo.socketFactory, (int) (amNodeInfo.timeout));
      }
    });
  }
Responsible for communicating with various AMs.
llap-server/src/java/org/apache/hadoop/hive/llap/daemon/impl/AMReporter.java