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.
folgen die Schritte gegebenen unten zu haben Hadoop multi- node Cluster Setup.
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.
Herunterladen Java (JDK
Dann jdk-7u71-linux-x64.tar.gz wird sein herunterladen in Ihre System.
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
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
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 Sie eine Systembenutzerkonto auf beiden Master- und Slave-Systeme, zu verwendet die Hadoop-Installation.
# useradd hadoop # passwd hadoop
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
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 howcodex@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
In der Master-Server, herunterladen und installieren Hadoop mit den folgenden Befehlen.
# 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/
Sie haben zu konfiguriert Hadoop-Server, indem machen Sie die folgenden Änderungen,als nachstehend gegeben.
Ö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>
Ö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>
Ö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>
Ö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 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
Öffnen Sie den Meister-Server und konfigurieren Sie es, indem folgende gegebenen Befehle.
# su hadoop $ cd /opt/hadoop/hadoop
$ vi etc/hadoop/masters hadoop-master
$ vi etc/hadoop/slaves hadoop-slave-1 hadoop-slave-2
# 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 ************************************************************/
Der folgende Befehl ist zu starten alle Hadoop Dienste auf die Hadoop-Meister.
$ cd $HADOOP_HOME/sbin $ start-all.sh
Da unten sind die Schritte zu folgen für das Hinzufügen neuer Knoten zu einem Hadoop-Cluster.
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
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.
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 hadoop@192.168.1.103:/home/hadoop/
Einloggen, zu Hadoop. Wenn nicht, Einloggen zu Hadoop Benutzer.
su hadoop ssh -X hadoop@192.168.1.103
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 hadoop@192.168.1.103 or hadoop@slave3
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 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.
su hadoop or ssh -X hadoop@192.168.1.103
./bin/hadoop-daemon.sh start datanode
$ jps 7141 DataNode 10312 Jps
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:
Login zu Master-Maschine Benutzer, wo Hadoop installiert ist.
$ su hadoop
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>
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
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.
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
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