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 tutorialspoint@hadoop-master
$ ssh-copy-id -i ~/.ssh/id_rsa.pub hadoop_tp1@hadoop-slave-1
$ ssh-copy-id -i ~/.ssh/id_rsa.pub hadoop_tp2@hadoop-slave-2
$ 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 hadoop@slave3
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