Uploaded image for project: 'HBase'
  1. HBase
  2. HBASE-9890

MR jobs are not working if started by a delegated user

    XMLWordPrintableJSON

Details

    • Bug
    • Status: Closed
    • Major
    • Resolution: Fixed
    • 0.98.0, 0.94.12, 0.96.0
    • 0.98.0, 0.96.1, 0.94.14
    • mapreduce, security
    • None

    Description

      If Map-Reduce jobs are started with by a proxy user that has already the delegation tokens, we get an exception on "obtain token" since the proxy user doesn't have the kerberos auth.

      For example:

      • If we use oozie to execute RowCounter - oozie will get the tokens required (HBASE_AUTH_TOKEN) and it will start the RowCounter. Once the RowCounter tries to obtain the token, it will get an exception.
      • If we use oozie to execute LoadIncrementalHFiles - oozie will get the tokens required (HDFS_DELEGATION_TOKEN) and it will start the LoadIncrementalHFiles. Once the LoadIncrementalHFiles tries to obtain the token, it will get an exception.
       org.apache.hadoop.hbase.security.AccessDeniedException: Token generation only allowed for Kerberos authenticated clients
          at org.apache.hadoop.hbase.security.token.TokenProvider.getAuthenticationToken(TokenProvider.java:87)
      
      org.apache.hadoop.ipc.RemoteException(java.io.IOException): Delegation Token can be issued only with kerberos or web authentication
      	at org.apache.hadoop.hdfs.DFSClient.getDelegationToken(DFSClient.java:783)
      	at org.apache.hadoop.hdfs.DistributedFileSystem.getDelegationToken(DistributedFileSystem.java:868)
      	at org.apache.hadoop.fs.FileSystem.collectDelegationTokens(FileSystem.java:509)
      	at org.apache.hadoop.fs.FileSystem.addDelegationTokens(FileSystem.java:487)
      	at org.apache.hadoop.mapreduce.security.TokenCache.obtainTokensForNamenodesInternal(TokenCache.java:130)
      	at org.apache.hadoop.mapreduce.security.TokenCache.obtainTokensForNamenodesInternal(TokenCache.java:111)
      	at org.apache.hadoop.mapreduce.security.TokenCache.obtainTokensForNamenodes(TokenCache.java:85)
      	at org.apache.hadoop.filecache.TrackerDistributedCacheManager.getDelegationTokens(TrackerDistributedCacheManager.java:949)
      	at org.apache.hadoop.mapred.JobClient.copyAndConfigureFiles(JobClient.java:854)
      	at org.apache.hadoop.mapred.JobClient.copyAndConfigureFiles(JobClient.java:743)
      	at org.apache.hadoop.mapred.JobClient.submitJobInternal(JobClient.java:945)
      	at org.apache.hadoop.mapreduce.Job.submit(Job.java:566)
      	at org.apache.hadoop.mapreduce.Job.waitForCompletion(Job.java:596)
      	at org.apache.hadoop.hbase.mapreduce.RowCounter.main(RowCounter.java:173)
      

      Attachments

        1. HBASE-9890-94-v0.patch
          6 kB
          Matteo Bertozzi
        2. HBASE-9890-v0.patch
          7 kB
          Matteo Bertozzi
        3. HBASE-9890-v1.patch
          8 kB
          Matteo Bertozzi
        4. HBASE-9890-94-v1.patch
          6 kB
          Matteo Bertozzi
        5. HBASE-9890-v2.patch
          9 kB
          Matteo Bertozzi
        6. HBASE-9890-v3.patch
          11 kB
          Matteo Bertozzi
        7. HBASE-9890-v4.patch
          11 kB
          Matteo Bertozzi
        8. HBASE-9890-94-v4.patch
          10 kB
          Matteo Bertozzi

        Issue Links

          Activity

            People

              mbertozzi Matteo Bertozzi
              mbertozzi Matteo Bertozzi
              Votes:
              0 Vote for this issue
              Watchers:
              10 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved: