Hadoop - Multi Node Cluster
Diesem Kapitel werden die einrichten der Hadoop multi-node Cluster auf einer verteilten Umgebung.
Wie der gesamte Cluster nicht nachgewiesen werden kann, werden wir erklären, die Hadoop-Cluster-Umgebung mit Hilfe von drei Systemen (ein Master und zwei Slaves); gegeben unten sind ihre IP-Adressen.
- 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)
folgen die Schritte gegebenen unten zu haben Hadoop multi- node Cluster Setup.
Installieren von Java
Java ist die Haupt- Voraussetzung für Hadoop. Zunächst einmal sollten Sie die Existenz von Java in Ihrem System verwendung "java -version" verifizieren. Die Syntax der Java-Version Befehl ist unten angegeben.
$ java -version
Wenn alles werke Geldbuße es wird Ihnen 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 ist nicht in Ihrem System installiert ist, befolgen Sie die angegebenen Schritte für die Installation Java.
Schritt 1
Herunterladen Java (JDK
Dann jdk-7u71-linux-x64.tar.gz wird sein herunterladen in Ihre System.
Schritt 2
In der Regel werden Sie die heruntergeladene Java-Datei im Download-Ordner zu finden. Verifizieren Sie es und extrahieren Sie die jdk-7u71-linux-x64.gz Datei verwendung 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
Zu machen Java verfügbar für alle Benutzer verfügbar , müssen Sie sie auf den Standort "/ usr / local /" zu bewegen. Öffnen Sie die Wurzel und die folgenden Befehle ein.
$ su password: # mv jdk1.7.0_71 /usr/local/ # exit
Schritt 4
Für Einstellung herauf PATH und JAVA_HOME Variablen, fügen Sie die folgenden Befehle ein, um ~/.bashrc Datei.
export JAVA_HOME=/usr/local/jdk1.7.0_71 export PATH=PATH:$JAVA_HOME/bin
Nun verifizieren Sie die java -version Befehl vom Terminal wie oben erklärt. Folgen Sie den obigen prozess, und installieren Sie Java in allen Ihre Cluster-Knoten.
Erstellen von Benutzerkonten
Erstellen Sie eine Systembenutzerkonto auf beiden Master- und Slave-Systeme, zu verwendet die Hadoop-Installation.
# useradd hadoop # passwd hadoop
Mapping die Knoten
Sie müssen zu bearbeiten hosts Datei in /etc/Ordnern auf allen Knoten,Gibt die IP-Adresse eines jeden Systems,gefolgt von ihren Hostnamen.
# 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
Konfigurieren Key Based Anmelden
Einrichten ssh in jeder Knoten, so dass sie miteinander ohne jeder Eingabeaufforderung für das Kennwort 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
Installieren von Hadoop
In der Master-Server, herunterladen und installieren Hadoop mit den folgenden Befehlen.
# mkdir /opt/hadoop # cd /opt/hadoop/ # wget https://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/
Konfigurieren Hadoop
Sie haben zu konfiguriert Hadoop-Server, indem machen Sie die folgenden Änderungen,als nachstehend gegeben.
core-site.xml
Öffnen Sie die core-site.xml Datei und bearbeiten Sie sie 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
Öffnen Sie die hdfs-site.xml Datei und bearbeiten Sie sie 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
Öffnen Sie die mapred-site.xml Datei und bearbeiten Sie sie wie unten gezeigt.
<configuration> <property> <name>mapred.job.tracker</name> <value>hadoop-master:9001</value> </property> </configuration>
hadoop-env.sh
Öffnen Sie die hadoop-env.sh Datei und bearbeiten JAVA_HOME, HADOOP_CONF_DIR und HADOOP_OPTS wie unten gezeigt.
Hinweis:Legen Sie die JAVA_HOME als pro Ihre Systemkonfiguration.
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 Hadoop auf alle Slave-Server,indem folgende gegebenen Befehle.
# su hadoop $ cd /opt/hadoop $ scp -r hadoop hadoop-slave-1:/opt/hadoop $ scp -r hadoop hadoop-slave-2:/opt/hadoop
Konfigurieren Hadoop auf Meister-Server
Öffnen Sie den Meister-Server und konfigurieren Sie es, indem folgende gegebenen Befehle.
# su hadoop $ cd /opt/hadoop/hadoop
Konfigurieren Meister Knoten
$ vi etc/hadoop/masters hadoop-master
Konfigurieren Slave Knoten
$ vi etc/hadoop/slaves hadoop-slave-1 hadoop-slave-2
Formatname Knoten auf Hadoop Meister
# 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 ************************************************************/
Beginnend Hadoop Dienstleistungen
Der folgende Befehl ist zu starten alle Hadoop Dienste auf die Hadoop-Meister.
$ cd $HADOOP_HOME/sbin $ start-all.sh
Hinzufügen eines neuen DataNode im Hadoop Cluster
Da unten sind die Schritte zu folgen für das Hinzufügen neuer Knoten zu einem Hadoop-Cluster.
Netzwerk
Fügen Sie neue Knoten zu einem vorhandenen Hadoop Cluster mit einem geeigneten Netzwerkkonfiguration. annehmen Sie die folgenden Netzwerkkonfiguration.
Für Neue Knoten-Konfiguration:
IP address : 192.168.1.103 netmask : 255.255.255.0 hostname : slave3.in
Hinzufügen von Benutzer und SSH-Zugriff
hinzufügen Benutzer
Auf einem neuen Knoten, fügen Sie "Hadoop" Benutzer und legen Sie das Kennwort auf Hadoop Benutzers zu "hadoop123" oder was Sie wollen, indem Sie die folgenden Befehle ein.
useradd hadoop passwd hadoop
einrichten Kennwort weniger Konnektivität vom Master an den neuen Slave.
ausführen Sie die folgenden auf dem 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/
ausführen Sie die folgenden auf dem Master
Einloggen, zu Hadoop. Wenn nicht, Einloggen zu Hadoop Benutzer.
su hadoop ssh -X [email protected]
Kopieren Sie den Inhalt der öffentlichen Schlüssel in die Datei "$HOME/.ssh/authorized_keys" und dann ändern Sie die Berechtigung für das gleiche durch ausführen die folgenden Befehle.
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 SSH-Login aus dem MasterMaschine. Überprüfen Sie nun, ob Sie kann ssh auf den neuen Knoten ohne Passwort aus dem Master.
ssh [email protected] or hadoop@slave3
Satz Hostname des neuen Knotens
Sie können den Hostnamen in der Datei festgelegt/etc/sysconfig/network
On new slave3 machine NETWORKING=yes HOSTNAME=slave3.in
Zu machen die Änderungen wirksam werden, entweder den Maschine neustart oder ausführen den Hostnamen Befehl um eine neue Maschine mit dem jeweilige Hostnamen (Neustart ist eine gute Option).
Auf Slave3 Knoten Maschine:
hostname slave3.in
Aktualisierung /etc/hosts auf allen Rechnern von die Clusters mit den folgenden Zeilen:
192.168.1.102 slave3.in slave3
Nun versuchen, die Maschine mit Hostnamen anpingen um zu überprüfen ob es sich um lösen zu IP oder nicht.
Am neuer Knoten Maschine:
ping master.in
Starten Sie die DataNode auf neu Node
Starten Sie die DataNode Daemon manuell mit $HADOOP_HOME/bin/hadoop-daemon.sh script. Es wird automatisch an den Master (NameNode) und kommen Sie mit den Cluster. Wir sollten auch den neuen Knoten in die Datei conf / Slaves im Master-Server hinzuzufügen. Die skriptbasierte Befehle werden den neuen Knoten zu erkennen.
einloggen zu neuen Knoten
su hadoop or ssh -X [email protected]
Start HDFS auf einem neu hinzugefügte Slave-Knoten, indem Sie den 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 vom Hadoop Cluster
Wir können einen Knoten aus einem Cluster im laufenden Betrieb zu entfernen, während er ausgeführt wird, ohne jeder Datenverlust. HDFS bietet eine Außerbetriebnahme Funktion, die dafür sorgt, dass das Entfernen eines Knotens wird sicher durchgeführt. Um es zu nutzen, folgen die Schritte wie unten angegeben:
Schritt 1: einloggen zu meistern
Login zu Master-Maschine Benutzer, wo Hadoop installiert ist.
$ su hadoop
Schritt 2: Ändern der Clusterkonfiguration
Ein Ausschlussdatei muss vor dem Start des Cluster konfiguriert werden. Fügen Sie einen Schlüssel mit dem Namen dfs.hosts.exclude zu unseren $HADOOP_HOME/etc/hadoop/hdfs-site.xml Datei. Die Wert mit diesem Schlüssel zugeordneten stellt den vollständigen Pfad zu einer Datei auf dem Namenode ist lokalen Datei system welche eine Liste von Maschinen, die nicht berechtigt sind, Verbindung auf HDFS enthält.
Fügen Sie beispielsweise die folgenden Zeilen zuetc/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 Hosts zu Außerbetriebnahme
Jede Maschine Außerbetriebnahme werden sollten, um die Datei identifiziert von der hdfs_exclude.txt, einen Domain-Namen pro Zeile hinzugefügt werden. Dies wird ihnen eine Verbindung zum NameNode verhindern. Inhalt des "/ home / Hadoop / Hadoop-1.2.1 / hdfs_exclude.txt" Datei ist unten dargestellt, wenn Sie DataNode2 entfernen wollen.
slave2.in
Schritt 4: Force Konfiguration neuladen
Führen Sie den Befehl "$HADOOP_HOME/bin/hadoop dfsadmin -refreshNodes" ohne Anführungszeichen.
$ $HADOOP_HOME/bin/hadoop dfsadmin -refreshNodes
Dies wird die NameNode zwingen, wieder lesen die Konfiguration, einschließlich der neu aktualisierte Datei 'schließt. Es werden die Knoten über einen Zeitraum außer Betrieb, so dass genügend Zeit für die Blöcke jedes Knotens, um auf Maschinen, die geplant sind, aktiv zu bleiben, repliziert werden.
Ein slave2.in , überprüfen Sie die jps Befehlsausgabe. Nach einiger Zeit werden Sie sehen, die DataNode Prozess ist automatisch ausgeschaltet.
Schritt 5: schließen Knoten
Nach der Stilllegung abgeschlossen ist, die außer Betrieb genommen Hardware sicher zur Wartung heruntergefahren werden. Führen Sie den Befehl Bericht dfsadmin um den Status der Stilllegung zu überprüfen. Mit dem folgenden Befehl wird der Status der Stilllegung Knoten und die angeschlossenen Knoten zum Cluster zu beschreiben.
$ $HADOOP_HOME/bin/hadoop dfsadmin -report
Schritt 6: Bearbeiten schließt Datei erneut
einmal die Maschinen sind Außerbetriebnahme, können sie von der "ausschließt" Datei entfernt werden. Laufen "$ HADOOP_HOME / bin / Hadoop dfsadmin -refreshNodes" wieder wird gelesen das ausschließt Datei zurück in die NameNode; erlaubt so dass die Datanodes dem Cluster sich wieder anschließen, nachdem die Wartung abgeschlossen ist, oder zusätzliche Kapazitäten im Cluster wieder benötigt, etc.
Wichtiger Hinweis: Wenn das obige Verfahren gefolgt und die Tasktracker Prozess wird noch auf dem Knoten ausgeführt, muss sie abgeschaltet werden. Eine Möglichkeit ist die Maschine abgeschaltet werden, wie wir in den obigen Schritten taten. Der Meister wird der Prozess automatisch erkennen und wird für tot erklären. Es besteht keine Notwendigkeit, die gleichen Verfahren zur Entfernung des Tasktracker da es nicht viel entscheidender, verglichen mit dem DataNode folgen. DataNode enthält die Daten, die Sie sicher und ohne Datenverlust entfernt werden soll.
Die Tasktracker kann sein Lauf oder Abschaltung im laufenden Betrieb durch den folgenden Befehl an jedem Punkt der Zeit ausgeführt werden.
$ $HADOOP_HOME/bin/hadoop-daemon.sh stop tasktracker $HADOOP_HOME/bin/hadoop-daemon.sh start tasktracker