Architettura HBase: modello dati HBase e meccanismo di lettura / scrittura HBase



Questo blog sull'architettura HBase spiega il modello di dati HBase e fornisce informazioni sull'architettura HBase. Spiega anche diversi meccanismi in HBase.

Architettura HBase

Nel mio precedente blog su Esercitazione su HBase , Ho spiegato cos'è HBase e le sue caratteristiche. Ho anche menzionato il case study di Facebook Messenger per aiutarti a connetterti meglio. Ora andando avanti ulteriormente nel nostro , Ti spiegherò il modello di dati di HBase e HBase Architecture.Prima di andare avanti, dovresti anche sapere che HBase è un concetto importante che costituisce una parte integrante di per la certificazione Big Data Hadoop.

Gli argomenti importanti che ti illustrerò in questo blog sull'architettura HBase sono:





Cerchiamo prima di capire il modello di dati di HBase. Aiuta HBase nella lettura / scrittura e nelle ricerche più veloci.



Architettura HBase: HBase Data Model

Come sappiamo, HBase è un database NoSQL orientato alle colonne. Anche se sembra simile a un database relazionale che contiene righe e colonne, ma non è un database relazionale. I database relazionali sono orientati alle righe mentre HBase è orientato alle colonne. Quindi, cerchiamo prima di capire la differenza tra database orientati a colonne e orientati a righe:

Database orientati alle righe vs database orientati alle colonne:

  • I database orientati alle righe memorizzano i record delle tabelle in una sequenza di righe. Mentre i database orientati alle colonnememorizzare i record della tabella in una sequenza di colonne, ovvero le voci in una colonna vengono memorizzate in posizioni contigue sui dischi.

Per capirlo meglio, facciamo un esempio e consideriamo la tabella seguente.



Tavolo - HBase Architecture - Edureka

Se questa tabella è archiviata in un database orientato alle righe. Memorizzerà i record come mostrato di seguito:

uno,Paul Walker,NOI,231,Galante,

2, vin Diesel,Brasile,520,Mustang

Nei database orientati alle righe i dati vengono memorizzati sulla base di righe o tuple, come puoi vedere sopra.

Mentre i database orientati alle colonne memorizzano questi dati come:

uno,2, Paul Walker,vin Diesel, NOI,Brasile, 231,520, Galante,Mustang

lanciare un doppio a un java int

In un database orientato alle colonne, tutti i valori delle colonne vengono archiviati insieme come i valori della prima colonna verranno archiviati insieme, quindi i valori della seconda colonna verranno archiviati insieme ei dati in altre colonne vengono archiviati in modo simile.

  • Quando la quantità di dati è molto grande, come in termini di petabyte o exabyte, utilizziamo un approccio orientato alle colonne, perché i dati di una singola colonna vengono archiviati insieme ed è possibile accedervi più velocemente.
  • Mentre l'approccio orientato alle righe gestisce in modo comparativo un numero inferiore di righe e colonne in modo efficiente, poiché il database orientato alle righe memorizza i dati è un formato strutturato.
  • Quando abbiamo bisogno di elaborare e analizzare un ampio set di dati semi-strutturati o non strutturati, utilizziamo un approccio orientato alle colonne. Come le applicazioni che trattano Processo di analisi online come data mining, data warehousing, applicazioni incluse analisi, ecc.
  • Mentre, Elaborazione transazionale in linea come i domini bancari e finanziari che gestiscono dati strutturati e richiedono proprietà transazionali (proprietà ACID) utilizzano un approccio orientato alle righe.

Le tabelle HBase hanno i seguenti componenti, mostrati nell'immagine seguente:

  • Tabelle : I dati vengono memorizzati in un formato tabella in HBase. Ma qui le tabelle sono in formato orientato alle colonne.
  • Riga Chiave : I tasti riga vengono utilizzati per cercare record che rendono le ricerche veloci. Saresti curioso di sapere come? Lo spiegherò nella parte di architettura che prosegue in questo blog.
  • Colonna Famiglie : Varie colonne vengono combinate in una famiglia di colonne. Queste famiglie di colonne vengono memorizzate insieme, il che rende il processo di ricerca più veloce perché è possibile accedere insieme ai dati appartenenti alla stessa famiglia di colonne in un'unica ricerca.
  • Colonna Qualificazioni : Il nome di ogni colonna è noto come il suo qualificatore di colonna.
  • Cellula : I dati vengono archiviati nelle celle. I dati vengono trasferiti in celle identificate in modo specifico da qualificatori di riga e colonna.
  • Timestamp : Timestamp è una combinazione di data e ora. Ogni volta che i dati vengono memorizzati, vengono memorizzati con il relativo timestamp. Ciò semplifica la ricerca di una particolare versione dei dati.

In un modo più semplice e comprensivo, possiamo dire che HBase è costituito da:

  • Set di tavoli
  • Ogni tabella con famiglie di colonne e righe
  • La chiave di riga funge da chiave primaria in HBase.
  • Qualsiasi accesso alle tabelle HBase utilizza questa chiave primaria
  • Ogni qualificatore di colonna presente in HBase denota l'attributo corrispondente all'oggetto che risiede nella cella.

Ora che conosci il modello di dati HBase, vediamo come questo modello di dati è in linea con l'architettura HBase e lo rende adatto per l'archiviazione di grandi dimensioni e un'elaborazione più rapida.

Architettura HBase: componenti dell'architettura HBase

HBase ha tre componenti principali, ovvero HMaster Server , Server della regione HBase, regioni e Zookeeper .

La figura seguente spiega la gerarchia dell'architettura HBase. Parleremo di ognuno di loro individualmente.


Ora, prima di passare all'HMaster, capiremo le Regioni poiché tutti questi Server (HMaster, Region Server, Zookeeper) sono posizionati per coordinare e gestire le Regioni ed eseguire varie operazioni all'interno delle Regioni. Quindi saresti curioso di sapere cosa sono le regioni e perché sono così importanti?

Architettura HBase: Regione

Una regione contiene tutte le righe tra la chiave di inizio e la chiave di fine assegnata a quella regione. Le tabelle HBase possono essere suddivise in un numero di regioni in modo tale che tutte le colonne di una famiglia di colonne siano memorizzate in un'unica regione. Ogni regione contiene le righe in un ordine ordinato.

Molte regioni sono assegnate a un file Server regionale , che è responsabile della gestione, gestione, esecuzione di operazioni di lettura e scrittura su quell'insieme di aree.

Quindi, concludendo in modo più semplice:

  • Una tabella può essere suddivisa in più regioni. Una regione è un intervallo ordinato di righe che memorizza i dati tra una chiave di inizio e una chiave di fine.
  • Una regione ha una dimensione predefinita di 256 MB che può essere configurata in base alle necessità.
  • Un gruppo di regioni viene servito ai client da un server regionale.
  • Un server regionale può servire circa 1000 regioni al client.

Ora, partendo dalla cima della gerarchia, vorrei prima spiegarvi di HMaster Server che agisce in modo simile come NameNode in HDFS . Quindi, spostandoti verso il basso nella gerarchia, ti guiderò attraverso ZooKeeper e Region Server.

Architettura HBase: HMaster

Come nell'immagine seguente, puoi vedere che HMaster gestisce una raccolta di Region Server che risiede su DataNode. Cerchiamo di capire come lo fa HMaster.

  • HBase HMaster esegue operazioni DDL (crea ed elimina tabelle) e assegna le regioni ai server della regione come puoi vedere nell'immagine sopra.
  • Coordina e gestisce il server regionale (simile a NameNode gestisce DataNode in HDFS).
  • Assegna le regioni ai Region Server all'avvio e riassegna le regioni ai Region Server durante il ripristino e il bilanciamento del carico.
  • Monitora tutte le istanze del server regionale nel cluster (con l'aiuto di Zookeeper) ed esegue attività di ripristino ogni volta che un server regionale è inattivo.
  • Fornisce un'interfaccia per creare, eliminare e aggiornare le tabelle.

HBase ha un ambiente distribuito ed enorme in cui HMaster da solo non è sufficiente per gestire tutto. Quindi, ti starai chiedendo cosa aiuta HMaster a gestire questo enorme ambiente? È qui che entra in gioco ZooKeeper. Dopo aver capito come HMaster gestisce l'ambiente HBase, capiremo in che modo Zookeeper aiuta HMaster nella gestione dell'ambiente.

Architettura HBase: ZooKeeper - Il coordinatore

L'immagine sotto spiega il meccanismo di coordinamento di ZooKeeper.

  • Zookeeper agisce come un coordinatore all'interno dell'ambiente distribuito HBase. Aiuta a mantenere lo stato del server all'interno del cluster comunicando tramite sessioni.
  • Ogni server regionale insieme a HMaster Server invia un heartbeat continuo a intervalli regolari a Zookeeper e controlla quale server è attivo e disponibile come indicato nell'immagine sopra. Fornisce inoltre notifiche di errore del server in modo che possano essere eseguite misure di ripristino.
  • Facendo riferimento all'immagine sopra puoi vedere, c'è un server inattivo, che funge da backup per il server attivo. Se il server attivo fallisce, viene in soccorso.
  • L'HMaster attivo invia heartbeat allo Zookeeper mentre l'HMaster inattivo ascolta la notifica inviata dall'HMaster attivo. Se l'HMaster attivo non riesce a inviare un heartbeat, la sessione viene eliminata e l'HMaster inattivo diventa attivo.
  • Mentre se un server regionale non riesce a inviare un heartbeat, la sessione è scaduta e tutti i listener vengono informati. Quindi HMaster esegue azioni di ripristino adeguate di cui parleremo più avanti in questo blog.
  • Zookeeper gestisce anche il percorso del server .META, che aiuta qualsiasi client nella ricerca di qualsiasi regione. Il client deve prima verificare con il server .META a quale server regionale appartiene una regione e ottiene il percorso di quel server regionale.

Mentre ho parlato del server .META, lascia che ti spieghi prima cos'è il server .META? Quindi, puoi facilmente mettere in relazione il lavoro di ZooKeeper e .META Server insieme. Più avanti, quando ti spiegherò il meccanismo di ricerca HBase in questo blog, spiegherò come funzionano questi due in collaborazione.

Architettura HBase: Meta Table

  • La tabella META è una tabella speciale del catalogo HBase. Mantiene un elenco di tutti i server delle regioni nel sistema di archiviazione HBase, come puoi vedere nell'immagine sopra.
  • Guardando la figura che puoi vedere .META file mantiene la tabella sotto forma di chiavi e valori. La chiave rappresenta la chiave di inizio della regione e il suo id mentre il valore contiene il percorso del server della regione.

Come ho già discusso, Region Server e le sue funzioni mentre ti spiegavo le Regioni, quindi, ora ci stiamo spostando verso il basso nella gerarchia e mi concentrerò sui componenti del Region Server e sulle loro funzioni. Successivamente discuterò il meccanismo di ricerca, lettura, scrittura e comprenderò come tutti questi componenti lavorano insieme.

Architettura HBase: Componenti di Region Server

L'immagine sotto mostra i componenti di un server regionale. Ora li discuterò separatamente.

Un server regionale mantiene varie regioni in esecuzione nella parte superiore di . I componenti di un server regionale sono:

copia profonda vs superficiale java
  • WAL: Come si può concludere dall'immagine sopra, Write Ahead Log (WAL) è un file allegato a ogni Region Server all'interno dell'ambiente distribuito. Il WAL memorizza i nuovi dati che non sono stati conservati o salvati nella memoria permanente. Viene utilizzato in caso di mancato ripristino dei set di dati.
  • Block Cache: Dall'immagine sopra, è chiaramente visibile che Block Cache risiede nella parte superiore di Region Server. Memorizza i dati letti di frequente nella memoria. Se i dati in BlockCache vengono utilizzati meno di recente, tali dati vengono rimossi da BlockCache.
  • MemStore: È la cache di scrittura. Memorizza tutti i dati in arrivo prima di salvarli sul disco o nella memoria permanente. Esiste un MemStore per ogni famiglia di colonne in una regione. Come puoi vedere nell'immagine, ci sono più MemStore per una regione perché ogni regione contiene più famiglie di colonne. I dati vengono ordinati in ordine lessicografico prima di salvarli sul disco.
  • HFile: Dalla figura sopra puoi vedere che HFile è archiviato su HDFS. Quindi memorizza le celle effettive sul disco. MemStore salva i dati su HFile quando la dimensione di MemStore supera.

Ora che conosciamo i componenti principali e minori di HBase Architecture, spiegherò il meccanismo e il loro sforzo collaborativo in questo. Che si tratti di leggere o scrivere, prima dobbiamo cercare da dove leggere o dove scrivere un file. Quindi, comprendiamo questo processo di ricerca, poiché questo è uno dei meccanismi che rende HBase molto popolare.

Architettura HBase: Come viene inizializzata la ricerca in HBase?

Come sai, Zookeeper memorizza la posizione della tabella META. Ogni volta che un client si avvicina con una richiesta di lettura o scrittura a HBase, si verifica la seguente operazione:

  1. Il client recupera la posizione della tabella META da ZooKeeper.
  2. Il client richiede quindi la posizione del server regionale della chiave di riga corrispondente dalla tabella META per accedervi. Il client memorizza queste informazioni nella cache con la posizione della tabella META.
  3. Quindi otterrà la posizione della riga richiedendo al server regionale corrispondente.

Per riferimenti futuri, il client utilizza la sua cache per recuperare la posizione della tabella META e il server regionale della chiave di riga precedentemente letta. Quindi il client non farà riferimento alla tabella META, fino a quando ea meno che non si verifichi un errore perché la regione viene spostata o spostata. Quindi richiederà nuovamente al server META e aggiornerà la cache.

Come ogni volta, i client non perdono tempo nel recuperare la posizione di Region Server da META Server, quindi questo fa risparmiare tempo e rende più veloce il processo di ricerca. Ora, lascia che ti dica come avviene la scrittura in HBase. Quali sono i componenti coinvolti e come vengono coinvolti?

Architettura HBase: Scrittura HBase Meccanismo

L'immagine sotto spiega il meccanismo di scrittura in HBase.

Il meccanismo di scrittura esegue il seguente processo in sequenza (fare riferimento all'immagine sopra):

Passo 1: Ogni volta che il client ha una richiesta di scrittura, il client scrive i dati nel WAL (Write Ahead Log).

  • Le modifiche vengono quindi aggiunte alla fine del file WAL.
  • Questo file WAL viene mantenuto in ogni Region Server e Region Server lo utilizza per recuperare i dati che non sono stati salvati sul disco.

Passo 2: Una volta che i dati sono stati scritti nel WAL, vengono copiati nel MemStore.

Passaggio 3: Una volta inseriti i dati in MemStore, il client riceve il riconoscimento.

Passaggio 4: Quando MemStore raggiunge la soglia, scarica o salva i dati in un HFile.

Ora facciamo un tuffo e comprendiamo come MemStore contribuisce al processo di scrittura e quali sono le sue funzioni?

Scrittura HBase Meccanismo- MemStore

  • Il MemStore aggiorna sempre i dati in esso memorizzati, in ordine lessicografico (sequenzialmente in maniera dizionario) come KeyValues ​​ordinati. Esiste un MemStore per ogni famiglia di colonne e quindi gli aggiornamenti vengono memorizzati in modo ordinato per ogni famiglia di colonne.
  • Quando il MemStore raggiunge la soglia, scarica tutti i dati in un nuovo HFile in modo ordinato. Questo HFile è archiviato in HDFS. HBase contiene più HFile per ogni famiglia di colonne.
  • Nel tempo, il numero di HFile cresce man mano che MemStore scarica i dati.
  • MemStore salva anche l'ultimo numero di sequenza scritto, in modo che Master Server e MemStore sappiano entrambi che cosa è stato impegnato finora e da dove iniziare. All'avvio della regione, viene letto l'ultimo numero di sequenza e da quel numero iniziano le nuove modifiche.

Come ho discusso più volte, quell'HFile è il principale archivio persistente in un'architettura HBase. Infine, tutti i dati vengono assegnati a HFile, che è l'archiviazione permanente di HBase. Quindi, esaminiamo le proprietà di HFile che lo rende più veloce per la ricerca durante la lettura e la scrittura.

Architettura HBase: Scrittura HBase Meccanismo- HFile

  • Le scritture vengono collocate in sequenza sul disco. Pertanto, il movimento della testina di lettura-scrittura del disco è molto inferiore. Questo rende il meccanismo di ricerca e scrittura molto veloce.
  • Gli indici HFile vengono caricati in memoria ogni volta che viene aperto un HFile. Questo aiuta a trovare un record in una singola ricerca.
  • Il trailer è un puntatore che punta al meta blocco dell'HFile. È scritto alla fine del file sottoposto a commit. Contiene informazioni su timestamp e filtri bloom.
  • Bloom Filter aiuta nella ricerca di coppie di valori chiave, salta il file che non contiene la chiave di riga richiesta. Timestamp aiuta anche nella ricerca di una versione del file, aiuta a saltare i dati.

Dopo aver conosciuto il meccanismo di scrittura e il ruolo dei vari componenti nel rendere la scrittura e la ricerca più veloci. Ti spiegherò come funziona il meccanismo di lettura all'interno di un'architettura HBase? Quindi passeremo ai meccanismi che aumentano le prestazioni di HBase come la compattazione, la suddivisione della regione e il recupero.

come terminare il programma java

Architettura HBase: Leggi il meccanismo

Come discusso nel nostro meccanismo di ricerca, prima il client recupera la posizione del server regionale dal server .META se il client non lo ha nella sua memoria cache. Quindi esegue i passaggi sequenziali come segue:

  • Per leggere i dati, lo scanner cerca prima la cella Riga nella cache dei blocchi. Qui vengono memorizzate tutte le coppie chiave-valore lette di recente.
  • Se Scanner non riesce a trovare il risultato richiesto, si sposta nel MemStore, poiché sappiamo che questa è la memoria cache di scrittura. Lì, cerca i file scritti più di recente, che non sono stati ancora scaricati in HFile.
  • Infine, utilizzerà i filtri bloom e la cache di blocco per caricare i dati da HFile.

Finora ho discusso il meccanismo di ricerca, lettura e scrittura di HBase. Ora esamineremo il meccanismo HBase che rende veloce la ricerca, la lettura e la scrittura in HBase. In primo luogo, capiremo Compattazione , che è uno di quei meccanismi.

Architettura HBase: Compattazione

HBase combina HFile per ridurre lo spazio di archiviazione e ridurre il numero di ricerche su disco necessarie per una lettura. Questo processo è chiamato compattazione . La compattazione sceglie alcuni HFile da una regione e li combina. Esistono due tipi di compattazione come puoi vedere nell'immagine sopra.

  1. Compattazione minore : HBase seleziona automaticamente HFile più piccoli e li ripropone in HFile più grandi come mostrato nell'immagine sopra. Questo si chiama compattazione minore. Esegue l'ordinamento di unione per il commit di file H più piccoli in file H più grandi. Questo aiuta nell'ottimizzazione dello spazio di archiviazione.
  2. Compattazione principale: Come illustrato nell'immagine sopra, in Compattazione maggiore, HBase unisce e reinizia i file H più piccoli di una regione in un nuovo HFile. In questo processo, le stesse famiglie di colonne vengono inserite insieme nel nuovo HFile. Elimina le celle eliminate e scadute in questo processo. Aumenta le prestazioni di lettura.

Ma durante questo processo, i dischi di input-output e il traffico di rete potrebbero essere congestionati. Questo è noto come scrivere amplificazione . Quindi, è generalmente programmato durante i periodi di carico di punta basso.

Ora un altro processo di ottimizzazione delle prestazioni di cui parlerò è Regione Spalato . Questo è molto importante per il bilanciamento del carico.

Architettura HBase: Regione Spalato

La figura seguente illustra il meccanismo di suddivisione della regione.

Ogni volta che una regione diventa grande, viene divisa in due regioni figlie, come mostrato nella figura sopra. Ogni regione rappresenta esattamente la metà della regione madre. Quindi questa divisione viene segnalata all'HMaster. Questo viene gestito dallo stesso server regionale finché HMaster non li alloca a un nuovo server regionale per il bilanciamento del carico.

Scendendo lungo la linea, ultimo ma non meno importante, ti spiegherò come HBase recupera i dati dopo un errore. Come lo sappiamo Ripristino in caso di errore è una caratteristica molto importante di HBase, quindi facci sapere come HBase recupera i dati dopo un errore.

Architettura HBase: HBase Crash e recupero dati

  • Ogni volta che un server regionale si guasta, ZooKeeper notifica all'HMaster l'errore.
  • Quindi HMaster distribuisce e alloca le regioni del server regionale in crash a molti server regionali attivi. Per recuperare i dati del MemStore del Region Server guasto, HMaster distribuisce il WAL a tutti i Region Server.
  • Ogni Region Server esegue nuovamente il WAL per creare MemStore per la famiglia di colonne di quella regione guasta.
  • I dati sono scritti in ordine cronologico (in un ordine tempestivo) in WAL. Pertanto, Rieseguire quel WAL significa apportare tutte le modifiche apportate e memorizzate nel file MemStore.
  • Quindi, dopo che tutti i server regionali hanno eseguito il WAL, i dati MemStore per tutta la famiglia di colonne vengono ripristinati.

Spero che questo blog ti abbia aiutato a capire il modello di dati HBase e l'architettura HBase. Spero ti sia piaciuto. Ora puoi metterti in relazione con le funzionalità di HBase (che ho spiegato nel mio precedente Esercitazione su HBase blog) con HBase Architecture e capire come funziona internamente. Ora che conosci la parte teorica di HBase, dovresti passare alla parte pratica. Tenendo presente questo, il nostro prossimo blog di spiegherà un campione HBase POC .

Ora che hai compreso l'architettura 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.