You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@hbase.apache.org by "Guanghao Zhang (Jira)" <ji...@apache.org> on 2020/06/10 00:57:00 UTC

[jira] [Commented] (HBASE-24403) FsDelegationToken should cache Token

    [ https://issues.apache.org/jira/browse/HBASE-24403?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17129913#comment-17129913 ] 

Guanghao Zhang commented on HBASE-24403:
----------------------------------------

[~wuchang1989] Can you prepare a new patch for branch-2.x? It has conflict when cherry-pick to branch-2. Thanks. 

> FsDelegationToken should cache Token
> ------------------------------------
>
>                 Key: HBASE-24403
>                 URL: https://issues.apache.org/jira/browse/HBASE-24403
>             Project: HBase
>          Issue Type: Bug
>            Reporter: wuchang
>            Assignee: wuchang
>            Priority: Major
>         Attachments: 24403.patch
>
>
> When doing Bulkload, we find that FsDelegationToken will acquire token of NameNode everytime for a single file, although, from the comment of acquireDelegationToken(), it claims that it is trying to find token in cache firstly, but the newly requested token is never put to cache and thus the cache is still empty for the following request;
> In cases there are many files to do the bulk load, the token request will cause big short to NameNode.
>  
> {code:java}
> public void acquireDelegationToken(final FileSystem fs)
>  throws IOException {
>  if (userProvider.isHadoopSecurityEnabled()) {
>  this.fs = fs;
>  userToken = userProvider.getCurrent().getToken("HDFS_DELEGATION_TOKEN",
>  fs.getCanonicalServiceName());
>  if (userToken == null) {
>  hasForwardedToken = false;
>  try {
>  userToken = fs.getDelegationToken(renewer);
>  } catch (NullPointerException npe) {
>  // we need to handle NullPointerException in case HADOOP-10009 is missing
>  LOG.error("Failed to get token for " + renewer);
>  }
>  } else {
>  hasForwardedToken = true;
>  LOG.info("Use the existing token: " + userToken);
>  }
>  }
> }{code}



--
This message was sent by Atlassian Jira
(v8.3.4#803005)