Need to clarify this…

The use of real time is a bit misleading. Its subjective real time.

With respect to schema design… please see my longer post on design in this thread. Again think Hierarchical which means that you get everything in a single get().

And yes, you have to think about your use case.  In some use cases, you are using M/R and pulling data and doing calculations which is output in to HBase where another app will in subjective real time , pull data from hbase for use.

In my earlier post I talked about using HBase to join data from different data sets. This is one of the main use cases and arguments for Hadoop. That you want to gain value by taking data from different data sets where the combined data may yield insights that were not previously possible.

I’m not sure where you are getting at with hash tables.  

I am not suggesting that HBase is right for all occasions, because its not. But I am suggesting that a lot of effort and failed attempts can be avoided by understanding how to best use HBase and to not think in terms of relationships.