Hadoop - Cluster multi-nœuds

Ce chapitre explique la configuration du cluster Hadoop Multi-Node dans un environnement distribué.

Comme l'ensemble du cluster ne peut pas être démontré, nous expliquons l'environnement de cluster Hadoop en utilisant trois systèmes (un maître et deux esclaves); ci-dessous sont leurs adresses IP.

  • Maître Hadoop: 192.168.1.15 (hadoop-maître)
  • Esclave Hadoop: 192.168.1.16 (hadoop-esclave-1)
  • Esclave Hadoop: 192.168.1.17 (hadoop-esclave-2)

Suivez les étapes ci-dessous pour configurer le cluster Hadoop Multi-Node.

Installer Java

Java est le prérequis principal pour Hadoop. Tout d'abord, vous devez vérifier l'existence de java dans votre système en utilisant «java -version». La syntaxe de la commande java version est donnée ci-dessous.

$ java -version

Si tout fonctionne bien, il vous donnera la sortie suivante.

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)

Si java n'est pas installé sur votre système, suivez les étapes indiquées pour installer java.

Étape 1

Téléchargez java (JDK <dernière version> - X64.tar.gz) en visitant le lien suivant www.oracle.com

ensuite jdk-7u71-linux-x64.tar.gz sera téléchargé dans votre système.

Étape 2

En général, vous trouverez le fichier java téléchargé dans le dossier Téléchargements. Vérifiez-le et extrayez lejdk-7u71-linux-x64.gz fichier à l'aide des commandes suivantes.

$ 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

Étape 3

Pour rendre java disponible à tous les utilisateurs, vous devez le déplacer vers l'emplacement «/ usr / local /». Ouvrez la racine et tapez les commandes suivantes.

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

Étape 4

Pour la mise en place PATH et JAVA_HOME variables, ajoutez les commandes suivantes à ~/.bashrc fichier.

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

Vérifiez maintenant le java -versioncommande depuis le terminal comme expliqué ci-dessus. Suivez le processus ci-dessus et installez java dans tous vos nœuds de cluster.

Créer un compte utilisateur

Créez un compte utilisateur système sur les systèmes maître et esclave pour utiliser l'installation Hadoop.

# useradd hadoop 
# passwd hadoop

Cartographie des nœuds

Vous devez modifier hosts déposer dans /etc/ dossier sur tous les nœuds, spécifiez l'adresse IP de chaque système suivie de leurs noms d'hôte.

# 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

Configuration de la connexion par clé

Configurez ssh dans chaque nœud afin qu'ils puissent communiquer entre eux sans aucune demande de mot de passe.

# 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

Installer Hadoop

Sur le serveur maître, téléchargez et installez Hadoop à l'aide des commandes suivantes.

# 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/

Configurer Hadoop

Vous devez configurer le serveur Hadoop en apportant les modifications suivantes comme indiqué ci-dessous.

core-site.xml

Ouvrez le core-site.xml fichier et modifiez-le comme indiqué ci-dessous.

<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

Ouvrez le hdfs-site.xml fichier et modifiez-le comme indiqué ci-dessous.

<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

Ouvrez le mapred-site.xml fichier et modifiez-le comme indiqué ci-dessous.

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

hadoop-env.sh

Ouvrez le hadoop-env.sh et modifiez JAVA_HOME, HADOOP_CONF_DIR et HADOOP_OPTS comme indiqué ci-dessous.

Note - Définissez JAVA_HOME selon la configuration de votre système.

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

Installation de Hadoop sur des serveurs esclaves

Installez Hadoop sur tous les serveurs esclaves en suivant les commandes données.

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

Configuration de Hadoop sur le serveur maître

Ouvrez le serveur maître et configurez-le en suivant les commandes données.

# su hadoop 
$ cd /opt/hadoop/hadoop

Configuration du nœud maître

$ vi etc/hadoop/masters

hadoop-master

Configuration du nœud esclave

$ vi etc/hadoop/slaves

hadoop-slave-1 
hadoop-slave-2

Nœud de nom de format sur 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
************************************************************/

Démarrage des services Hadoop

La commande suivante consiste à démarrer tous les services Hadoop sur Hadoop-Master.

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

Ajout d'un nouveau DataNode dans le cluster Hadoop

Vous trouverez ci-dessous les étapes à suivre pour ajouter de nouveaux nœuds à un cluster Hadoop.

La mise en réseau

Ajoutez de nouveaux nœuds à un cluster Hadoop existant avec une configuration réseau appropriée. Supposons la configuration réseau suivante.

Pour la configuration d'un nouveau nœud -

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

Ajouter un utilisateur et un accès SSH

Ajouter un utilisateur

Sur un nouveau nœud, ajoutez l'utilisateur "hadoop" et définissez le mot de passe de l'utilisateur Hadoop sur "hadoop123" ou tout ce que vous voulez en utilisant les commandes suivantes.

useradd hadoop
passwd hadoop

Mot de passe de configuration moins de connectivité du maître au nouvel esclave.

Exécutez les opérations suivantes sur le maître

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/

Exécutez les opérations suivantes sur les esclaves

Connectez-vous à hadoop. Sinon, connectez-vous à l'utilisateur hadoop.

su hadoop ssh -X [email protected]

Copiez le contenu de la clé publique dans un fichier "$HOME/.ssh/authorized_keys" puis modifiez l'autorisation pour le même en exécutant les commandes suivantes.

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

Vérifiez la connexion ssh à partir de la machine maître. Maintenant, vérifiez si vous pouvez ssh sur le nouveau nœud sans mot de passe du maître.

ssh [email protected] or [email protected]

Définir le nom d'hôte du nouveau nœud

Vous pouvez définir le nom d'hôte dans le fichier /etc/sysconfig/network

On new slave3 machine

NETWORKING = yes 
HOSTNAME = slave3.in

Pour rendre les modifications effectives, redémarrez la machine ou exécutez la commande hostname sur une nouvelle machine avec le nom d'hôte respectif (le redémarrage est une bonne option).

Sur la machine nœud slave3 -

nom d'hôte slave3.in

Mettre à jour /etc/hosts sur toutes les machines du cluster avec les lignes suivantes -

192.168.1.102 slave3.in slave3

Maintenant, essayez d'envoyer une requête ping à la machine avec les noms d'hôte pour vérifier si elle se résout en IP ou non.

Sur une nouvelle machine à nœuds -

ping master.in

Démarrez le DataNode sur un nouveau nœud

Démarrez manuellement le démon datanode en utilisant $HADOOP_HOME/bin/hadoop-daemon.sh script. Il contactera automatiquement le maître (NameNode) et rejoindra le cluster. Nous devrions également ajouter le nouveau nœud au fichier conf / slaves dans le serveur maître. Les commandes basées sur des scripts reconnaîtront le nouveau nœud.

Connectez-vous au nouveau nœud

su hadoop or ssh -X [email protected]

Démarrez HDFS sur un nœud esclave nouvellement ajouté à l'aide de la commande suivante

./bin/hadoop-daemon.sh start datanode

Vérifiez la sortie de la commande jps sur un nouveau nœud. Il ressemble à ceci.

$ jps
7141 DataNode
10312 Jps

Suppression d'un DataNode du cluster Hadoop

Nous pouvons supprimer un nœud d'un cluster à la volée, pendant son exécution, sans aucune perte de données. HDFS fournit une fonction de mise hors service, qui garantit que la suppression d'un nœud est effectuée en toute sécurité. Pour l'utiliser, suivez les étapes ci-dessous -

Étape 1 - Connectez-vous au master

Connectez-vous à l'utilisateur de la machine maître sur laquelle Hadoop est installé.

$ su hadoop

Étape 2 - Modifier la configuration du cluster

Un fichier d'exclusion doit être configuré avant de démarrer le cluster. Ajoutez une clé nommée dfs.hosts.exclude à notre$HADOOP_HOME/etc/hadoop/hdfs-site.xmlfichier. La valeur associée à cette clé fournit le chemin d'accès complet à un fichier sur le système de fichiers local du NameNode qui contient une liste de machines qui ne sont pas autorisées à se connecter à HDFS.

Par exemple, ajoutez ces lignes à etc/hadoop/hdfs-site.xml fichier.

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

Étape 3 - Déterminer les hôtes à mettre hors service

Chaque machine à mettre hors service doit être ajoutée au fichier identifié par hdfs_exclude.txt, un nom de domaine par ligne. Cela les empêchera de se connecter au NameNode. Contenu du"/home/hadoop/hadoop-1.2.1/hdfs_exclude.txt" est affiché ci-dessous, si vous souhaitez supprimer DataNode2.

slave2.in

Étape 4 - Forcer le rechargement de la configuration

Exécutez la commande "$HADOOP_HOME/bin/hadoop dfsadmin -refreshNodes" sans les guillemets.

$ $HADOOP_HOME/bin/hadoop dfsadmin -refreshNodes

Cela forcera le NameNode à relire sa configuration, y compris le fichier «exclut» récemment mis à jour. Il désaffectera les nœuds sur une période de temps, ce qui laissera le temps aux blocs de chaque nœud d'être répliqués sur des machines qui sont planifiées pour rester actives.

Sur slave2.in, vérifiez la sortie de la commande jps. Après un certain temps, vous verrez que le processus DataNode est automatiquement arrêté.

Étape 5 - Arrêter les nœuds

Une fois le processus de mise hors service terminé, le matériel mis hors service peut être arrêté en toute sécurité pour maintenance. Exécutez la commande report vers dfsadmin pour vérifier l'état de la mise hors service. La commande suivante décrit l'état du nœud de mise hors service et des nœuds connectés au cluster.

$ $HADOOP_HOME/bin/hadoop dfsadmin -report

Étape 6 - Modifier exclut à nouveau le fichier

Une fois les machines mises hors service, elles peuvent être supprimées du fichier «exclut». Fonctionnement"$HADOOP_HOME/bin/hadoop dfsadmin -refreshNodes"lira à nouveau le fichier d'exclusion dans le NameNode; permettre aux DataNodes de rejoindre le cluster une fois la maintenance terminée, ou une capacité supplémentaire est à nouveau nécessaire dans le cluster, etc.

Special Note- Si le processus ci-dessus est suivi et que le processus de suivi des tâches est toujours en cours d'exécution sur le nœud, il doit être arrêté. Une façon consiste à déconnecter la machine comme nous l'avons fait dans les étapes ci-dessus. Le maître reconnaîtra automatiquement le processus et le déclarera comme mort. Il n'est pas nécessaire de suivre le même processus pour supprimer le tasktracker car il n'est PAS très important par rapport au DataNode. DataNode contient les données que vous souhaitez supprimer en toute sécurité sans aucune perte de données.

Le suivi de tâches peut être exécuté / arrêté à la volée par la commande suivante à tout moment.

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