Website-Suche

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.