Hadoop - Cluster mit mehreren Knoten

In diesem Kapitel wird die Einrichtung des Hadoop Multi-Node-Clusters in einer verteilten Umgebung erläutert.

Da nicht der gesamte Cluster demonstriert werden kann, erklären wir die Hadoop-Clusterumgebung anhand von drei Systemen (einem Master und zwei Slaves). unten angegeben sind ihre IP-Adressen.

  • Hadoop-Meister: 192.168.1.15 (Hadoop-Meister)
  • Hadoop-Sklave: 192.168.1.16 (Hadoop-Sklave-1)
  • Hadoop-Sklave: 192.168.1.17 (Hadoop-Sklave-2)

Führen Sie die folgenden Schritte aus, um das Hadoop Multi-Node-Cluster-Setup durchzuführen.

Java installieren

Java ist die Hauptvoraussetzung für Hadoop. Zunächst sollten Sie die Existenz von Java in Ihrem System mithilfe von "Java-Version" überprüfen. Die Syntax des Java-Versionsbefehls ist unten angegeben.

$ java -version

Wenn alles gut funktioniert, erhalten Sie die folgende Ausgabe.

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)

Wenn Java nicht in Ihrem System installiert ist, befolgen Sie die angegebenen Schritte zur Installation von Java.

Schritt 1

Laden Sie Java (JDK <neueste Version> - X64.tar.gz) herunter, indem Sie den folgenden Link besuchen: www.oracle.com

Dann jdk-7u71-linux-x64.tar.gz wird in Ihr System heruntergeladen.

Schritt 2

Im Allgemeinen finden Sie die heruntergeladene Java-Datei im Ordner Downloads. Überprüfen Sie es und extrahieren Sie diejdk-7u71-linux-x64.gz Datei mit den folgenden Befehlen.

$ 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

Schritt 3

Um Java allen Benutzern zur Verfügung zu stellen, müssen Sie es an den Speicherort „/ usr / local /“ verschieben. Öffnen Sie das Stammverzeichnis und geben Sie die folgenden Befehle ein.

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

Schritt 4

Zum Einrichten PATH und JAVA_HOME Variablen, fügen Sie die folgenden Befehle hinzu ~/.bashrc Datei.

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

Überprüfen Sie nun die java -versionBefehl vom Terminal wie oben erläutert. Befolgen Sie den obigen Vorgang und installieren Sie Java auf allen Ihren Clusterknoten.

Benutzerkonto erstellen

Erstellen Sie ein Systembenutzerkonto auf Master- und Slave-Systemen, um die Hadoop-Installation zu verwenden.

# useradd hadoop 
# passwd hadoop

Zuordnen der Knoten

Sie müssen bearbeiten hosts Datei in /etc/ Geben Sie auf allen Knoten die IP-Adresse jedes Systems gefolgt von den Hostnamen an.

# 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

Schlüsselbasierte Anmeldung konfigurieren

Richten Sie ssh in jedem Knoten so ein, dass sie ohne Aufforderung zur Eingabe eines Kennworts miteinander kommunizieren können.

# 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

Hadoop installieren

Laden Sie Hadoop auf dem Master-Server mit den folgenden Befehlen herunter und installieren Sie es.

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

Hadoop konfigurieren

Sie müssen den Hadoop-Server konfigurieren, indem Sie die folgenden Änderungen wie unten angegeben vornehmen.

core-site.xml

Öffne das core-site.xml Datei und bearbeiten Sie es wie unten gezeigt.

<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

Öffne das hdfs-site.xml Datei und bearbeiten Sie es wie unten gezeigt.

<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

Öffne das mapred-site.xml Datei und bearbeiten Sie es wie unten gezeigt.

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

hadoop-env.sh

Öffne das hadoop-env.sh Datei und bearbeiten Sie JAVA_HOME, HADOOP_CONF_DIR und HADOOP_OPTS wie unten gezeigt.

Note - Stellen Sie JAVA_HOME gemäß Ihrer Systemkonfiguration ein.

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

Installieren von Hadoop auf Slave-Servern

Installieren Sie Hadoop auf allen Slave-Servern, indem Sie die angegebenen Befehle befolgen.

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

Konfigurieren von Hadoop auf dem Master Server

Öffnen Sie den Master-Server und konfigurieren Sie ihn mit den angegebenen Befehlen.

# su hadoop 
$ cd /opt/hadoop/hadoop

Hauptknoten konfigurieren

$ vi etc/hadoop/masters

hadoop-master

Slave-Knoten konfigurieren

$ vi etc/hadoop/slaves

hadoop-slave-1 
hadoop-slave-2

Format Name Node auf 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
************************************************************/

Starten von Hadoop Services

Der folgende Befehl dient zum Starten aller Hadoop-Dienste auf dem Hadoop-Master.

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

Hinzufügen eines neuen DataNode im Hadoop-Cluster

Im Folgenden sind die Schritte aufgeführt, die zum Hinzufügen neuer Knoten zu einem Hadoop-Cluster ausgeführt werden müssen.

Vernetzung

Fügen Sie einem vorhandenen Hadoop-Cluster neue Knoten mit einer geeigneten Netzwerkkonfiguration hinzu. Nehmen Sie die folgende Netzwerkkonfiguration an.

Für neue Knotenkonfiguration -

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

Hinzufügen von Benutzer- und SSH-Zugriff

Fügen Sie einen Benutzer hinzu

Fügen Sie auf einem neuen Knoten den Benutzer "hadoop" hinzu und setzen Sie das Kennwort des Hadoop-Benutzers mit den folgenden Befehlen auf "hadoop123" oder einem beliebigen gewünschten Wert.

useradd hadoop
passwd hadoop

Setup Passwortlose Konnektivität vom Master zum neuen Slave.

Führen Sie auf dem Master Folgendes aus

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/

Führen Sie auf den Slaves Folgendes aus

Melden Sie sich bei hadoop an. Wenn nicht, melden Sie sich beim Hadoop-Benutzer an.

su hadoop ssh -X [email protected]

Kopieren Sie den Inhalt des öffentlichen Schlüssels in eine Datei "$HOME/.ssh/authorized_keys" und ändern Sie dann die Berechtigung dafür, indem Sie die folgenden Befehle ausführen.

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

Überprüfen Sie die SSH-Anmeldung vom Master-Computer. Überprüfen Sie nun, ob Sie ohne ein Kennwort vom Master zum neuen Knoten ssh können.

ssh [email protected] or hadoop@slave3

Legen Sie den Hostnamen des neuen Knotens fest

Sie können den Hostnamen in der Datei festlegen /etc/sysconfig/network

On new slave3 machine

NETWORKING = yes 
HOSTNAME = slave3.in

Um die Änderungen wirksam zu machen, starten Sie entweder den Computer neu oder führen Sie den Befehl hostname auf einem neuen Computer mit dem entsprechenden Hostnamen aus (Neustart ist eine gute Option).

Auf Slave3-Knotenmaschine -

Hostname Slave3.in

Aktualisieren /etc/hosts auf allen Computern des Clusters mit den folgenden Zeilen -

192.168.1.102 slave3.in slave3

Versuchen Sie nun, den Computer mit Hostnamen zu pingen, um zu überprüfen, ob er in IP aufgelöst wird oder nicht.

Auf neuem Knotencomputer -

ping master.in

Starten Sie den DataNode auf dem neuen Knoten

Starten Sie den Datenknoten-Daemon manuell mit $HADOOP_HOME/bin/hadoop-daemon.sh script. Es wird automatisch den Master (NameNode) kontaktieren und dem Cluster beitreten. Wir sollten den neuen Knoten auch zur Datei conf / Slaves auf dem Master-Server hinzufügen. Die skriptbasierten Befehle erkennen den neuen Knoten.

Melden Sie sich bei einem neuen Knoten an

su hadoop or ssh -X [email protected]

Starten Sie HDFS auf einem neu hinzugefügten Slave-Knoten mit dem folgenden Befehl

./bin/hadoop-daemon.sh start datanode

Überprüfen Sie die Ausgabe des Befehls jps auf einem neuen Knoten. Es sieht wie folgt aus.

$ jps
7141 DataNode
10312 Jps

Entfernen eines DataNode aus dem Hadoop-Cluster

Wir können einen Knoten im laufenden Betrieb ohne Datenverlust aus einem Cluster entfernen. HDFS bietet eine Funktion zur Außerbetriebnahme, mit der sichergestellt wird, dass das Entfernen eines Knotens sicher durchgeführt wird. Befolgen Sie dazu die folgenden Schritte, um es zu verwenden -

Schritt 1 - Melden Sie sich beim Master an

Melden Sie sich beim Master-Computerbenutzer an, auf dem Hadoop installiert ist.

$ su hadoop

Schritt 2 - Ändern Sie die Cluster-Konfiguration

Vor dem Starten des Clusters muss eine Ausschlussdatei konfiguriert werden. Fügen Sie einen Schlüssel mit dem Namen dfs.hosts.exclude zu unserem hinzu$HADOOP_HOME/etc/hadoop/hdfs-site.xmlDatei. Der diesem Schlüssel zugeordnete Wert gibt den vollständigen Pfad zu einer Datei im lokalen Dateisystem des NameNode an, die eine Liste der Computer enthält, die keine Verbindung zu HDFS herstellen dürfen.

Fügen Sie diese Zeilen beispielsweise hinzu etc/hadoop/hdfs-site.xml Datei.

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

Schritt 3 - Bestimmen Sie die Hosts für die Außerbetriebnahme

Jeder Computer, der außer Betrieb genommen werden soll, sollte der Datei hdfs_exclude.txt hinzugefügt werden, ein Domänenname pro Zeile. Dadurch wird verhindert, dass sie eine Verbindung zum NameNode herstellen. Inhalt der"/home/hadoop/hadoop-1.2.1/hdfs_exclude.txt" Die Datei wird unten angezeigt, wenn Sie DataNode2 entfernen möchten.

slave2.in

Schritt 4 - Konfigurationsneu laden erzwingen

Führen Sie den Befehl aus "$HADOOP_HOME/bin/hadoop dfsadmin -refreshNodes" ohne die Anführungszeichen.

$ $HADOOP_HOME/bin/hadoop dfsadmin -refreshNodes

Dadurch wird der NameNode gezwungen, seine Konfiguration einschließlich der neu aktualisierten Ausschlussdatei erneut zu lesen. Die Knoten werden über einen bestimmten Zeitraum außer Betrieb genommen, sodass die Blöcke jedes Knotens auf Maschinen repliziert werden können, die aktiv bleiben sollen.

Auf slave2.inÜberprüfen Sie die Ausgabe des Befehls jps. Nach einiger Zeit wird der DataNode-Prozess automatisch heruntergefahren.

Schritt 5 - Knoten herunterfahren

Nach Abschluss des Stilllegungsprozesses kann die stillgelegte Hardware zur Wartung sicher heruntergefahren werden. Führen Sie den Befehl report an dfsadmin aus, um den Status der Außerbetriebnahme zu überprüfen. Der folgende Befehl beschreibt den Status des Außerbetriebnahmeknotens und der mit dem Cluster verbundenen Knoten.

$ $HADOOP_HOME/bin/hadoop dfsadmin -report

Schritt 6 - Bearbeiten schließt Datei erneut aus

Sobald die Maschinen außer Betrieb genommen wurden, können sie aus der Ausschlussdatei entfernt werden. Laufen"$HADOOP_HOME/bin/hadoop dfsadmin -refreshNodes"liest die Ausschlussdatei erneut in den NameNode zurück; Ermöglichen, dass die DataNodes nach Abschluss der Wartung wieder dem Cluster beitreten können oder erneut zusätzliche Kapazität im Cluster erforderlich ist usw.

Special Note- Wenn der obige Prozess befolgt wird und der Tasktracker-Prozess noch auf dem Knoten ausgeführt wird, muss er heruntergefahren werden. Eine Möglichkeit besteht darin, die Maschine wie in den obigen Schritten getrennt zu trennen. Der Master erkennt den Prozess automatisch und erklärt ihn für tot. Es ist nicht erforderlich, denselben Vorgang zum Entfernen des Tasktrackers auszuführen, da dieser im Vergleich zum DataNode NICHT sehr wichtig ist. DataNode enthält die Daten, die Sie ohne Datenverlust sicher entfernen möchten.

Der Tasktracker kann jederzeit mit dem folgenden Befehl im laufenden Betrieb ausgeführt / heruntergefahren werden.

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