HBase offre una modalità fault-tolerant per memorizzare set di dati sparsi, comuni in molti casi d'uso dei big data. È adatto per l'elaborazione dei dati in tempo reale o per l'accesso casuale in lettura/scrittura a grandi volumi di dati.
A differenza dei sistemi di database relazionali, HBase non supporta un linguaggio di interrogazione strutturato come SQL e, di fatto, non è un data store relazionale. Le applicazioni HBase sono scritte in Java proprio come una tipica applicazione Apache MapReduce. HBase supporta la scrittura di applicazioni in Apache Avro, REST e Thrift.
Un sistema HBase è progettato per scalare linearmente. Comprende un insieme di tabelle standard con righe e colonne, in modo molto simile a un database tradizionale. Ogni tabella deve avere un elemento definito come chiave primaria e tutti i tentativi di accesso alle tabelle HBase devono utilizzare questa chiave primaria.
Avro, come componente, supporta molti tipi di dati primitivi, tra cui dati numerici, binari e stringhe, così come una serie di tipi complessi, tra cui array, mappe, enumerazioni e record. Si può anche definire un ordine per i dati.
HBase si affida a ZooKeeper per il coordinamento ad alte prestazioni. ZooKeeper è integrato in HBase, ma se utilizzi un cluster di produzione, ti consigliamo di avere un cluster ZooKeeper dedicato, integrato con il suo cluster HBase.
HBase funziona bene con Hive, un motore di query per l'elaborazione in batch dei big data, per supportare le applicazioni di big data fault-tolerant.