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

Add HBase Thrift API to get all table names along with whether it is enabled or not

    XMLWordPrintableJSON

Details

    • New Feature
    • Status: Resolved
    • Major
    • Resolution: Fixed
    • 3.0.0-alpha-1, 2.2.7, 2.3.6, 2.4.7
    • 2.5.0, 3.0.0-alpha-2, 2.3.7, 2.4.8
    • Thrift
    • None

    Description

      When loading Hue HBase page, hue will firstly get all the table names in one thrift call, then hue will send a request as a new connection to Hbase thrift server for each table to check if the table is enabled or not. When the number of table becomes big, for example a few hundreds. Hue will have the chance to fail to show the table list, and it shows an error message on Hue web UI "Api Error: Unable to authenticate". In Hbase thrift server log, we can see error message, below is an example from test environment:
      ======================================
      2020-07-02 21:54:01,025 INFO org.apache.hadoop.hbase.thrift.ThriftHttpServlet: Failed to authenticate with HTTP/[...]@HADOOP.COM kerberos principal
      2020-07-02 21:54:01,025 ERROR org.apache.hadoop.hbase.thrift.ThriftHttpServlet: Kerberos Authentication failed
      org.apache.hadoop.hbase.thrift.HttpAuthenticationException: java.lang.reflect.UndeclaredThrowableException
      ......
      Caused by: java.lang.reflect.UndeclaredThrowableException
      ......
      Caused by: org.apache.hadoop.hbase.thrift.HttpAuthenticationException: Kerberos authentication failed:
      ......
      Caused by: GSSException: Failure unspecified at GSS-API level (Mechanism level: Request is a replay (34))
      ......
      Caused by: KrbException: Request is a replay (34)
      ======================================
      ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

      My current understanding of the cause is Hue sends requests too fast so that it has the chance to send 2 requests with the same Kerberos authenticator (timestamp is same). So Hbase thrift server will think this is a replay attack. We came up with this assumption based on tcpdump observation and this document, https://web.mit.edu/kerberos/krb5-latest/doc/basic/rcache_def.html

      If HBase Thrift server can have an API call that Hue can call it once and get all table names with whether is enabled or not, we can avoid above issue.

      Attachments

        Issue Links

          Activity

            People

              dora.horvath Dóra Horváth
              dora.horvath Dóra Horváth
              Votes:
              0 Vote for this issue
              Watchers:
              2 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved: