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

Karthik Kambatla commented on HDFS-4009:
----------------------------------------

Thanks Owen.

If I understand you correctly, in addition to letting user run commands/jobs as 
another user, delegation tokens also act as a backup authentication mechanism, 
should the kerberos ticket time out.

If that is the case, I see why we need to renew delegation tokens. In that 
case, we need to decide if each FileSystem should have its own (instance of) 
{{DelegationTokenRenewer}} or if we should have a single 
{{DelegationTokenRenewerService}} that FileSystems can register/de-register. To 
me, it seems reasonable to have a single service for different clients, by 
augmenting the current {{DelegationTokenRenwer}}.

In my previous comment in the JIRA, I propose the following to that effect:
# Create a new abstract class TokenManager that holds a list (queue) of tokens, 
their kind, renewal period, a TokenRenewer implementation, and an abstract 
method #manage() to manage (renew/re-fetch/cancel) the tokens as appropriate.
# Each FileSystem (WebHdfs and Hftp) has its own implemenation (local extended 
class) of the TokenManager.
# DelegationTokenRenewer should be a singleton.
# DelegationTokenRenewer allows registering and de-registering TokenManagers. 
FileSystems call register() at init(), and de-register() at close().
# DelegationTokenRenewer stores the registered TokenManagers in its DelayQueue. 
On a TokenManager's turn, the manage() method is invoked. If the manage fails, 
the TokenManager is automatically de-registered.

Can you please weigh-in on this approach?


                
> WebHdfsFileSystem and HftpFileSystem don't need delegation tokens
> -----------------------------------------------------------------
>
>                 Key: HDFS-4009
>                 URL: https://issues.apache.org/jira/browse/HDFS-4009
>             Project: Hadoop HDFS
>          Issue Type: Improvement
>    Affects Versions: 2.0.0-alpha
>            Reporter: Tom White
>            Assignee: Karthik Kambatla
>         Attachments: hadoop-8852.patch, hadoop-8852.patch, 
> hadoop-8852-v1.patch
>
>
> Parent JIRA to track the work of removing delegation tokens from these 
> filesystems. 
> This JIRA has evolved from the initial issue of these filesystems not 
> stopping the DelegationTokenRenewer thread they were creating.
> After further investigation, Daryn pointed out - "If you can get a token, you 
> don't need a token"! Hence, these filesystems shouldn't use delegation tokens.
> Evolution of the JIRA is listed below:
> Update 2:
> DelegationTokenRenewer is not required. The filesystems that are using it 
> already have Krb tickets and do not need tokens. Remove 
> DelegationTokenRenewer and all the related logic from WebHdfs and Hftp 
> filesystems.
> Update1:
> DelegationTokenRenewer should be Singleton - the instance and renewer threads 
> should be created/started lazily. The filesystems using the renewer shouldn't 
> need to explicity start/stop the renewer, and only register/de-register for 
> token renewal.
> Initial issue:
> HftpFileSystem and WebHdfsFileSystem should stop the DelegationTokenRenewer 
> thread when they are closed. 

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira

Reply via email to