Tutorial HBase: Introduzione a HBase e case study su Facebook

Questo blog tutorial HBase ti introduce a cos'è HBase e alle sue caratteristiche. Copre anche il caso di studio di Facebook Messenger per comprendere i vantaggi di HBase.

Come abbiamo accennato nel nostro blog, HBase è una parte essenziale del nostro ecosistema Hadoop. Quindi ora, vorrei guidarti attraverso il tutorial HBase, dove ti presenterò Apache HBase, e poi, esamineremo il case study di Facebook Messenger. Tratteremo i seguenti argomenti in questo blog tutorial HBase:



Esercitazione su Apache HBase: storia

Cominciamo con la storia di HBase e sappiamo come si è evoluto HBase in un periodo di tempo.



Storia di HBase - Tutorial HBase - Edureka

  • Apache HBase è modellato sul BigTable di Google, che viene utilizzato per raccogliere dati e servire richieste per vari servizi Google come Maps, Finance, Earth ecc.
  • Apache HBase è iniziato come un progetto della società Powerset for Natural Language Search, che gestiva set di dati enormi e sparsi.
  • Apache HBase è stato rilasciato per la prima volta nel febbraio 2007. Successivamente, nel gennaio 2008, HBase è diventato un sottoprogetto di Apache Hadoop.
  • Nel 2010, HBase è diventato il progetto di primo livello di Apache.

Esercitazione su HBase | Database NoSQL | Edureka



Dopo aver conosciuto la storia di Apache HBase, saresti curioso di sapere cos'è Apache HBase? Andiamo oltre e diamo un'occhiata.

Esercitazione su Apache HBase: Introduzione a HBase

HBase è un open source, multidimensionale, distribuito, scalabile e a Database NoSQL scritto in Java. HBase viene eseguito sopra HDFS (Hadoop Distributed File System) e fornisce funzionalità simili a BigTable a Hadoop. È progettato per fornire un modo a tolleranza di errore di archiviare un'ampia raccolta di set di dati sparsi.

Da allora, HBase raggiunge un throughput elevato e una bassa latenza fornendo un accesso in lettura / scrittura più veloce su enormi set di dati. Pertanto, HBase è la scelta per le applicazioni che richiedono un accesso rapido e casuale a grandi quantità di dati.



Fornisce compressione, operazioni in memoria e filtri Bloom (struttura dati che indica se un valore è presente o meno in un set) per soddisfare il requisito di letture e scritture casuali e veloci.

Vediamolo attraverso un esempio: Un motore a reazione genera vari tipi di dati da diversi sensori come sensore di pressione, sensore di temperatura, sensore di velocità, ecc. Che indica lo stato di salute del motore. Questo è molto utile per capire i problemi e lo stato del volo. Continuous Engine Operations genera 500 GB di dati per volo e ci sono circa 300mila voli al giorno. Pertanto, Engine Analytics applicato a tali dati quasi in tempo reale può essere utilizzato per diagnosticare in modo proattivo i problemi e ridurre i tempi di inattività non pianificati. Ciò richiede un ambiente distribuito con cui archiviare grandi quantità di dati letture e scritture casuali veloci per l'elaborazione in tempo reale. Qui, HBase viene in soccorso. Parlerò di HBase Read and Write in dettaglio nel mio prossimo blog su Architettura HBase .

Come sappiamo, HBase è un database NoSQL. Quindi, prima di capire di più su HBase, parliamo prima dei database NoSQL e dei suoi tipi.

Esercitazione su Apache HBase: database NoSQL

NoSQL significa Non solo SQL . I database NoSQL sono modellati in modo da poter rappresentare dati diversi dai formati tabulari, database relazionali unkile. Utilizza diversi formati per rappresentare i dati nei database e quindi ci sono diversi tipi di database NoSQL in base al loro formato di rappresentazione. La maggior parte dei database NoSQL sfrutta la disponibilità e la velocità rispetto alla coerenza. Ora, andiamo avanti e comprendiamo i diversi tipi di database NoSQL e i loro formati di rappresentazione.

Archivi valore-chiave:

È un database senza schema che contiene chiavi e valori. Ogni chiave, punta a un valore che è un array di byte, può essere una stringa, BLOB, XML, ecc. Ad es. Lamborghini è una chiave e può puntare a un valore Gallardo, Aventador, Murciélago, Reventón, Diablo, Huracán, Veneno, Centenario ecc.

Database di archivi di valore chiave: Aerospike, Couchbase, Dynamo, FairCom c-treeACE, FoundationDB, HyperDex, MemcacheDB, MUMPS, Oracle NoSQL Database, OrientDB, Redis, Riak, Berkeley DB.

Caso d'uso

I valori-chiave memorizzano le dimensioni di gestione correttamente e sono bravi a elaborare un flusso costante di operazioni di lettura / scrittura con bassa latenza. Questo li rende perfetti perPreferenze dell'utente e archivi di profili,Consigli sui prodotti ultimi articoli visualizzati sul sito Web di un rivenditore per guidare i futuri consigli sui prodotti dei clienti,Le abitudini di acquisto dei clienti nel servizio di annunci si traducono in annunci personalizzati, coupon, ecc. Per ciascun cliente in tempo reale.

Orientato al documento :

Segue la stessa coppia chiave-valore, ma è semi strutturato come XML, JSON, BSON. Queste strutture sono considerate documenti.

Database basati su documenti: Apache CouchDB, Clusterpoint, Couchbase, DocumentDB, HyperDex, IBM Domino, MarkLogic, MongoDB, OrientDB, Qizx, RethinkDB.

Caso d'uso

Poiché il documento supporta uno schema flessibile, la lettura veloce, la scrittura e il partizionamento lo rendono adatto per la creazione di database utente in vari servizi come Twitter, siti Web di e-commerce, ecc.

Orientato alla colonna:

In questo database, i dati vengono archiviati in celle raggruppate in colonne anziché in righe. Le colonne sono raggruppate logicamente in famiglie di colonne che possono essere create durante la definizione dello schema o in fase di runtime.

Questi tipi di database memorizzano tutta la cella corrispondente a una colonna come voce continua del disco, rendendo così l'accesso e la ricerca molto più veloci.

Database basati su colonne: HBase, Accumulo, Cassandra, Druid, Vertica.

Caso d'uso

Supporta l'enorme spazio di archiviazione e consente un accesso più veloce in lettura e scrittura su di esso. Ciò rende i database orientati alle colonne adatti per memorizzare i comportamenti dei clienti nel sito di e-commerce, sistemi finanziari come Google Finance e dati di borsa, mappe di Google ecc.

Orientato al grafico:

È una perfetta rappresentazione grafica flessibile, utilizzata a differenza di SQL. Questi tipi di database risolvono facilmente i problemi di scalabilità degli indirizzi in quanto contengono bordi e nodi che possono essere estesi in base alle esigenze.

Database basati su grafici: AllegroGraph, ArangoDB, InfiniteGraph, Apache Giraph, MarkLogic, Neo4J, OrientDB, Virtuoso, Stardog.

Caso d'uso

Questo è fondamentalmente utilizzato nel rilevamento delle frodi, nei motori di raccomandazione in tempo reale (nella maggior parte dei casi nell'e-commerce), nella gestione dei dati master (MDM), nelle operazioni di rete e IT, nella gestione dell'identità e degli accessi (IAM), ecc.

HBase e Cassandra sono i due famosi database orientati alle colonne. Quindi, ora parlandone a un livello superiore, confrontiamo e comprendiamo le differenze architettoniche e operative tra HBase e Cassandra.

diploma post laurea vs laurea magistrale

Tutorial HBase: HBase VS Cassandra

  • HBase è modellato su BigTable (Google) mentre Cassandra è basato su DynamoDB (Amazon) inizialmente sviluppato da Facebook.
  • HBase sfrutta l'infrastruttura Hadoop (HDFS, ZooKeeper) mentre Cassandra si è evoluta separatamente, ma puoi combinare Hadoop e Cassandra secondo le tue esigenze.
  • HBase ha diversi componenti che comunicano insieme come HBase HMaster, ZooKeeper, NameNode, Region Severs. Mentre Cassandra è un tipo di nodo singolo, in cui tutti i nodi sono uguali e svolge tutte le funzioni. Qualsiasi nodo può essere il coordinatore che rimuove il singolo punto di errore.
  • HBase è ottimizzato per la lettura e supporta singole scritture, il che porta a una rigorosa coerenza. HBase supporta le scansioni basate su intervallo, il che rende il processo di scansione più veloce. Mentre Cassandra supporta letture a riga singola che mantiene la consistenza finale.
  • Cassandra non supporta le scansioni di righe basate su intervallo, che rallentano il processo di scansione rispetto a HBase.
  • HBase supporta il partizionamento ordinato, in cui le righe di una famiglia di colonne vengono archiviate in ordine RowKey, mentre in Casandra il partizionamento ordinato è una sfida. A causa del partizionamento RowKey, il processo di scansione è più veloce in HBase rispetto a Cassandra.
  • HBase non supporta il bilanciamento del carico di lettura, un server regionale serve la richiesta di lettura e le repliche vengono utilizzate solo in caso di errore. Mentre Cassandra supporta il bilanciamento del carico di lettura e può leggere gli stessi dati da vari nodi. Questo può compromettere la consistenza.
  • Nel teorema CAP (Consistency, Availability & Partition -Tolerance) HBase mantiene Consistency e Availability mentre Cassandra si concentra su Availability e Partition -Tolerance.


Ora facciamo un tuffo profondo e comprendiamo le caratteristiche di Apache HBase che lo rendono così popolare.

Esercitazione su Apache HBase: caratteristiche di HBase

  • Atomic leggere e scrivere: A livello di riga, HBase fornisce lettura e scrittura atomica. Può essere spiegato come, durante un processo di lettura o scrittura, a tutti gli altri processi viene impedito di eseguire operazioni di lettura o scrittura.
  • Letture e scritture coerenti: HBase fornisce letture e scritture coerenti grazie alla funzionalità di cui sopra.
  • Scalabilità lineare e modulare: Poiché i set di dati sono distribuiti su HDFS, è quindi scalabile in modo lineare su vari nodi, nonché scalabile in modo modulare, poiché è suddiviso in vari nodi.
  • Partizionamento orizzontale automatico e configurabile delle tabelle: Le tabelle HBase sono distribuite tra i cluster e questi cluster sono distribuiti tra le regioni. Queste regioni e cluster si dividono e vengono ridistribuiti man mano che i dati crescono.
  • API Java facile da usare per l'accesso client: Fornisce API Java di facile utilizzo per l'accesso programmatico.
  • Gateway parsimonioso e servizi Web REST: Supporta anche Thrift e REST API per front-end non Java.
  • Blocca cache e filtri Bloom: HBase supporta Block Cache e Bloom Filters per l'ottimizzazione di query ad alto volume.
  • Supporto automatico dei guasti: HBase con HDFS fornisce WAL (Write Ahead Log) tra i cluster che fornisce il supporto automatico degli errori.
  • Rowkeys ordinati: Poiché la ricerca viene eseguita su un intervallo di righe, HBase memorizza le chiavi di riga in un ordine lessicografico. Utilizzando questi rowkeys e timestamp ordinati, possiamo creare una richiesta ottimizzata.

Ora, andando avanti in questo tutorial HBase, lascia che ti dica quali sono i casi d'uso e gli scenari in cui HBase può essere utilizzato e quindi confronterò HDFS e HBase.

Vorrei attirare la vostra attenzione sugli scenari in cui HBase è la soluzione migliore.

Tutorial HBase: dove possiamo usare HBase?

  • Dovremmo usare HBase dove abbiamo grandi set di dati (milioni o miliardi o righe e colonne) e abbiamo bisogno di un accesso veloce, casuale e in tempo reale, in lettura e scrittura sui dati.
  • I set di dati sono distribuiti su vari cluster e abbiamo bisogno di un'elevata scalabilità per gestire i dati.
  • I dati vengono raccolti da varie fonti di dati e sono dati semi strutturati o non strutturati o una combinazione di tutti. Potrebbe essere gestito facilmente con HBase.
  • Si desidera memorizzare dati orientati alla colonna.
  • Hai molte versioni dei set di dati e devi memorizzarle tutte.

Prima di passare al case study di Facebook Messenger,lascia che ti dica quali sono le differenze tra HBase e HDFS.

Tutorial HBase: HBase VS HDFS

HDFS è un file system distribuito basato su Java che consente di archiviare dati di grandi dimensioni su più nodi in un cluster Hadoop. Quindi, HDFS è un sistema di archiviazione sottostante per l'archiviazione dei dati nell'ambiente distribuito. HDFS è un file system, mentre HBase è un database (simile a NTFS e MySQL).

Poiché sia ​​HDFS che HBase memorizzano qualsiasi tipo di dati (ovvero strutturato, semi-strutturato e non strutturato) in un ambiente distribuito, esaminiamo le differenze tra il file system HDFS e HBase, un database NoSQL.

  • HBase fornisce un accesso a bassa latenza a piccole quantità di dati all'interno di grandi set di dati mentre HDFS fornisce operazioni ad alta latenza.
  • HBase supporta la lettura e la scrittura casuali mentre HDFS supporta WORM (Write once Read Many or Multiple times).
  • L'accesso a HDFS è fondamentalmente o principalmente tramite i lavori MapReduce mentre si accede a HBase tramite comandi shell, API Java, REST, Avro o Thrift API.

HDFS archivia set di dati di grandi dimensioni in un ambiente distribuito e sfrutta l'elaborazione batch su tali dati. Per esempio. aiuterebbe un sito web di e-commerce a memorizzare milioni di dati dei clienti in un ambiente distribuito che è cresciuto in un lungo periodo di tempo (potrebbe essere di 4-5 anni o più). Quindi sfrutta l'elaborazione batch su tali dati e analizza i comportamenti, i modelli e i requisiti dei clienti. Quindi l'azienda potrebbe scoprire che tipo di prodotto, acquisto del cliente in quali mesi. Aiuta a memorizzare i dati archiviati ed eseguire l'elaborazione batch su di essi.

Sebbene HBase memorizzi i dati in un modo orientato alla colonna in cui ogni colonna viene archiviata insieme in modo che la lettura diventi più veloce sfruttando l'elaborazione in tempo reale. Per esempio. in un ambiente di e-commerce simile, memorizza milioni di dati di prodotto. Quindi se cerchi un prodotto tra milioni di prodotti, ottimizza il processo di richiesta e ricerca, producendo il risultato immediatamente (o puoi dire in tempo reale). Il dettagliato Spiegazione architettonica HBase , Parlerò nel mio prossimo blog.

Come sappiamo HBase è distribuito su HDFS, quindi una combinazione di entrambi ci offre una grande opportunità di utilizzare i vantaggi di entrambi, in una soluzione su misura, come vedremo nel caso di studio di Facebook Messenger di seguito.

Tutorial HBase: case study su Facebook Messenger

Piattaforma di messaggistica di Facebook è passato da Apache Cassandra a HBase nel novembre 2010.

Facebook Messenger combina messaggi, e-mail, chat e SMS in una conversazione in tempo reale. Facebook stava cercando di costruire un'infrastruttura scalabile e robusta per gestire una serie di questi servizi.

A quel tempo l'infrastruttura dei messaggi gestiva oltre 350 milioni di utenti che inviavano oltre 15 miliardi di messaggi da persona a persona al mese. Il servizio di chat supporta oltre 300 milioni di utenti che inviano oltre 120 miliardi di messaggi al mese.

Monitorando l'utilizzo, hanno scoperto che sono emersi due modelli di dati generali:

come utilizzare il browser sqlite
  • Un breve insieme di dati temporali che tende ad essere volatile
  • Un set di dati in continua crescita a cui si accede raramente

Facebook voleva trovare una soluzione di archiviazione per questi due modelli di utilizzo e ha iniziato a indagare per trovare un sostituto per l'infrastruttura di Messaggi esistente.

All'inizio del 2008, hanno utilizzato un database open source, ovvero Cassandra, che è un archivio chiave-valore di coerenza finale che era già in produzione per servire il traffico per Inbox Search. I loro team avevano una grande conoscenza nell'uso e nella gestione di un database MySQL, quindi cambiare una delle due tecnologie era una seria preoccupazione per loro.

Hanno trascorso alcune settimane a testare diversi framework, per valutare i cluster di MySQL, Apache Cassandra, Apache HBase e altri sistemi. Alla fine hanno scelto HBase.

Poiché MySQL non è riuscito a gestire in modo efficiente i set di dati di grandi dimensioni, con l'aumento delle dimensioni degli indici e dei set di dati, le prestazioni ne hanno risentito. Hanno trovato Cassandra incapace di gestire un modello difficile per riconciliare la loro nuova infrastruttura di Messaggi.

I problemi principali erano:

  • Archiviazione di grandi set di dati in continua crescita da vari servizi di Facebook.
  • Richiede un database in grado di sfruttare un'elevata elaborazione su di esso.
  • Prestazioni elevate necessarie per soddisfare milioni di richieste.
  • Mantenimento della coerenza in termini di archiviazione e prestazioni.

Figura: sfide affrontate da Facebook Messenger

Per tutti questi problemi, Facebook ha trovato una soluzione, ovvero HBase. Facebook ha adottato HBase per servire Facebook Messenger, chat, email, ecc. Grazie alle sue varie funzionalità.

HBase offre una scalabilità e prestazioni molto buone per questo carico di lavoro con un modello di coerenza più semplice di Cassandra. Sebbene abbiano trovato HBase il più adatto in termini di requisiti come il bilanciamento automatico del carico e il failover, il supporto alla compressione, più frammenti per server, ecc.

HDFS, che è il file system sottostante utilizzato da HBase, forniva loro anche diverse funzionalità necessarie come checksum end-to-end, replica e ribilanciamento automatico del carico.

Figura: HBase come soluzione per Facebook Messenger

Quando hanno adottato HBase, si sono anche concentrati sulla restituzione dei risultati a HBase stesso e hanno iniziato a lavorare a stretto contatto con la comunità Apache.

Poiché i messaggi accettano dati da fonti diverse come SMS, chat ed e-mail, hanno scritto un server delle applicazioni per gestire tutto il processo decisionale per il messaggio di un utente. Si interfaccia con un gran numero di altri servizi. Gli allegati vengono memorizzati in un Haystack (che funziona su HBase). Hanno anche scritto un servizio di rilevamento degli utenti su Apache ZooKeeper che parla con altri servizi di infrastruttura per relazioni di amicizia, verifica dell'account e-mail, decisioni di consegna e decisioni sulla privacy.

Il team di Facebook ha trascorso molto tempo a confermare che ciascuno di questi servizi è robusto, affidabile e fornisce buone prestazioni per gestire un sistema di messaggistica in tempo reale.

Spero che questo blog tutorial HBase sia informativo e ti sia piaciuto. In questo blog, hai avuto modo di conoscere le basi di HBase e le sue caratteristiche.Nel mio prossimo blog di , Spiegherò il architettura di HBase e il funzionamento di HBase che lo rende popolare per la lettura / scrittura veloce e casuale.

Ora che hai compreso le basi di HBase, controlla il file da Edureka, una società di formazione online affidabile con una rete di oltre 250.000 studenti soddisfatti sparsi in tutto il mondo. Il corso di formazione per la certificazione Edureka Big Data Hadoop aiuta gli studenti a diventare esperti in HDFS, Yarn, MapReduce, Pig, Hive, HBase, Oozie, Flume e Sqoop utilizzando casi d'uso in tempo reale nel settore Retail, Social Media, Aviation, Tourism, Finance.

Hai domande per noi? Per favore menzionalo nella sezione commenti e ti risponderemo.