Video: Cosa sono le macchie solari? - #AstroCaffè 2024
I RegionServer sono una cosa, ma devi anche dare un'occhiata a come funzionano le singole regioni. In HBase, una tabella è distribuita sia su un numero di RegionServer che su singole regioni. Quando le tabelle vengono divise, le divisioni diventano regioni. Le regioni memorizzano un intervallo di coppie chiave-valore e ogni RegionServer gestisce un numero configurabile di regioni.
Ma come sono le singole regioni? HBase è un archivio dati orientato alla famiglia di colonne, quindi come fanno le singole regioni a memorizzare coppie di valori-chiave in base alle famiglie di colonne a cui appartengono? La figura seguente inizia a rispondere a queste domande e ti aiuta a digerire più informazioni vitali sull'architettura di HBase.
HBase è scritto in Java, come la stragrande maggioranza delle tecnologie Hadoop. Java è un linguaggio di programmazione orientato agli oggetti e una tecnologia elegante per l'elaborazione distribuita. Quindi, mentre continui a scoprire di più su HBase, ricorda che tutti i componenti dell'architettura sono in definitiva oggetti Java.
Prima di tutto, la figura precedente offre una buona idea di come siano effettivamente gli oggetti della regione, in generale. Inoltre, rende chiaro che le regioni separano i dati in famiglie di colonne e memorizzano i dati nell'HDFS utilizzando gli oggetti HFile.
Quando i client inseriscono coppie di valori-chiave nel sistema, le chiavi vengono elaborate in modo che i dati vengano archiviati in base alla famiglia di colonne a cui appartiene la coppia. Come mostrato nella figura, ogni oggetto di archivio famiglia di colonne ha una cache di lettura chiamata BlockCache e una cache di scrittura chiamata MemStore. BlockCache aiuta con prestazioni di lettura casuale.
I dati vengono letti in blocchi da HDFS e archiviati in BlockCache. Letture successive per i dati - o dati archiviati nelle immediate vicinanze - verranno letti dalla RAM anziché dal disco, migliorando le prestazioni generali. Il registro di scrittura in anticipo (WAL, in breve) garantisce che le tue scritture HBase siano affidabili. C'è un WAL per RegionServer.
Prestate sempre attenzione alla legge sul ferro del calcolo distribuito: un fallimento non è l'eccezione: è la norma, soprattutto quando si raggruppano centinaia o anche migliaia di server. Google ha seguito la legge di ferro nella progettazione di BigTable e HBase ha seguito l'esempio.
Quando si scrivono o si modificano i dati in HBase, i dati vengono prima mantenuti sul WAL, che viene archiviato nell'HDFS, e quindi i dati vengono scritti nella memoria del MemStore. A intervalli configurabili, le coppie chiave-valore memorizzate nel MemStore vengono scritte su HFiles nell'HDFS e in seguito vengono cancellate le voci WAL.
Se si verifica un errore dopo la scrittura iniziale WAL ma prima di il MemStore finale scrive su disco, il WAL può essere riprodotto per evitare qualsiasi perdita di dati.
Tre oggetti HFile si trovano in una famiglia di colonne e due nell'altra. Il progetto di HBase è quello di svuotare i dati della famiglia di colonne memorizzati nel MemStore su un HFile per colore. Quindi a intervalli configurabili gli HFiles sono combinati in HFiles più grandi. Questa strategia accoda l'operazione di compattazione critica in HBase.