Hadoop - Multi-Node Cluster

Questo capitolo spiega la configurazione del cluster Hadoop Multi-Node in un ambiente distribuito.

Poiché non è possibile dimostrare l'intero cluster, stiamo spiegando l'ambiente del cluster Hadoop utilizzando tre sistemi (un master e due slave); di seguito sono riportati i loro indirizzi IP.

  • Hadoop Master: 192.168.1.15 (hadoop-master)
  • Hadoop Slave: 192.168.1.16 (hadoop-slave-1)
  • Hadoop Slave: 192.168.1.17 (hadoop-slave-2)

Seguire i passaggi indicati di seguito per configurare il cluster Hadoop Multi-Node.

Installazione di Java

Java è il prerequisito principale per Hadoop. Prima di tutto, dovresti verificare l'esistenza di java nel tuo sistema usando "java -version". La sintassi del comando della versione Java è fornita di seguito.

$ java -version

Se tutto funziona correttamente, ti darà il seguente output.

java version "1.7.0_71" 
Java(TM) SE Runtime Environment (build 1.7.0_71-b13) 
Java HotSpot(TM) Client VM (build 25.0-b02, mixed mode)

Se java non è installato nel tuo sistema, segui i passaggi indicati per l'installazione di java.

Passo 1

Scarica java (JDK <ultima versione> - X64.tar.gz) visitando il seguente link www.oracle.com

Poi jdk-7u71-linux-x64.tar.gz verrà scaricato nel tuo sistema.

Passo 2

Generalmente troverai il file java scaricato nella cartella Download. Verificalo ed estrai il filejdk-7u71-linux-x64.gz file utilizzando i seguenti comandi.

$ cd Downloads/
$ ls
jdk-7u71-Linux-x64.gz

$ tar zxf jdk-7u71-Linux-x64.gz
$ ls
jdk1.7.0_71 jdk-7u71-Linux-x64.gz

Passaggio 3

Per rendere java disponibile a tutti gli utenti, è necessario spostarlo nella posizione "/ usr / local /". Apri la radice e digita i seguenti comandi.

$ su
password:
# mv jdk1.7.0_71 /usr/local/
# exit

Passaggio 4

Per l'allestimento PATH e JAVA_HOME variabili, aggiungi i seguenti comandi a ~/.bashrc file.

export JAVA_HOME=/usr/local/jdk1.7.0_71
export PATH=PATH:$JAVA_HOME/bin

Ora verifica il file java -versioncomando dal terminale come spiegato sopra. Segui il processo sopra e installa java in tutti i tuoi nodi del cluster.

Creazione dell'account utente

Crea un account utente di sistema su entrambi i sistemi master e slave per utilizzare l'installazione di Hadoop.

# useradd hadoop 
# passwd hadoop

Mappatura dei nodi

Devi modificare hosts file in formato /etc/ cartella su tutti i nodi, specificare l'indirizzo IP di ogni sistema seguito dai rispettivi nomi host.

# vi /etc/hosts
enter the following lines in the /etc/hosts file.

192.168.1.109 hadoop-master 
192.168.1.145 hadoop-slave-1 
192.168.56.1 hadoop-slave-2

Configurazione dell'accesso basato su chiave

Imposta ssh in ogni nodo in modo che possano comunicare tra loro senza alcuna richiesta di password.

# su hadoop 
$ ssh-keygen -t rsa 
$ ssh-copy-id -i ~/.ssh/id_rsa.pub [email protected] 
$ ssh-copy-id -i ~/.ssh/id_rsa.pub [email protected] 
$ ssh-copy-id -i ~/.ssh/id_rsa.pub [email protected] 
$ chmod 0600 ~/.ssh/authorized_keys 
$ exit

Installazione di Hadoop

Nel server principale, scarica e installa Hadoop utilizzando i seguenti comandi.

# mkdir /opt/hadoop 
# cd /opt/hadoop/ 
# wget http://apache.mesi.com.ar/hadoop/common/hadoop-1.2.1/hadoop-1.2.0.tar.gz 
# tar -xzf hadoop-1.2.0.tar.gz 
# mv hadoop-1.2.0 hadoop
# chown -R hadoop /opt/hadoop 
# cd /opt/hadoop/hadoop/

Configurazione di Hadoop

È necessario configurare il server Hadoop apportando le seguenti modifiche come indicato di seguito.

core-site.xml

Apri il core-site.xml file e modificarlo come mostrato di seguito.

<configuration>
   <property> 
      <name>fs.default.name</name> 
      <value>hdfs://hadoop-master:9000/</value> 
   </property> 
   <property> 
      <name>dfs.permissions</name> 
      <value>false</value> 
   </property> 
</configuration>

hdfs-site.xml

Apri il hdfs-site.xml file e modificarlo come mostrato di seguito.

<configuration>
   <property> 
      <name>dfs.data.dir</name> 
      <value>/opt/hadoop/hadoop/dfs/name/data</value> 
      <final>true</final> 
   </property> 

   <property> 
      <name>dfs.name.dir</name> 
      <value>/opt/hadoop/hadoop/dfs/name</value> 
      <final>true</final> 
   </property> 

   <property> 
      <name>dfs.replication</name> 
      <value>1</value> 
   </property> 
</configuration>

mapred-site.xml

Apri il mapred-site.xml file e modificarlo come mostrato di seguito.

<configuration>
   <property> 
      <name>mapred.job.tracker</name> 
      <value>hadoop-master:9001</value> 
   </property> 
</configuration>

hadoop-env.sh

Apri il hadoop-env.sh file e modificare JAVA_HOME, HADOOP_CONF_DIR e HADOOP_OPTS come mostrato di seguito.

Note - Imposta JAVA_HOME secondo la configurazione del tuo sistema.

export JAVA_HOME=/opt/jdk1.7.0_17
export HADOOP_OPTS=-Djava.net.preferIPv4Stack=true
export HADOOP_CONF_DIR=/opt/hadoop/hadoop/conf

Installazione di Hadoop su server slave

Installa Hadoop su tutti i server slave seguendo i comandi forniti.

# su hadoop 
$ cd /opt/hadoop 
$ scp -r hadoop hadoop-slave-1:/opt/hadoop 
$ scp -r hadoop hadoop-slave-2:/opt/hadoop

Configurazione di Hadoop sul server principale

Apri il server master e configuralo seguendo i comandi forniti.

# su hadoop 
$ cd /opt/hadoop/hadoop

Configurazione del nodo master

$ vi etc/hadoop/masters

hadoop-master

Configurazione del nodo slave

$ vi etc/hadoop/slaves

hadoop-slave-1 
hadoop-slave-2

Formato nome nodo su Hadoop Master

# su hadoop 
$ cd /opt/hadoop/hadoop 
$ bin/hadoop namenode –format
11/10/14 10:58:07 INFO namenode.NameNode: STARTUP_MSG:
/************************************************************ 
STARTUP_MSG: Starting NameNode 
STARTUP_MSG: host = hadoop-master/192.168.1.109 
STARTUP_MSG: args = [-format] 
STARTUP_MSG: version = 1.2.0 
STARTUP_MSG: build = https://svn.apache.org/repos/asf/hadoop/common/branches/branch-1.2 -r 1479473;
compiled by 'hortonfo' on Mon May 6 06:59:37 UTC 2013 
STARTUP_MSG: java = 1.7.0_71 

************************************************************/
11/10/14 10:58:08 INFO util.GSet: Computing capacity for map BlocksMap
editlog=/opt/hadoop/hadoop/dfs/name/current/edits
………………………………………………….
………………………………………………….
…………………………………………………. 
11/10/14 10:58:08 INFO common.Storage: Storage directory 
/opt/hadoop/hadoop/dfs/name has been successfully formatted.
11/10/14 10:58:08 INFO namenode.NameNode: 
SHUTDOWN_MSG:
/************************************************************
SHUTDOWN_MSG: Shutting down NameNode at hadoop-master/192.168.1.15
************************************************************/

Avvio dei servizi Hadoop

Il comando seguente serve per avviare tutti i servizi Hadoop su Hadoop-Master.

$ cd $HADOOP_HOME/sbin
$ start-all.sh

Aggiunta di un nuovo DataNode nel cluster Hadoop

Di seguito sono riportati i passaggi da seguire per aggiungere nuovi nodi a un cluster Hadoop.

Networking

Aggiungi nuovi nodi a un cluster Hadoop esistente con una configurazione di rete appropriata. Supponiamo la seguente configurazione di rete.

Per la configurazione del nuovo nodo -

IP address : 192.168.1.103 
netmask : 255.255.255.0
hostname : slave3.in

Aggiunta di accesso utente e SSH

Aggiungi un utente

Su un nuovo nodo, aggiungi l'utente "hadoop" e imposta la password dell'utente Hadoop su "hadoop123" o qualsiasi cosa tu voglia usando i seguenti comandi.

useradd hadoop
passwd hadoop

Setup Password meno connettività dal master al nuovo slave.

Eseguire quanto segue sul master

mkdir -p $HOME/.ssh 
chmod 700 $HOME/.ssh 
ssh-keygen -t rsa -P '' -f $HOME/.ssh/id_rsa 
cat $HOME/.ssh/id_rsa.pub >> $HOME/.ssh/authorized_keys 
chmod 644 $HOME/.ssh/authorized_keys
Copy the public key to new slave node in hadoop user $HOME directory
scp $HOME/.ssh/id_rsa.pub [email protected]:/home/hadoop/

Eseguire quanto segue sugli slave

Accedi a hadoop. In caso contrario, accedi a hadoop user.

su hadoop ssh -X [email protected]

Copia il contenuto della chiave pubblica nel file "$HOME/.ssh/authorized_keys" e quindi modificare l'autorizzazione per lo stesso eseguendo i seguenti comandi.

cd $HOME
mkdir -p $HOME/.ssh 
chmod 700 $HOME/.ssh
cat id_rsa.pub >>$HOME/.ssh/authorized_keys 
chmod 644 $HOME/.ssh/authorized_keys

Controllare l'accesso ssh dalla macchina master. Ora controlla se puoi eseguire ssh sul nuovo nodo senza una password dal master.

ssh [email protected] or [email protected]

Imposta il nome host del nuovo nodo

Puoi impostare il nome host nel file /etc/sysconfig/network

On new slave3 machine

NETWORKING = yes 
HOSTNAME = slave3.in

Per rendere effettive le modifiche, riavviare la macchina o eseguire il comando hostname su una nuova macchina con il rispettivo hostname (il riavvio è una buona opzione).

Sulla macchina del nodo slave3 -

hostname slave3.in

Aggiornare /etc/hosts su tutte le macchine del cluster con le seguenti righe -

192.168.1.102 slave3.in slave3

Ora prova a eseguire il ping della macchina con i nomi host per verificare se si sta risolvendo su IP o meno.

Sulla nuova macchina del nodo -

ping master.in

Avvia il DataNode su New Node

Avviare manualmente il demone datanode utilizzando $HADOOP_HOME/bin/hadoop-daemon.sh script. Contatterà automaticamente il master (NameNode) e si unirà al cluster. Dovremmo anche aggiungere il nuovo nodo al file conf / slaves nel server master. I comandi basati su script riconosceranno il nuovo nodo.

Accedi al nuovo nodo

su hadoop or ssh -X [email protected]

Avvia HDFS su un nodo slave appena aggiunto utilizzando il comando seguente

./bin/hadoop-daemon.sh start datanode

Controlla l'output del comando jps su un nuovo nodo. Sembra come segue.

$ jps
7141 DataNode
10312 Jps

Rimozione di un DataNode dal cluster Hadoop

Possiamo rimuovere un nodo da un cluster al volo, mentre è in esecuzione, senza alcuna perdita di dati. HDFS fornisce una funzionalità di disattivazione, che garantisce che la rimozione di un nodo venga eseguita in modo sicuro. Per usarlo, segui i passaggi indicati di seguito:

Passaggio 1: accedi a master

Accedi all'utente della macchina principale su cui è installato Hadoop.

$ su hadoop

Passaggio 2: modificare la configurazione del cluster

È necessario configurare un file di esclusione prima di avviare il cluster. Aggiungi una chiave denominata dfs.hosts.exclude al nostro file$HADOOP_HOME/etc/hadoop/hdfs-site.xmlfile. Il valore associato a questa chiave fornisce il percorso completo di un file nel file system locale di NameNode che contiene un elenco di macchine a cui non è consentito connettersi a HDFS.

Ad esempio, aggiungi queste righe a etc/hadoop/hdfs-site.xml file.

<property> 
   <name>dfs.hosts.exclude</name> 
   <value>/home/hadoop/hadoop-1.2.1/hdfs_exclude.txt</value> 
   <description>DFS exclude</description> 
</property>

Passaggio 3: determinare gli host da rimuovere

Ogni macchina da disattivare deve essere aggiunta al file identificato da hdfs_exclude.txt, un nome di dominio per riga. Ciò impedirà loro di connettersi a NameNode. Contenuto di"/home/hadoop/hadoop-1.2.1/hdfs_exclude.txt" file è mostrato di seguito, se si desidera rimuovere DataNode2.

slave2.in

Passaggio 4: forzare il caricamento della configurazione

Esegui il comando "$HADOOP_HOME/bin/hadoop dfsadmin -refreshNodes" senza virgolette.

$ $HADOOP_HOME/bin/hadoop dfsadmin -refreshNodes

Ciò costringerà il NameNode a rileggere la sua configurazione, incluso il file "esclude" appena aggiornato. Disattiverà i nodi per un periodo di tempo, consentendo il tempo di replicare i blocchi di ciascun nodo sulle macchine che sono programmate per rimanere attive.

Sopra slave2.in, controlla l'output del comando jps. Dopo un po 'di tempo, vedrai che il processo DataNode si arresta automaticamente.

Passaggio 5: arresto dei nodi

Dopo che il processo di disattivazione è stato completato, l'hardware disattivato può essere spento in sicurezza per la manutenzione. Eseguire il comando report su dfsadmin per verificare lo stato di disattivazione. Il comando seguente descriverà lo stato del nodo di disattivazione e dei nodi connessi al cluster.

$ $HADOOP_HOME/bin/hadoop dfsadmin -report

Passaggio 6: la modifica esclude nuovamente il file

Una volta che le macchine sono state disattivate, possono essere rimosse dal file "esclude". In esecuzione"$HADOOP_HOME/bin/hadoop dfsadmin -refreshNodes"di nuovo leggerà il file delle eccezioni nel NameNode; consentendo ai DataNode di ricongiungersi al cluster dopo che la manutenzione è stata completata, o è necessaria di nuovo capacità aggiuntiva nel cluster, ecc.

Special Note- Se viene seguito il processo di cui sopra e il processo di tasktracker è ancora in esecuzione sul nodo, è necessario spegnerlo. Un modo è disconnettere la macchina come abbiamo fatto nei passaggi precedenti. Il Master riconoscerà automaticamente il processo e si dichiarerà morto. Non è necessario seguire la stessa procedura per rimuovere il tasktracker perché NON è molto cruciale rispetto al DataNode. DataNode contiene i dati che si desidera rimuovere in modo sicuro senza alcuna perdita di dati.

Il tasktracker può essere eseguito / spento al volo tramite il seguente comando in qualsiasi momento.

$ $HADOOP_HOME/bin/hadoop-daemon.sh stop tasktracker
$HADOOP_HOME/bin/hadoop-daemon.sh start tasktracker