2012-12-06 14 views
14

Dalle mie righe di comprensione vengono inserite nelle tabelle HBase e vengono memorizzate come regioni in un altro server della regione. Quindi, il server della regione memorizza i datiRuolo di datanode, regionerver nell'integrazione Hbase-hadoop

Analogamente in termini di Hadoop, i dati vengono archiviati nei nodi dati presenti nel cluster hadoop.

Diciamo che ho HBase 0.90.6 configurato in cima Hadoop 1.1.1 come segue

2 nodi - master e slave

  1. agisce come nodo master,
    • Hadoop - Namenode, Namenode secondario, job tracker, data node, task tracker
    • HBase - Master, RegionServer e Zookeeper.
  2. nodo slave agisce come,
    • Hadoop DataNode e compito Tracker
    • server di regione HBase

Sulla base della mia dichiarazione, se i dati della tabella vengono memorizzati nei server regione; allora qual è il ruolo dei nodi dati e dei server regionali?

risposta

35

I dati memorizzano i dati. I server Region essenzialmente gestiscono operazioni di I/O buffer; i dati sono memorizzati in modo permanente su HDFS (ovvero, i nodi dati). Non penso che mettere il server region sul tuo nodo 'master' sia una buona idea.

Ecco un quadro semplificato di come vengono gestite le regioni:

Si dispone di un cluster che esegue HDFS (NameNode + DataNodes) con fattore di replicazione di 3 (ogni blocco HDFS viene copiato in 3 differenti DataNodes).

Si esegue RegionServers sugli stessi server di DataNodes. Quando la richiesta di scrittura arriva a RegionServer, scrive prima le modifiche in memoria e il log di commit; poi ad un certo punto decide che è il momento di scrivere le modifiche alla memoria permanente su HDFS. Ecco dove entra in gioco la localizzazione dei dati: dal momento che esegui RegionServer e DataNode sullo stesso server, prima la replica del file HDFS del blocco verrà scritta sullo stesso server. Altre due repliche verranno scritte su, bene, altri DataNode. Di conseguenza, RegionServer che serve la regione avrà quasi sempre accesso alla copia locale dei dati.

Cosa succede se RegionServer si arresta in modo anomalo o RegionMaster ha deciso di riassegnare la regione a un altro RegionServer (per mantenere il cluster bilanciato)? Nuovo RegionServer sarà costretto a eseguire la lettura remota prima, ma non appena viene eseguita la compattazione (fusione del registro modifiche nei dati) - il nuovo file verrà scritto su HDFS dal nuovo RegionServer e la copia locale verrà creata su RegionServer (di nuovo, poiché DataNode e RegionServer vengono eseguiti sullo stesso server).

Nota: in caso di arresto anomalo di RegionServer, le regioni precedentemente assegnate verranno riassegnate a più RegionServer.

buona legge:

  • Tom White, "Hadoop, The Definitive Guide" ha una buona spiegazione di architettura HDFS.Purtroppo non ho letto la carta GFS originale di Google, quindi non posso dire se è facile da seguire.

  • articolo Google BigTable. HBase è l'implementazione di Google BigTable e ho scoperto che la descrizione dell'architettura in questo articolo è la più facile da seguire.

Ecco le differenze di nomenclatura tra Google BigTable e l'attuazione HBase (da Lars George, "HBase, The Definitive Guide"):

  • HBase - Bigtable
  • Regione - Tablet
  • RegionServer - Tablet server
  • Flush - Compattazione minore
  • Compattazione secondaria - Compattazione unione
  • maggiore compattazione - maggiore compattazione
  • Scrivi avanti del registro - Impegnarsi log
  • HDFS - GFS
  • Hadoop MapReduce - MapReduce
  • MemStore - memtable
  • hFile - SSTable
  • Zookeeper - Chubby
+0

Potrei persino vedere le tabelle HBase create su hdf e sembra che i blocchi siano memorizzati. Il collegamento http://hbase.apache.org/book/regionserver.arch.html afferma che "HRegionServer è l'implementazione di RegionServer ed è responsabile della gestione e gestione delle regioni. In un cluster distribuito, RegionServer viene eseguito in una sezione 9.9 .2, "DataNode". " Tuttavia, ho difficoltà a comprendere il ruolo del server della regione. Che tipo di operazioni di I/O e perché sono necessari server di regioni separate solo per questi IO? – learninghuman

+6

Region è dati in un intervallo di righe. Dimmi, vuoi ottenere una riga dal tavolo HBase. La richiesta verrà inviata a RegionServer, responsabile per la regione contenente la riga. RegionServer o contiene già la tua riga in memoria (cache), o ha bisogno di leggerla da HDFS (dataNodes). Se RegionServer viene eseguito su DataNode che contiene la regione corrispondente, questo è un file system locale letto. Altrimenti questa è una lettura remota, che è lenta. Questo è il motivo per cui si desidera posizionare RegionServer su DataNode - principio di localizzazione dei dati. --- Per HDFS/DataNodes vedere i libri Hadoop (ad esempio, hadoopbook.com) –

+0

Grazie mille per la spiegazione ... ma le domande continuano a essere visualizzate. 1. Come viene eseguita la mappatura tra i server regionali ei nodi dati? diciamo che ho 3 server regionali rs1 sulla stessa macchina di dn1, rs2 su dn2 e rs3 su dn3. Cosa impone la gamma di rs1 di risiedere su dn1? La mia comprensione è che la regione di rs1 può andare anche a dn2. Allora come viene raggiunta la località? 2. Dovrebbe esserci un numero uguale di server regionali e nodi dati? – learninghuman