2014-05-15 5 views
15

Ho una domanda fondamentale sul bilanciamento del carico. Ho appena finito di aggiungere nuovi nodi al nostro cluster hadoop (2.3) che ha anche hbase v0.98. Dopo l'aggiunta e avendo tutti i nodi in linea in Hadoop e HBase,riequilibrio hasdoop e hbase dopo le aggiunte al nodo

  1. Come è HBase affetto da Hadoop riequilibratore? Devo provare esplicitamente a ribilanciare hbase dopo il ribilanciamento di hadoop?

  2. Il mio cluster Hadoop è interamente occupato da hbase. Impostazione di balancer_switch = true, ribilancerà automaticamente hbase e hadoop?

  3. Qual è il modo migliore per assicurarsi che sia hasdoop che hbase vengano ribilanciati e funzionino bene?

risposta

2

Hadoop non esegue il bilanciamento del livello di blocco per impostazione predefinita. Esistono alcuni strumenti che è possibile utilizzare per eseguire manualmente il bilanciamento in Hadoop, ovvero https://hadoop.apache.org/docs/r2.4.1/hadoop-project-dist/hadoop-common/CommandsManual.html#balancer. Si noti che il bilanciamento di HDFS è in realtà piuttosto costoso se si ha un piccolo numero di nodi completamente vuoti o nuovi che sono appena stati aggiunti a un cluster altrimenti completo, e la mia esperienza con esso, è che fa un buon lavoro di bilanciamento dei blocchi HDFS . Eseguendo il bilanciamento più volte è possibile migliorare il bilanciamento generale. Ci sono anche alcune implementazioni alternative che possono fare un lavoro migliore di bilanciamento rispetto a quello integrato in Hadoop.

È possibile controllare il saldo dei blocchi dall'interfaccia utente di NameNode HDFS se si fa clic sul collegamento "Nodi in diretta". La colonna "Pool di blocchi usati" è la colonna utile per questo scopo. Se si nota un'alta varianza nella percentuale di blocchi utilizzati sulle varie macchine, potrebbe essere necessario riequilibrare il cluster HDFS.

L'balancer_switch interessa solo il bilanciamento del server delle regioni. HBase bilancia automaticamente le regioni del cluster per impostazione predefinita, ma è possibile eseguire manualmente balancer in qualsiasi momento dallo hbase shell.

È possibile controllare il bilanciamento della regione dalla pagina principale dell'interfaccia utente principale di HBase nella sezione "Server regionali" nella colonna "Carica", esiste un valore denominato "numeroOfOnlineRegions". In generale, HBase fa un buon lavoro nel mantenere questo equilibrio. Ho visto solo poche volte quando ho inizialmente creato tabelle che l'algoritmo di bilanciamento predefinito genera un insieme di regioni distorto. Indipendentemente da ciò, il bilanciamento della regione è in realtà abbastanza economico e può essere fatto abbastanza rapidamente. Eseguirlo una volta è in genere sufficiente per entrare in uno stato molto equilibrato.

13
  1. Il Hadoop (HDFS) bilanciatore muove blocchi intorno da un nodo all'altro per cercare di fare in modo ogni DataNode ha la stessa quantità di dati (entro una soglia configurabile). Questo rovina la localizzazione dei dati di HBases, il che significa che una particolare regione potrebbe servire un file che non è più sul suo host locale.

  2. Il balance_switch di HBase equilibra il cluster in modo che ogni regionerver ospiti lo stesso numero di regioni (o vicino a). Questo è separato dal bilanciatore di Hadoop (HDFS).

  3. Se si sta eseguendo solo HBase, si consiglia di non eseguire il sistema di bilanciamento Hadoop (HDFS) poiché causerà la perdita della località dei dati in alcune regioni. Ciò fa sì che qualsiasi richiesta a quella regione debba andare sulla rete a uno dei datanode che sta servendo il suo HFile.

La località dei dati di HBase viene tuttavia ripristinata.Ogni volta che si verifica una compattazione, tutti i blocchi vengono copiati localmente sul regionerver che serve quella regione e uniti. A quel punto, la località dei dati viene ripristinata per quella regione. Con questo, tutto ciò che devi veramente fare per aggiungere nuovi nodi al cluster è aggiungerli. Hbase si prenderà cura del ribilanciamento delle regioni e una volta che queste regioni saranno compatte, verrà ripristinata la località dei dati.

+0

Qual è il tempo approssimativo entro il quale HBase incorpora il nuovo nodo? –

+0

Il nuovo nodo dovrebbe essere aggiunto al cluster quasi immediatamente. Tuttavia, non inizierà realmente a servire le richieste fino a quando le regioni non verranno spostate su di esse. Il bilanciamento HBase è controllato da 'hbase.balancer.period' e il valore predefinito è 5 minuti. Puoi anche invocarlo a mano nella shell HBase. –

Problemi correlati