Video: SERIE SB1 - GRAMEGNA 2024
Compaction , il processo mediante il quale HBase pulisce dopo se stesso, è disponibile in due versioni: maggiore e minore. Le principali compenetrazioni possono essere un grosso problema, ma prima devi capire compattazioni minori.
Le compazioni minori combinano un numero configurabile di HFiles più piccoli in un HFile più grande. È possibile sintonizzare il numero di HFiles da compattare e la frequenza di una compattazione minore. Le compattazioni minori sono importanti perché senza di esse, la lettura di una particolare riga può richiedere molte letture del disco e causare prestazioni complessive lente.
La figura, che illustra come funziona questo concetto, può aiutare a visualizzare come la seguente tabella può essere mantenuta su HDFS.
Riga chiave | Famiglia di colonne: {Nome colonna: Versione: Valore} |
---|---|
00001 | Nome cliente: {'FN':
1383859182496: ' John ', ' LN ': 1383859182858:' Smith ', ' MN ': 1383859183001:' Timothy ', ' MN ': 1383859182915:' T '} ContactInfo: {' EA ': 1383859183030:' John. Smith @ xyz. com ', ' SA ': 1383859183073:' 1 Hadoop Lane, NY 11111 '} |
00002 | CustomerName: {' FN ':
1383859183103:' Jane ', "LN": 1383859183163: "Doe", ContactInfo: { 'SA': 1383859185577: '7 HBase Ave, CA 22222'} |
Si noti come la famiglia di colonne CustomerName è stata scritta sull'HDFS con due svuotamenti di MemStore e come i dati nella famiglia di colonne ContactInfo sono stati mantenuti su disco con un solo svuotamento di MemStore. Questo esempio è ipotetico, ma è uno scenario probabile a seconda dei tempi delle scritture.
Immagina un'azienda di servizi che sta acquisendo sempre più informazioni di contatto con il cliente nel tempo. La società di servizi potrebbe conoscere il nome e il cognome del proprio cliente, ma non conoscere il suo secondo nome fino a quando, ore o settimane dopo, nelle richieste di servizio successive. Questo scenario comporterebbe la permanenza di parti della riga 00001 sull'HDFS in diverse HFiles.
Fino a quando il sistema HBase esegue una compattazione minore, leggere dalla riga 00001 richiederebbe tre letture del disco per recuperare il contenuto HFile pertinente! Compazioni minori cercano di minimizzare il sovraccarico del sistema mantenendo il numero di HFiles sotto controllo. I progettisti di HBase hanno prestato particolare attenzione a dare all'amministratore HBase il massimo controllo possibile per rendere l'impatto sul sistema "minore". "
Come suggerisce il nome, una maggiore compattazione è diversa dalla prospettiva di un impatto sul sistema. Tuttavia, la compattazione è molto importante per la funzionalità complessiva del sistema HBase. Una compattazione importante cerca di combinare tutti HFiles in un HFile di grandi dimensioni.
Inoltre, un'importante compattazione esegue la pulizia dopo che un utente ha eliminato un record. Quando un utente emette una chiamata di cancellazione, il sistema HBase posiziona un marcatore nella coppia chiave-valore in modo che possa essere rimosso in modo permanente durante la successiva compattazione maggiore.
Inoltre, poiché le principali compactions combinano tutte le HFile in un HFile di grandi dimensioni, è il momento giusto per il sistema di rivedere le versioni dei dati e confrontarle con la proprietà time to live (TTL). I valori precedenti al TTL vengono eliminati.
Tempo di vita si riferisce alla variabile in HBase che puoi impostare per definire per quanto tempo i dati con più versioni rimarranno in HBase.
Potresti aver intuito che un maggiore compattamento influisce in modo significativo sul tempo di risposta del sistema. Gli utenti che stanno tentando di aggiungere, recuperare o manipolare i dati nel sistema durante un forte compattamento, potrebbero vedere un tempo di risposta del sistema insufficiente.
Inoltre, il cluster HBase potrebbe dover dividere le regioni nello stesso momento in cui si verifica una compattazione maggiore e bilanciare le regioni tra tutti i RegionServer. Questo scenario comporterebbe una quantità significativa di traffico di rete tra RegionServers.
Per questi motivi, l'amministratore di HBase deve disporre di una strategia di compattazione importante per la distribuzione.