# Apache HBase

HBase és un sistema gestor de base de dades distribuïda no relacional de codi obert modelada a partir de Google BigTable i escrita en Java. El seu desenvolupament forma part del projecte Hadoop de la Fundació de Programari Apache i s'executa sobre HDFS (el sistema de fitxers distribuït de Hadoop), proporcionant capacitats al estil de BigTable per a Hadoop. És a dir, proporciona una forma tolerant d’error d’emmagatzematge de grans quantitats de dades disperses (petites quantitats d'informació immerses dins d'una gran col·lecció de dades inexistents o poc significatives, com la cerca dels 50 majors elements en un grup de 2 milions de registres, o la cerca d'elements diferents de zero que representen menys del 0,1% d'una enorme col·lecció).
HBase inclou operacions de compressió en memòria, i filtre de Bloom sobre la base de cada columna com es proposa a l'article original sobre BigTable. Les taules en HBase poden servir com a entrada o sortida per a tasques MapReduce en Hadoop, i es pot accedir a través de l'API a Java, com a servei REST, o amb els API de connexió Avro i Thrift. Hbase és un magatzem de dades orientat a columnes de tipus clau-valor i basat en Hadoop i HDFS (Hadoop Distributed File System, sistema d'arxius distribuïts de Hadoop que s'utilitzem per emmagatzemar i processar grans conjunts de dades en clústeres de computadors). HBase s'executa sobre HDFS i és adequat per accelerar operacions de lectura i escriptura en els grans conjunts de dades amb un alt rendiment i una baixa latència d'entrada/sortida.
Al ser una base de dades orientada a columnes (les dades s'emmagatzemen en columnes enlloc de en files, permet l’agregació i el processament de dades d'una manera més eficient i ens proporciona una escalabilitat horitzontal masiva que permet agregar molt fàcilment hardware al clúster per augmentar la capacitat d’emmagatzematge.
És un sistema gestor de base de dades (SGBD) molt tolerant als errors; HBase replica automàticament les dades del clúster que falla per evitar la pèrdua de dades.
HBase té una interfície de consulta similar a SQL anomenada Apache Phoenix que permet als usuaris realitzar consultes en la base de dades utilitzant un llenguatge similar a SQL.
HBase no reemplaça les bases de dades SQL clàssiques, no obstant el projecte Apache Phoenix proporciona una capa de SQL per a Hbase així com accés via l'API JDBC que pot ser integrat amb diverses eines d'anàlisi de dades i intel·ligència de negocis. El projecte Apache Trafodion proporciona un motor de consulta SQL amb drivers ODBC i JDBC i protecció de transaccions ACID (propietats que garanteixen la integritat de dades en un SBD) distribuïdes a través de múltiples consultes, taules i files utilitzant HBase com a motor d'emmagatzematge.
Actualment, Hbase s'utilitza en llocs web orientats a dades, incloent la plataforma de missatgeria de Facebook. A diferència de les bases de dades relacionals tradicionals, HBase no dona suport a consultes SQL sinó a scripts escrits en Java que fan ús d’un motor de càlcul similar a MapReduce.
En termes del teorema CAP d'Eric Brewer, HBase és un tipus de sistema CP (consistència i tolerància a particions).

## Història

Apache HBase va ser creat com a resposta a la necessitat d'un sistema de bases de dades escalable i tolerant a errors al el marc del projecte Hadoop, que es desenvolupava a la Fundació de Programari Apache. Hadoop va ser creat per Doug Cutting i Mike Cafarella el 2006, amb l'objectiu de proporcionar una solució de programari lliure per al processament de grans volums de dades utilitzant clústers de computadores en lloc d'un servidor centralitzat. Hadoop utilitzava un sistema de fitxers distribuït anomenat HDFS (Hadoop Distributed File System) per emmagatzemar les dades i un model de programació anomenat MapReduce per processar-les.
HBase es va originar el 2007 com a projecte intern a Google anomenat BigTable, que era un sistema d'emmagatzematge de dades distribuït que podia gestionar conjunts de dades massius i escalables en una varietat d'aplicacions, com la cerca en línia i l'anàlisi de dades. Google no va fer disponible BigTable al públic en general, però el seu model va inspirar el desenvolupament de projectes similars de programari lliure, incloent HBase i Apache Cassandra.
El desenvolupament de HBase va començar com a projecte independent de la comunitat el 2007, liderat per Michael Stack i desenvolupat per una comunitat de desenvolupadors de tot el món. El 2008, HBase es va convertir en un subprojecte del projecte Hadoop de la Fundació de Programari Apache, el que li va permetre integrar-se completament amb Hadoop i utilitzar HDFS com a sistema de fitxers distribuït.
Des de llavors, HBase ha estat àmpliament utilitzat en una varietat d'aplicacions, incloent la gestió de dades de xarxes socials i la gestió de dades d'aplicacions empresarials. La comunitat de desenvolupadors de HBase ha seguit millorant el sistema, afegint noves característiques i millorant l'escalabilitat, la fiabilitat i el rendiment. En l'actualitat, HBase és un dels sistemes d'emmagatzematge de dades més populars per a aplicacions Big Data, i ha estat adoptat per moltes empreses de tot el món.

## Instal·lació i configuració

Instal·lació: Abans de començar, s'ha d'instal·lar Apache HBase al sistema. Es pot descarregar l'última versió de HBase des del lloc web d'Apache HBase i instal·lar-la seguint les instruccions del fitxer d'instal·lació.
Configuració: Una vegada instal·lat HBase, s'han de configurar els fitxers de configuració perquè funcionin amb el sistema. El fitxer de configuració principal és el fitxer hbase-site.xml que es troba al directori de configuració de HBase. Aquí és on pot configurar les propietats de HBase, com la direcció IP del servidor i la configuració de xarxa.
Inici de HBase: Un cop la configuració està completa, es pot iniciar HBase. Per iniciar el servidor de HBase s'ha d'executar la comanda "start-hbase.sh" al directori d'instal·lació de HBase.
Shell de HBase: HBase ve amb un shell interactiu que li permet interactuar amb la base de dades a través de la línia de comandes. Es pot executar la comanda "hbase shell" per obrir el shell de HBase. Des d'aquí, pot crear, modificar i eliminar taules, llegir i escriure dades, i executar consultes.