La dimensione del blocco HDFS predefinito è 64 MB. Quindi non puoi leggere una riga qui, una riga lì. Si leggono e scrivono sempre blocchi da 64 MB. Questo va bene quando si desidera elaborare l'intero file. Ma rende HDFS inadatto per alcune applicazioni, come nel caso in cui si desideri utilizzare un indice per cercare piccoli record.
HBase d'altra parte è ottimo per questo. Se si desidera leggere un piccolo record, si leggerà solo quel piccolo record.
HBase utilizza HDFS come supporto. Quindi, come fornisce un accesso efficiente basato sui record?
HBase carica le tabelle da HDFS alla memoria o al disco locale, quindi la maggior parte delle letture non viene eseguita su HDFS. Le mutazioni vengono memorizzate prima in un diario di sola aggiunta. Quando il journal diventa grande, è incorporato in una tabella "addendum". Quando ci sono troppe tabelle addendum, vengono tutte ridotte in una tabella primaria nuova di zecca. Per le letture, prima viene consultato il journal, poi le tabelle addendum e infine la tabella primaria. Questo sistema significa che scriviamo solo un blocco HDFS completo quando abbiamo un valore completo di modifiche di un blocco HDFS.
Una descrizione più approfondita di questo approccio è nello Bigtable whitepaper.
fonte
2014-07-12 01:19:50
Downvote come "questa domanda non mostra alcuno sforzo di ricerca". Dai uno sguardo [a questa domanda] (http://stackoverflow.com/questions/16929832/difference-between-hbase-and-hadoop), e fai qualche ricerca sull'accesso in sequenza/lettura sequenziale per quanto riguarda queste tecnologie. – admdrew
Dopo aver letto quella risposta, avrei esattamente questa domanda :). –