Come installare HBase su Ubuntu: Guida passo passo

⚡ Riepilogo intelligente

Installazione di HBase su Ubuntu Il programma funziona in tre modalità: standalone, pseudo-distribuita e completamente distribuita, e illustra come scaricare il file tarball della release, modificare hbase-env.sh e hbase-site.xml, avviare i daemon e risolvere i comuni errori di avvio.

  • 🧩 Modalità di installazione: Standalone viene eseguito in una JVM sul file system locale; le modalità distribuite memorizzano i dati in Hadoop HDFS.
  • ⬇️ Scaricare Scarica il file binario di HBase dal sito di Apache HBase ed estrailo nella tua directory home.
  • ⚙️ Configurazione: Imposta JAVA_HOME e HBASE_HOME, quindi definisci hbase.rootdir e le directory di ZooKeeper in hbase-site.xml.
  • ▶ ️ Avviare: Eseguire start-hbase.sh, confermare HMaster con jps, quindi aprire il prompt interattivo utilizzando hbase shell.
  • 🌐 Pseudodistribuito: Imposta hbase.rootdir su HDFS, abilita hbase.cluster.distributed e configura il quorum e la porta client di ZooKeeper.
  • 🩹 Risoluzione dei problemi: Risolvi gli errori relativi a region-server, quorum di ZooKeeper, directory radice e timeout di sessione modificando i file hosts e hbase-site.xml.

Come installare Apache HBase su Ubuntu in modalità autonoma, pseudo-distribuita e completamente distribuita

Apache HBase è un sistema distribuito, database orientato alle colonne che funziona sopra l'Hadoop Distributed File System (HDFS). Prima di iniziare, assicurati di avere un sistema supportato Java Il runtime è installato e JAVA_HOME è impostato; anche le modalità pseudo-distribuita e completamente distribuita richiedono un runtime funzionante. Hadoop installazione.

Modalità di installazione di Apache HBase

Apache HBase può essere installato in tre modalità. Le caratteristiche di queste modalità sono menzionate di seguito.

1) Installazione in modalità standalone (nessuna dipendenza dal sistema Hadoop)

  • Questa è la modalità predefinita di HBase.
  • Viene eseguito sul file system locale.
  • Non usa Hadoop HDFS.
  • Solo il demone HMaster può essere eseguito.
  • Sconsigliato per un ambiente di produzione.
  • Funziona in una singola JVM.

2) Installazione in modalità pseudo-distribuita (sistema Hadoop a nodo singolo + installazione HBase)

  • Funziona Hadoop HDFS.
  • Tutti i daemon vengono eseguiti su un singolo nodo.
  • Consigliato per un ambiente di produzione.

3) Installazione in modalità completamente distribuita (ambiente Hadoop multinodo + installazione di HBase)

  • Funziona Hadoop HDFS.
  • Tutti i daemon vengono eseguiti su tutti i nodi presenti nel cluster.
  • Altamente raccomandato per un ambiente di produzione.

Per l'installazione di Hadoop, fare riferimento a questo Guida all'installazione di Hadoop.

Gli screenshot seguenti utilizzano HBase 1.1.2. Le versioni stabili attuali sono le serie HBase 2.5.x e 2.6.x (Java 8 o 11), ma i passaggi di installazione e i file di configurazione rimangono sostanzialmente gli stessi.

Come scaricare la versione stabile del file tar HBase

Passaggio 1) Vai al Pagina ufficiale per il download di Apache HBase per scaricare HBase. Si aprirà la pagina di download come mostrato di seguito.

Apri la pagina di download di Apache HBase in un browser per scaricare il file tarball della versione.

Passaggio 2) Selezionare la versione stabile come mostrato di seguito, ovvero la versione HBase 1.1.2.

Selezionando la versione stabile HBase 1.1.2 nella pagina di download

Passaggio 3) Fare clic su hbase-1.1.2-bin.tar.gz. Verrà scaricato il file tar. Copiare il file tar in una posizione di installazione.

Cliccando sul collegamento binario hbase-1.1.2-bin.tar.gz si scarica il file tar

Come installare HBase in Ubuntu con modalità autonoma

Ecco la procedura passo passo per l'installazione della modalità standalone di HBase in Ubuntu:

Passaggio 1) Eseguire il comando seguente. Posizionare hbase-1.1.2-bin.tar.gz in /home/hduser.

Passaggio 2) Decomprimi il file eseguendo il comando $tar -xvf hbase-1.1.2-bin.tar.gz. Questo decomprimerà il contenuto e creerà la cartella hbase-1.1.2 nella posizione /home/hduser.

Passaggio 3) Aprire hbase-env.sh come mostrato di seguito e specificare il percorso JAVA_HOME nel campo location, come illustrato di seguito.

Modificare hbase-env.sh per impostare il percorso JAVA_HOME per la modalità standalone

Passaggio 4) Aprire il file ~/.bashrc e specificare il percorso HBASE_HOME come mostrato di seguito.

export HBASE_HOME=/home/hduser/hbase-1.1.1
export PATH= $PATH:$HBASE_HOME/bin

Il file ~/.bashrc aggiornato con la voce HBASE_HOME è mostrato di seguito.

Aggiunta del percorso HBASE_HOME al file bashrc per la modalità standalone

Passaggio 5) Aggiungere le proprietà al file. Aprire hbase-site.xml e inserire le seguenti proprietà al suo interno.

hduser@ubuntu$ gedit hbase-site.xml (codice come di seguito)

<property>

<name>hbase.rootdir</name>

<value>file:///home/hduser/HBASE/hbase</value>

</property>

<property>

<name>hbase.zookeeper.property.dataDir</name>

<value>/home/hduser/HBASE/zookeeper</value>

</property>

Il file hbase-site.xml aperto in gedit è mostrato sotto.

hbase-site.xml aperto in gedit con le proprietà autonome rootdir e ZooKeeper

Qui inseriamo due proprietà:

  • Uno per la directory radice di HBase e
  • Il secondo per la directory dei dati che corrisponde a Custode dello zoo.

Tutte le attività di HMaster e ZooKeeper puntano a questo file hbase-site.xml.

Passaggio 6) Inserire gli indirizzi IP. Aprire il file hosts presente nella directory /etc e inserire gli indirizzi IP come mostrato di seguito.

Modifica del file /etc/hosts per mappare gli indirizzi IP delle macchine

Passaggio 7) Ora esegui start-hbase.sh nella posizione hbase-1.1.1/bin come mostrato di seguito. Puoi quindi verificare con il comando jps se HMaster è in esecuzione o meno.

Output del comando jps che mostra il processo HMaster in esecuzione in modalità standalone

Passaggio 8) Avviare la shell HBase. La shell HBase può essere avviata utilizzando shell hbase eseguendo il comando, entrerà in modalità shell interattiva, come mostrato nello screenshot qui sotto. Una volta entrata in modalità shell, possiamo eseguire tutti i tipi di comandi.

Il prompt interattivo della shell di HBase è stato avviato con il comando hbase shell

La modalità autonoma non richiede l'avvio dei demoni Hadoop. HBase può essere eseguito in modo indipendente.

Modalità di installazione pseudo-distribuita HBase

Questo è un altro metodo per l'installazione di Apache HBase, noto come modalità di installazione pseudo-distribuita. Di seguito sono riportati i passaggi per installare HBase tramite la modalità pseudo-distribuita.

Passaggio 1) Posizionare hbase-1.1.2-bin.tar.gz nella directory /home/hduser.

Passaggio 2) Decomprimi il file eseguendo il comando $tar -xvf hbase-1.1.2-bin.tar.gz. Questo decomprimerà il contenuto e creerà la cartella hbase-1.1.2 nella posizione /home/hduser.

Passaggio 3) Aprire hbase-env.sh come mostrato di seguito, specificare il percorso JAVA_HOME e il percorso dei Region Server nel campo location ed esportare il comando come mostrato di seguito.

Modifica di hbase-env.sh con JAVA_HOME e il percorso dei Region Server per la modalità pseudo-distribuita

Passaggio 4) In questo passaggio, apriremo il file ~/.bashrc e specificheremo il percorso HBASE_HOME come mostrato nello screenshot seguente.

Impostazione del percorso HBASE_HOME nel file bashrc per la modalità pseudo-distribuita

Passaggio 5) Aprire hbase-site.xml e specificare le proprietà seguenti nel file (codice come di seguito).

<property>

<name>hbase.rootdir</name>

<value>hdfs://localhost:9000/hbase</value>

</property>

<property>

<name>hbase.cluster.distributed</name>

<value>true</value>

</property>

<property>

<name>hbase.zookeeper.quorum</name>

<value>localhost</value>

</property>

<property>

<name>dfs.replication</name>

<value>1</value>

</property>

<property>

<name>hbase.zookeeper.property.clientPort</name>

<value>2181</value>

</property>

<property>

<name>hbase.zookeeper.property.dataDir</name>

<value>/home/hduser/hbase/zookeeper</value>

</property>

Il file hbase-site.xml con le proprietà pseudo-distribuite è mostrato di seguito.

hbase-site.xml con le proprietà pseudo-distribuite HDFS e ZooKeeper

La restante configurazione di ZooKeeper è mostrata di seguito.

Proseguimento della configurazione di ZooKeeper per hbase-site.xml in modalità pseudo-distribuita

Ogni proprietà presente nel file svolge un ruolo specifico:

  • Impostazione della directory radice di HBase nella proprietà hbase.rootdir.
  • Per una configurazione distribuita, hbase.cluster.distributed deve essere impostato su true.
  • La proprietà del quorum ZooKeeper dovrebbe essere configurata qui.
  • La replicazione viene configurata nella proprietà dfs.replication. Per impostazione predefinita, il valore di replicazione è 1. In modalità completamente distribuita, sono presenti più nodi dati, quindi è possibile aumentare la replicazione impostando un valore maggiore di 1 nella proprietà dfs.replication.
  • La porta client deve essere specificata nella proprietà hbase.zookeeper.property.clientPort.
  • La directory dei dati di ZooKeeper può essere specificata nella proprietà hbase.zookeeper.property.dataDir.

Passaggio 6) Avviare prima i daemon di Hadoop e successivamente i daemon di HBase come mostrato di seguito. Per prima cosa è necessario avviare i daemon di Hadoop utilizzando il comando ./start-all.sh come mostrato di seguito.

Esecuzione del comando start-all.sh per avviare i daemon di Hadoop

Dopodiché, avviare i daemon di HBase con hbase-start.sh, come mostrato di seguito.

Avvio dei daemon HBase con lo script start-hbase.sh in modalità pseudo-distribuita

Ora controlla i processi in esecuzione con il comando jps, come mostrato di seguito.

Output del comando jps che elenca i daemon Hadoop e HBase in esecuzione.

Installazione in modalità completamente distribuita HBase

La modalità completamente distribuita estende la configurazione pseudo-distribuita a un cluster reale.

  • Questa configurazione funziona in modalità cluster Hadoop, dove più nodi vengono generati e sono in esecuzione all'interno del cluster.
  • L'installazione è identica alla modalità pseudo-distribuita; l'unica differenza è che verrà distribuita su più nodi.
  • I file di configurazione menzionati in hbase-site.xml e hbase-env.sh sono gli stessi menzionati nella modalità pseudo.

In modalità completamente distribuita, assicurarsi che la versione di Hadoop sul cluster corrisponda alle librerie Hadoop incluse in HBase, in modo che i daemon comunichino correttamente.

Risoluzione dei problemi di installazione di HBase

1) Descrizione del problema: Il server master si inizializza, ma i server di regione non si inizializzano.

La comunicazione tra il Master e i server di regione avviene tramite i rispettivi indirizzi IP. Il Master è in ascolto dei server di regione in esecuzione o che hanno l'indirizzo IP 127.0.0.1. L'indirizzo IP 127.0.0.1 corrisponde all'host locale e viene risolto nell'host locale del server Master.

causa:

Nella comunicazione bidirezionale tra i server di regione e il server Master, il server di regione informa continuamente il server Master che il suo indirizzo IP è 127.0.0.1.

Soluzione:

  • Rimuovere il nodo del nome del server master dalla voce host locale presente nel file hosts.
  • Percorso del file host: /etc/hosts.

Cosa cambiare:

Apri il file /etc/hosts e vai a questa posizione.

127.0.0.1 fully.qualified.regionservernameregionservername localhost.localdomain localhost
: : 1              localhost3.localdomain3 localdomain3

Modifica la configurazione di cui sopra come segue (rimuovi il nome del server di regione come evidenziato sopra).

127.0.0.1    localhost.localdomainlocalhost
: : 1 localhost3.localdomain3 localdomain3

2) Descrizione del problema: Impossibile trovare il mio indirizzo: XYZ nell'elenco dei server di quorum di ZooKeeper

causa:

  • Il server ZooKeeper non è riuscito ad avviarsi e ha generato un errore del tipo .xyz nel nome del server.
  • HBase tenta di avviare un server ZooKeeper su una macchina, ma allo stesso tempo la macchina non riesce a trovarsi nella configurazione di quorum presente nel file hbase.zookeeper.quorum.

Soluzione:

  • Sostituire il nome host con il nome host presente nel messaggio di errore.
  • Se disponi di un server DNS, puoi impostare le seguenti configurazioni nel file hbase-site.xml: hbase.zookeeper.dns.interface e hbase.zookeeper.dns.nameserver.

3) Descrizione del problema: Creazione di una directory radice per HBase tramite Hadoop DFS

  • Il Master afferma che è necessario eseguire lo script di migrazione di HBase.
  • Eseguendo tale comando, lo script di migrazione di HBase risponde che non ci sono file nella directory principale.

causa:

  • È stata creata una nuova directory per HBase utilizzando il file system distribuito Hadoop.
  • In questo caso HBase prevede due possibilità:

1) La directory principale non esiste.

2) Prima era stata inizializzata un'istanza di HBase già in esecuzione.

Soluzione:

  • Verificare che la directory radice di HBase non esista attualmente o che sia stata inizializzata da una precedente esecuzione dell'istanza di HBase.
  • Come parte della soluzione, segui questi passaggi.

Passaggio 1) Utilizzare Hadoop dfs per eliminare la directory radice di HBase.

Passaggio 2) HBase crea e inizializza la directory autonomamente.

4) Descrizione del problema: Eventi di scadenza della sessione di ZooKeeper

causa:

  • I server HMaster o HRegion si arrestano generando delle eccezioni.
  • Esaminando i log, è possibile individuare le eccezioni effettivamente generate.

Di seguito viene mostrata l'eccezione generata a causa di un evento di scadenza di ZooKeeper. Gli eventi evidenziati sono alcune delle eccezioni che si sono verificate nel file di log.

Il codice dei file di log è visualizzato di seguito:

WARN org.apache.zookeeper.ClientCnxn: Exception
closing session 0x278bd16a96000f to sun.nio.ch.SelectionKeyImpl@355811ec

java.io.IOException: TIMED OUT	
at org.apache.zookeeper.ClientCnxn$SendThread.run(ClientCnxn.java:906)
WARN org.apache.hadoop.hbase.util.Sleeper: We slept 79410ms, ten times longer than scheduled: 5000
INFO org.apache.zookeeper.ClientCnxn: Attempting connection to server hostname/IP:PORT
INFO org.apache.zookeeper.ClientCnxn: Priming connection to java.nio.channels.SocketChannel[connected local=/IP:PORT remote=hostname/IP:PORT]
INFO org.apache.zookeeper.ClientCnxn: Server connection successful
WARN org.apache.zookeeper.ClientCnxn: Exception closing session 0x278bd16a96000d to sun.nio.ch.SelectionKeyImpl@3544d65e

java.io.IOException: Session Expired	 
at org.apache.zookeeper.ClientCnxn$SendThread.readConnectResult(ClientCnxn.java:589)
at org.apache.zookeeper.ClientCnxn$SendThread.doIO(ClientCnxn.java:709)
at org.apache.zookeeper.ClientCnxn$SendThread.run(ClientCnxn.java:945)
ERROR org.apache.hadoop.hbase.regionserver.HRegionServer: ZooKeeper session expired

Soluzione:

  • La dimensione predefinita della RAM è di 1 GB. Per importazioni di lunga durata, si consiglia di mantenere una capacità di RAM superiore a 1 GB.
  • Aumenta il timeout della sessione per ZooKeeper.
  • Per aumentare il timeout della sessione di ZooKeeper, modificare la seguente proprietà nel file hbase-site.xml, presente nella cartella hbase/conf.
  • Il timeout predefinito della sessione è di 60 secondi. È possibile modificarlo a 120 secondi come indicato di seguito.
<property>
    <name> zookeeper.session.timeout </name>
    <value>1200000</value>
</property>
<property>
    <name> hbase.zookeeper.property.tickTime </name>
    <value>6000</value>
</property>

DOMANDE FREQUENTI

HBase necessita di un supporto Java runtime con JAVA_HOME impostato. Anche le modalità pseudo-distribuita e completamente distribuita necessitano di un runtime in esecuzione Hadoop HDFS cluster. La modalità standalone richiede solo Java, perché utilizza il file system locale e include il proprio ZooKeeper.

Non per la modalità standalone, che viene eseguita sul file system locale in una singola JVM senza daemon Hadoop. Le modalità pseudo-distribuita e completamente distribuita richiedono Hadoop, perché memorizzano i dati in HDFS e dipendono dai suoi NameNode e DataNode.

Modifica conf/hbase-env.sh e aggiungi la riga export JAVA_HOME=/path/to/your/jdk, che punta alla directory radice del JDK. HBase legge questo valore all'avvio. Puoi anche esportare JAVA_HOME in ~/.bashrc in modo che la shell trovi Java globalmente.

Questa guida mostra HBase 1.1.2, ma le versioni stabili attuali sono nelle linee HBase 2.5.x e 2.6.x, con la 3.0 in beta. Le versioni più recenti richiedono Java 8 o 11. Le fasi di download, configurazione e avvio rimangono sostanzialmente le stesse.

Esegui il comando jps e cerca il processo HMaster, oltre a HRegionServer e HQuorumPeer in modalità distribuita. Puoi anche aprire l'interfaccia utente web di HBase Master o eseguire status all'interno di shell hbase per confermare che il cluster è attivo.

Per impostazione predefinita, l'HBase Master è in ascolto sulla porta 16000 con un'interfaccia utente web sulla porta 16010, mentre ogni Region Server utilizza la porta 16020 con un'interfaccia utente sulla porta 16030. ZooKeeper è in ascolto sulla porta client 2181, configurabile tramite il parametro hbase.zookeeper.property.clientPort.

Gli assistenti basati sull'intelligenza artificiale e gli strumenti di analisi dei log basati sull'apprendimento automatico scansionano i log di HBase e ZooKeeper, li raggruppano e individuano la causa principale di errori come la scadenza della sessione o i fallimenti del quorum. Suggeriscono correzioni di configurazione, sebbene un tecnico debba confermare ogni modifica prima di applicarla.

Sì. Le serrature scorrevoli portatili e i catenacci a superficie possono essere usati per mettere in sicurezza una porta a scomparsa dall'esterno. Alcuni kit con catena di sicurezza consentono anche il bloccaggio esterno con chiave o manopola girevole. Copilota GitHub bozze di frammenti di hbase-site.xml, voci di hbase-env.sh e script di avvio della shell a partire da un breve commento. RevPrima di eseguirli, esamina i suggerimenti relativi ai nomi delle proprietà, ai percorsi e alle porte corretti, poiché la configurazione generata potrebbe fare riferimento a valori predefiniti obsoleti.

Riassumi questo post con: