Installieren Sie Hadoop Multinode Cluster mit CDH4 in RHEL/CentOS 6.5
Hadoop ist ein von Apache entwickeltes Open-Source-Programmierframework zur Verarbeitung großer Datenmengen. Es verwendet HDFS (Hadoop Distributed File System), um die Daten über alle Datenknoten im Cluster verteilt zu speichern, und ein Mapreduce-Modell zur Verarbeitung der Daten.
Namenode (NN) ist ein Master-Daemon, der HDFS und Jobtracker (JT) steuert ) ist der Master-Daemon für die Mapreduce-Engine.
Anforderungen
In diesem Tutorial verwende ich zwei CentOS 6.3-VMs „master“ und „node“, nämlich. (Master und Knoten sind meine Hostnamen). Die „Master“-IP ist 172.21.17.175 und die Knoten-IP ist „172.21.17.188“. Die folgenden Anweisungen funktionieren auch auf RHEL/CentOS 6.x-Versionen.
Auf Meister
[root@master ~]# hostname
master
[root@master ~]# ifconfig|grep 'inet addr'|head -1
inet addr:172.21.17.175 Bcast:172.21.19.255 Mask:255.255.252.0
Auf Knoten
[root@node ~]# hostname
node
[root@node ~]# ifconfig|grep 'inet addr'|head -1
inet addr:172.21.17.188 Bcast:172.21.19.255 Mask:255.255.252.0
Stellen Sie zunächst sicher, dass alle Cluster-Hosts in der Datei „/etc/hosts“ (auf jedem Knoten) vorhanden sind, wenn Sie kein DNS eingerichtet haben.
Auf Meister
[root@master ~]# cat /etc/hosts
172.21.17.175 master
172.21.17.188 node
Auf Knoten
[root@node ~]# cat /etc/hosts
172.21.17.197 qabox
172.21.17.176 ansible-ground
Installieren des Hadoop-Multinode-Clusters in CentOS
Wir verwenden das offizielle CDH-Repository, um CDH4 auf allen Hosts (Master und Knoten) in einem Cluster zu installieren.
Schritt 1: Laden Sie das CDH-Repository herunter und installieren Sie es
Gehen Sie zur offiziellen CDH-Downloadseite und holen Sie sich die CDH4-Version (d. h. 4.6) oder verwenden Sie den folgenden wget-Befehl, um das Repository herunterzuladen und zu installieren.
Auf RHEL/CentOS 32-Bit
wget http://archive.cloudera.com/cdh4/one-click-install/redhat/6/i386/cloudera-cdh-4-0.i386.rpm
yum --nogpgcheck localinstall cloudera-cdh-4-0.i386.rpm
Auf RHEL/CentOS 64-Bit
wget http://archive.cloudera.com/cdh4/one-click-install/redhat/6/x86_64/cloudera-cdh-4-0.x86_64.rpm
yum --nogpgcheck localinstall cloudera-cdh-4-0.x86_64.rpm
Fügen Sie vor der Installation des Hadoop Multinode Clusters den Cloudera Public GPG Key zu Ihrem Repository hinzu, indem Sie einen der folgenden Befehle entsprechend Ihrer Systemarchitektur ausführen.
## on 32-bit System ##
rpm --import http://archive.cloudera.com/cdh4/redhat/6/i386/cdh/RPM-GPG-KEY-cloudera
## on 64-bit System ##
rpm --import http://archive.cloudera.com/cdh4/redhat/6/x86_64/cdh/RPM-GPG-KEY-cloudera
Schritt 2: JobTracker und NameNode einrichten
Führen Sie als Nächstes den folgenden Befehl aus, um JobTracker und NameNode auf dem Master-Server zu installieren und einzurichten.
[root@master ~]# yum clean all
[root@master ~]# yum install hadoop-0.20-mapreduce-jobtracker
[root@master ~]# yum clean all
[root@master ~]# yum install hadoop-hdfs-namenode
Schritt 3: Sekundären Namensknoten einrichten
Führen Sie erneut die folgenden Befehle auf dem Master-Server aus, um den sekundären Namensknoten einzurichten.
[root@master ~]# yum clean all
[root@master ~]# yum install hadoop-hdfs-secondarynam
Schritt 4: Tasktracker und Datanode einrichten
Als nächstes richten Sie Tasktracker und Datanode auf allen Cluster-Hosts (Node) ein, mit Ausnahme der JobTracker-, NameNode- und sekundären (oder Standby-) NameNode-Hosts (in diesem Fall auf dem Node).
[root@node ~]# yum clean all
[root@node ~]# yum install hadoop-0.20-mapreduce-tasktracker hadoop-hdfs-datanode
Schritt 5: Hadoop-Client einrichten
Sie können den Hadoop-Client auf einem separaten Computer installieren (in diesem Fall habe ich ihn auf Datanode installiert, Sie können ihn auf jedem Computer installieren).
[root@node ~]# yum install hadoop-client
Schritt 6: HDFS auf Knoten bereitstellen
Wenn wir nun mit den oben genannten Schritten fertig sind, können wir mit der Bereitstellung von HDFS fortfahren (dies muss auf allen Knoten erfolgen).
Kopieren Sie die Standardkonfiguration in das Verzeichnis /etc/hadoop (auf jedem Knoten im Cluster).
[root@master ~]# cp -r /etc/hadoop/conf.dist /etc/hadoop/conf.my_cluster
[root@node ~]# cp -r /etc/hadoop/conf.dist /etc/hadoop/conf.my_cluster
Verwenden Sie den Befehl alternatives, um Ihr benutzerdefiniertes Verzeichnis wie folgt festzulegen (auf jedem Knoten im Cluster).
[root@master ~]# alternatives --verbose --install /etc/hadoop/conf hadoop-conf /etc/hadoop/conf.my_cluster 50
reading /var/lib/alternatives/hadoop-conf
[root@master ~]# alternatives --set hadoop-conf /etc/hadoop/conf.my_cluster
[root@node ~]# alternatives --verbose --install /etc/hadoop/conf hadoop-conf /etc/hadoop/conf.my_cluster 50
reading /var/lib/alternatives/hadoop-conf
[root@node ~]# alternatives --set hadoop-conf /etc/hadoop/conf.my_cluster
Schritt 7: Anpassen der Konfigurationsdateien
Öffnen Sie nun die Datei „core-site.xml“ und aktualisieren Sie „fs.defaultFS“ auf jedem Knoten im Cluster.
[root@master conf]# cat /etc/hadoop/conf/core-site.xml
<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://master/</value>
</property>
</configuration>
[root@node conf]# cat /etc/hadoop/conf/core-site.xml
<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://master/</value>
</property>
</configuration>
Als nächstes aktualisieren Sie „dfs.permissions.superusergroup“ in hdfs-site.xml auf jedem Knoten im Cluster.
[root@master conf]# cat /etc/hadoop/conf/hdfs-site.xml
<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
<property>
<name>dfs.name.dir</name>
<value>/var/lib/hadoop-hdfs/cache/hdfs/dfs/name</value>
</property>
<property>
<name>dfs.permissions.superusergroup</name>
<value>hadoop</value>
</property>
</configuration>
[root@node conf]# cat /etc/hadoop/conf/hdfs-site.xml
<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
<property>
<name>dfs.name.dir</name>
<value>/var/lib/hadoop-hdfs/cache/hdfs/dfs/name</value>
</property>
<property>
<name>dfs.permissions.superusergroup</name>
<value>hadoop</value>
</property>
</configuration>
Hinweis: Bitte stellen Sie sicher, dass die obige Konfiguration auf allen Knoten vorhanden ist (tun Sie dies auf einem Knoten und führen Sie scp aus, um den Rest zu kopieren). der Knoten ).
Schritt 8: Lokale Speicherverzeichnisse konfigurieren
Aktualisieren Sie „dfs.name.dir oder dfs.namenode.name.dir“ in „hdfs-site.xml“ auf dem NameNode (auf Master und Node). Bitte ändern Sie den Wert wie hervorgehoben.
[root@master conf]# cat /etc/hadoop/conf/hdfs-site.xml
<property>
<name>dfs.namenode.name.dir</name>
<value>file:///data/1/dfs/nn,/nfsmount/dfs/nn</value>
</property>
[root@node conf]# cat /etc/hadoop/conf/hdfs-site.xml
<property>
<name>dfs.datanode.data.dir</name>
<value>file:///data/1/dfs/dn,/data/2/dfs/dn,/data/3/dfs/dn</value>
</property>
Schritt 9: Verzeichnisse erstellen und Berechtigungen verwalten
Führen Sie die folgenden Befehle aus, um eine Verzeichnisstruktur zu erstellen und Benutzerberechtigungen auf den Computern Namenode (Master) und Datanode (Knoten) zu verwalten.
[root@master]# mkdir -p /data/1/dfs/nn /nfsmount/dfs/nn
[root@master]# chmod 700 /data/1/dfs/nn /nfsmount/dfs/nn
[root@node]# mkdir -p /data/1/dfs/dn /data/2/dfs/dn /data/3/dfs/dn /data/4/dfs/dn
[root@node]# chown -R hdfs:hdfs /data/1/dfs/nn /nfsmount/dfs/nn /data/1/dfs/dn /data/2/dfs/dn /data/3/dfs/dn /data/4/dfs/dn
Formatieren Sie den Namenode (auf dem Master), indem Sie den folgenden Befehl ausgeben.
[root@master conf]# sudo -u hdfs hdfs namenode -format
Schritt 10: Konfigurieren des sekundären NameNode
Fügen Sie die folgende Eigenschaft zur Datei hdfs-site.xml hinzu und ersetzen Sie den Wert wie im Master angezeigt.
<property>
<name>dfs.namenode.http-address</name>
<value>172.21.17.175:50070</value>
<description>
The address and port on which the NameNode UI will listen.
</description>
</property>
Hinweis: In unserem Fall sollte der Wert die IP-Adresse der Master-VM sein.
Lassen Sie uns nun MRv1 (Map-Reduce-Version 1) bereitstellen. Öffnen Sie die Datei „mapred-site.xml“ und folgen Sie den angezeigten Werten.
[root@master conf]# cp hdfs-site.xml mapred-site.xml
[root@master conf]# vi mapred-site.xml
[root@master conf]# cat mapred-site.xml
<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
<property>
<name>mapred.job.tracker</name>
<value>master:8021</value>
</property>
</configuration>
Kopieren Sie als Nächstes die Datei „mapred-site.xml“ mit dem folgenden scp-Befehl auf den Knotencomputer.
[root@master conf]# scp /etc/hadoop/conf/mapred-site.xml node:/etc/hadoop/conf/
mapred-site.xml 100% 200 0.2KB/s 00:00
Konfigurieren Sie nun lokale Speicherverzeichnisse für die Verwendung durch MRv1-Daemons. Öffnen Sie erneut die Datei „mapred-site.xml“ und nehmen Sie für jeden TaskTracker die unten gezeigten Änderungen vor.
<property>
 <name>mapred.local.dir</name>
 <value>/data/1/mapred/local,/data/2/mapred/local,/data/3/mapred/local</value>
</property>
Nachdem Sie diese Verzeichnisse in der Datei „mapred-site.xml“ angegeben haben, müssen Sie die Verzeichnisse erstellen und ihnen auf jedem Knoten in Ihrem Cluster die richtigen Dateiberechtigungen zuweisen.
mkdir -p /data/1/mapred/local /data/2/mapred/local /data/3/mapred/local /data/4/mapred/local
chown -R mapred:hadoop /data/1/mapred/local /data/2/mapred/local /data/3/mapred/local /data/4/mapred/local
Schritt 10: Starten Sie HDFS
Führen Sie nun den folgenden Befehl aus, um HDFS auf jedem Knoten im Cluster zu starten.
[root@master conf]# for x in `cd /etc/init.d ; ls hadoop-hdfs-*` ; do sudo service $x start ; done
[root@node conf]# for x in `cd /etc/init.d ; ls hadoop-hdfs-*` ; do sudo service $x start ; done
Schritt 11: Erstellen Sie die Verzeichnisse HDFS /tmp und MapReduce /var
Es ist erforderlich, /tmp mit den entsprechenden Berechtigungen genau wie unten beschrieben zu erstellen.
[root@master conf]# sudo -u hdfs hadoop fs -mkdir /tmp
[root@master conf]# sudo -u hdfs hadoop fs -chmod -R 1777 /tmp
[root@master conf]# sudo -u hdfs hadoop fs -mkdir -p /var/lib/hadoop-hdfs/cache/mapred/mapred/staging
[root@master conf]# sudo -u hdfs hadoop fs -chmod 1777 /var/lib/hadoop-hdfs/cache/mapred/mapred/staging
[root@master conf]# sudo -u hdfs hadoop fs -chown -R mapred /var/lib/hadoop-hdfs/cache/mapred
Überprüfen Sie nun die HDFS-Dateistruktur.
[root@node conf]# sudo -u hdfs hadoop fs -ls -R /
drwxrwxrwt - hdfs hadoop 0 2014-05-29 09:58 /tmp
drwxr-xr-x - hdfs hadoop 0 2014-05-29 09:59 /var
drwxr-xr-x - hdfs hadoop 0 2014-05-29 09:59 /var/lib
drwxr-xr-x - hdfs hadoop 0 2014-05-29 09:59 /var/lib/hadoop-hdfs
drwxr-xr-x - hdfs hadoop 0 2014-05-29 09:59 /var/lib/hadoop-hdfs/cache
drwxr-xr-x - mapred hadoop 0 2014-05-29 09:59 /var/lib/hadoop-hdfs/cache/mapred
drwxr-xr-x - mapred hadoop 0 2014-05-29 09:59 /var/lib/hadoop-hdfs/cache/mapred/mapred
drwxrwxrwt - mapred hadoop 0 2014-05-29 09:59 /var/lib/hadoop-hdfs/cache/mapred/mapred/staging
Nachdem Sie HDFS gestartet und „/tmp“ erstellt haben, aber bevor Sie den JobTracker starten, erstellen Sie bitte das HDFS-Verzeichnis, das durch den Parameter „mapred.system.dir“ angegeben wird (standardmäßig $ {hadoop.tmp .dir}/mapred/system und ändern Sie den Besitzer in „mapred“.
[root@master conf]# sudo -u hdfs hadoop fs -mkdir /tmp/mapred/system
[root@master conf]# sudo -u hdfs hadoop fs -chown mapred:hadoop /tmp/mapred/system
Schritt 12: Starten Sie MapReduce
Um MapReduce zu starten: Bitte starten Sie die TT- und JT-Dienste.
Auf jedem TaskTracker-System
[root@node conf]# service hadoop-0.20-mapreduce-tasktracker start
Starting Tasktracker: [ OK ]
starting tasktracker, logging to /var/log/hadoop-0.20-mapreduce/hadoop-hadoop-tasktracker-node.out
Auf dem JobTracker-System
[root@master conf]# service hadoop-0.20-mapreduce-jobtracker start
Starting Jobtracker: [ OK ]
starting jobtracker, logging to /var/log/hadoop-0.20-mapreduce/hadoop-hadoop-jobtracker-master.out
Erstellen Sie als Nächstes ein Home-Verzeichnis für jeden Hadoop-Benutzer. Es wird empfohlen, dies auf NameNode zu tun. Zum Beispiel.
[root@master conf]# sudo -u hdfs hadoop fs -mkdir /user/<user>
[root@master conf]# sudo -u hdfs hadoop fs -chown <user> /user/<user>
Hinweis: Dabei ist der Linux-Benutzername jedes Benutzers.
Alternativ können Sie das Home-Verzeichnis wie folgt erstellen.
[root@master conf]# sudo -u hdfs hadoop fs -mkdir /user/$USER
[root@master conf]# sudo -u hdfs hadoop fs -chown $USER /user/$USER
Schritt 13: Öffnen Sie die JT- und NN-Benutzeroberfläche über den Browser
Öffnen Sie Ihren Browser und geben Sie die URL als http://ip_address_of_namenode:50070 ein, um auf Namenode zuzugreifen.
Öffnen Sie einen weiteren Tab in Ihrem Browser und geben Sie die URL als http://ip_address_of_jobtracker:50030 ein, um auf JobTracker zuzugreifen.
Dieses Verfahren wurde erfolgreich auf RHEL/CentOS 5.X/6.X getestet. Bitte kommentieren Sie unten, wenn bei der Installation Probleme auftreten. Ich helfe Ihnen bei der Lösungsfindung.