The Web UI for HBase: HBase Browser

The Web UI for HBase: HBase Browser

In this post, we’ll take a look at the new HBase Browser App added in Hue 2.5.

 

If you want to learn how to create various tables in HBase, go look at episode 1!

Prerequisites before starting Hue:

1. Have Hue built or installed

2. Have HBase and Thrift Service 1 initiated (Thrift can be configured through Cloudera Manager or manually). Look at the HBase service configuration and check to see if the “Enable HBase Thrift Server Framed Transport” property is enabled. If it is, try unchecking it or set ‘thrift_transport=framed’ in the [hbase] section of the hue.ini.

3. Configure your list of HBase Clusters in hue.ini to point to your Thrift IP/Port

[hbase]

# Comma-separated list of HBase Thrift servers for clusters in the format of '(name|host:port)'.
hbase_clusters=(Cluster|my-host1:9090),(Cluster2|localhost:9090)

# Hard limit of rows or columns per row fetched before truncating.
## truncate_limit = 500

In this video, we’re walking through two main features of this app.  Let’s talk about HBase Browser!

 

 

SmartView

The smartview is the view that you land on when you first enter a table. On the left hand side are the row keys and hovering over a row reveals a list of controls on the right. Click a row to select it, and once selected you can perform batch operations, sort columns, or do any amount of standard database operations. To explore a row, simple scroll to the right. By scrolling, the row should continue to lazily-load cells until the end.

 

Adding Data

To initially populate the table, you can insert a new row or bulk upload CSV/TSV/etc. type data into your table.

image

On the right hand side of a row is a ‘+’ sign that lets you insert columns into your rowimageimage

 

Mutating Data

To edit a cell, simply click to edit inline:

image

If you need more control or data about your cell, click “Full Editor” to edit.

image

In the full editor, you can view cell history or upload binary data to the cell.  Binary data of certain MIME Types are detected, meaning you can view and edit images, PDFs, JSON, XML, and other types directly in your browser!

image

 

Hovering over a cell also reveals some more controls (such as the delete button or the timestamp).  Click the title to select a few and do batch operations:

image

If you need some sample data to get started and explore, check out this howto create HBase table tutorial.

 

Smart Searchbar

The “Smart Searchbar” is a sophisticated tool that helps you zero-in on your data. The smart search supports a number of operations.  The most basic ones include finding and scanning row keys.  Here I am selecting two row keys with:

 

   domain.100, domain.200

image

Submitting this query gives me the two rows I was looking for. If I want to fetch rows after one of these, I have to do a scan. This is as easy as writing a ‘+’ followed by the number of rows you want to fetch. Typing in:

 

   domain.100, domain.200 +5

Fetches domain.100 and domain.200 followed by the next 5 rows.  If you’re ever confused about your results, you can look down below and the query bar and also click in to edit your query.

The Smart Search also supports column filtering.  On any row, I can specify the specific columns or families I want to retrieve.  With:

 

   domain.100[column_family:]

I can select a bare family, or mix columns from different families like so:

 

   domain.100[family1:, family2:, family3:column_a]

Doing this will restrict my results from one row key to the columns I specified. If you want to restrict column families only, the same effect can be achieved with the filters on the right.  Just click to toggle a filter.
Finally, let’s try some more complex column filters.  I can query for bare columns:

 

   domain.100[column_a]

This will multiply my query over all column families. I can also do prefixes and scans:

 

    domain.100[family: prefix* +3]

This will fetch me all columns that start with prefix* limited to 3 results.  Finally, I can filter on range:

 

   domain.100[family: column1 to column100]

This will fetch me all columns in ‘family:’ that are lexicographically >= column1 but <= column100.  The first column (‘column1’) must be a valid column, but the second can just be any string for comparison.

The Smart Search also supports prefix filtering on rows.  To select a prefixed row, simply type the row key followed by a star *.  The prefix should be highlighted like any other searchbar keyword.  A prefix scan is performed exactly like a regular scan, but with a prefixed row.

 

   domain.10* +10

Finally, as a new feature, you can also take full advantage of the HBase filtering language, by typing your filter string between curly braces.  HBase Browser autocompletes your filters for you so you don’t have to look them up every time.  You can apply filters to rows or scans.

 

   domain.1000 {ColumnPrefixFilter('100-') AND ColumnCountGetFilter(3)}

This post only covers a few basic features of the Smart Search. You can take advantage of the full querying language by referring to the help menu when using the app.  These include column prefix, bare columns, column range, etc. Remember that if you ever need help with the searchbar, you can use the help menu that pops up while typing, which will suggest next steps to complete your query.

Et voila!

Feel free to try the app at gethue.com.  Let us know what you think on the Hue user group!

Look forward to more features including Thrift 2 support, kerberos security and bulk data upload.

30 Comments

  1. hello guys’ FYI, your demo.gethue.com can’t access hbase browser with this message “HBase Thrift 1 server cannot be contacted: Could not connect to ip-10-5-183-17.ec2.internal:9090”, hope you could fix it as soon as possible, thank’s

    • Hue Team 4 years ago
      • JMZ 4 years ago

        HBase Thrift 1 server cannot be contacted: Could not connect to localhost:9090

        • Hue Team 4 years ago

          This means the server should be started or it is running on another machine than Hue and so Hue should get its hostname.

        • Alex Phan Ng 7 months ago

          run //bin/hbase thrift start

  2. Valijon 3 years ago

    Live demo is down again

    Baraag!

    That’s elephant trumpeting for ‘Error’. If you are seeing this message it means that the live demo has encountered an error and we have been alerted about it. Please sit tight and it will be resolved as soon as possible.

    • Hue Team 3 years ago

      The demo is back!

  3. Raj K 3 years ago

    Hue Team:
    Reposting this in right post.

    Does hue support thrift2. if is supports, How do I configure ?

    When I stopped thrift and started thrift2 (‘hbase thrift2 start’ or via ‘hbase-daemon.sh’), hue hbase browser stopped working.

    I am planning to write a nodjs library for thrift2 for hbase data access.

    If hue does not support thrift2, maybe i should run both thrift1 and 2 in different ports side by side? Not sure that would work.

    When I tried to run, looked like port 9095 was blocked another thrift (web UI ) process is already running

    Thanks for your advice
    Raj

    • Hue Team 3 years ago

      Yes, the HBase Browser works with Thrift v1. If you need to keep v2 running you would need to run one or another one on another machine or another port.

  4. Thomas 3 years ago

    Hi Team, the demo of HBase breaks again, with : HBase Thrift 1 server cannot be contacted: Could not connect to ip-10-203-19
    Hope it will be fixed asap~

    • Hue Team 3 years ago

      Yes, just fixed!

      • Guilherme Camelo 3 years ago

        Hi, I am experiencing the same error:
        HBase Thrift 1 server cannot be contacted: Could not connect to ip-10-203-193-200.ec2.internal:9090

        Thanks

        • Hue Team 3 years ago

          This means the HBase Thrift Server was not started or Hue is pointing to a wrong one

  5. Harshal 3 years ago

    Hey friend,
    i am newbie about hadoop i configured hadoop on vagrant ubuntu machine.i wants access hadoop web ui on browser but i unable to do so.i tried changing the core-site.xml file for hadoop ui on browser by my machine ip and different ports for ui like 9000/8020 and 50075,50070 but nothing happens.
    plz help so.
    Thanks in advance.

  6. Anand 3 years ago

    How to configure HUE for secure Hbase(Kerberized). I do not want to configure HUE for secure HADOOP CLUSTER but only secured Hbase.

  7. Anand 3 years ago

    I have followed the steps provided there but getting Api Error as below :

    Api Error: Could not start SASL: Error in sasl_client_start (-1) SASL(-1): generic failure: GSSAPI Error: Unspecified GSS failure. Minor code may provide more information (No Kerberos credentials available) .

    I have shared my hue.ini and hbase-site.xml.

    hue.ini :

    [hbase]
    # Comma-separated list of HBase Thrift servers for clusters in the format of ‘(name|host:port)’.
    # Use full hostname with security.
    # If using Kerberos we assume GSSAPI SASL, not PLAIN.
    hbase_clusters=(Cluster|localhost:9090)

    # HBase configuration directory, where hbase-site.xml is located.
    hbase_conf_dir=/software/hbase/hbase/conf

    # Hard limit of rows or columns per row fetched before truncating.
    truncate_limit = 500
    security_enabled=true
    # ‘buffered’ is the default of the HBase Thrift Server and supports security.
    # ‘framed’ can be used to chunk up responses,
    # which is useful when used in conjunction with the nonblocking server in Thrift.
    ## thrift_transport=buffered
    ##mechanism=GSSAPI

    hbase-site.xml :

    hbase.cluster.distributed
    true

    hbase.rootdir
    hdfs://localhost:9000/hbase

    hbase.zookeeper.quorum
    localhost

    hbase.zookeeper.property.dataDir
    /software/hbase/zookeeper

    hbase.security.authentication
    kerberos

    hbase.security.authorization
    true

    hbase.coprocessor.region.classes
    org.apache.hadoop.hbase.security.token.TokenProvider

    hbase.rpc.engine
    org.apache.hadoop.hbase.ipc.SecureRpcEngine

    hbase.regionserver.kerberos.principal
    root/[email protected]

    hbase.regionserver.keytab.file
    /software/hbase/hadoop/etc/hadoop/hdfs.keytab

    hbase.master.kerberos.principal
    root/[email protected]

    hbase.master.keytab.file
    /software/hbase/hadoop/etc/hadoop/hdfs.keytab

    hbase.thrift.keytab.file
    /software/hbase/hadoop/etc/hadoop/hdfs.keytab

    hbase.thrift.kerberos.principal
    root/[email protected]

    hbase.thrift.security.qop
    auth

  8. Anonymous 3 years ago

    hello, your demo.gethue.com can’t access hbase browser with this message “ HBase Thrift 1 server cannot be contacted: Could not connect to ip-10-203-193-200.ec2.internal:9090”, hope you could fix it as soon as possible, thanks

    • Hue Team 3 years ago

      We just put it back up!

  9. Du Xiangyu 2 years ago

    Hi team,I want to search for the rowkey by the value, how can i make it?

  10. Balakrishna 2 years ago

    We have hbase running in Hbase. I installed hue and when trying to access Hbase under ‘Data Browsers’ I am getting Api Error: TSocket read 0 bytes exception.

    Full Stack:
    middleware INFO Processing exception: Api Error: TSocket read 0 bytes: Traceback (most recent call last):
    File “/usr/local/hue/build/env/lib/python2.7/site-packages/Django-1.6.10-py2.7.egg/django/core/handlers/base.py”, line 112, in get_response
    response = wrapped_callback(request, *callback_args, **callback_kwargs)
    File “/usr/local/hue/build/env/lib/python2.7/site-packages/Django-1.6.10-py2.7.egg/django/db/transaction.py”, line 371, in inner
    return func(*args, **kwargs)
    File “/usr/local/hue/apps/hbase/src/hbase/views.py”, line 76, in api_router
    return api_dump(HbaseApi(request.user).query(*url_params))
    File “/usr/local/hue/apps/hbase/src/hbase/api.py”, line 54, in query
    raise PopupException(_(“Api Error: %s”) % e.message)
    PopupException: Api Error: TSocket read 0 bytes

    [01/Sep/2016 04:22:35 -0700] thrift_util INFO Thrift saw a transport exception: TSocket read 0 bytes

    [01/Sep/2016 04:22:35 -0700] thrift_util WARNING Out of retries for thrift call: getTableNames

  11. wangliang8 1 year ago

    hi~ i find the different user can search and use the hbase table each other ,how to do about the different user’s table isolation。thanks!

Leave a reply

Your email address will not be published. Required fields are marked *

*

This site uses Akismet to reduce spam. Learn how your comment data is processed.