Installéiert Hadoop Multinode Cluster mat CDH4 an RHEL/CentOS 6.5


Hadoop ass en Open Source Programméiere Kader entwéckelt vun Apache fir grouss Daten ze veraarbecht. Et benotzt HDFS (Hadoop Distributed File System) fir d'Donnéeën iwwer all d'Datanoden am Cluster op eng distributiv Manéier ze späicheren an de Modell ze reduzéieren fir d'Donnéeën ze veraarbecht.

Namenode (NN) ass e Master Daemon deen HDFS kontrolléiert an Jobtracker (JT) ass Master Daemon fir Mapreduce Engine.

An dësem Tutorial benotzen ech zwee CentOS 6.3 VMs 'Master' an 'Node' nämlech. (Meeschter an Node si meng Hostnumm). De 'Master' IP ass 172.21.17.175 an den Node IP ass '172.21.17.188'. Déi folgend Instruktioune funktionnéieren och op RHEL/CentOS 6.x Versiounen.

 hostname

master
 ifconfig|grep 'inet addr'|head -1

inet addr:172.21.17.175  Bcast:172.21.19.255  Mask:255.255.252.0
 hostname

node
 ifconfig|grep 'inet addr'|head -1

inet addr:172.21.17.188  Bcast:172.21.19.255  Mask:255.255.252.0

Gitt als éischt sécher datt all Clusterhost do sinn an der '/etc/hosts' Datei (op all Node), wann Dir keen DNS ageriicht hutt.

 cat /etc/hosts

172.21.17.175 master
172.21.17.188 node
 cat /etc/hosts

172.21.17.197 qabox
172.21.17.176 ansible-ground

Hadoop Multinode Cluster an CentOS installéieren

Mir benotzen offiziell CDH Repository fir CDH4 op all Hosten (Master an Node) an engem Cluster z'installéieren.

Gitt op déi offiziell CDH Download Säit a gräift d'CDH4 (dh 4.6) Versioun oder Dir kënnt de folgende wget Kommando benotze fir de Repository erofzelueden an z'installéieren.

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

Ier Dir Hadoop Multinode Cluster installéiert, füügt de Cloudera Public GPG Key an Ärem Repository un andeems Dir ee vun de folgende Kommandoen laut Ärem Systemarchitektur ausféiert.

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

Als nächst, fuert de folgende Kommando fir JobTracker an NameNode op Master Server z'installéieren an ze konfiguréieren.

 yum clean all 
 yum install hadoop-0.20-mapreduce-jobtracker
 yum clean all
 yum install hadoop-hdfs-namenode

Nach eng Kéier, lafen déi folgend Kommandoen um Master Server fir de Secondaire Numm Node opzestellen.

 yum clean all 
 yum install hadoop-hdfs-secondarynam

Als nächst, setup Tasktracker & Datanode op all Clusterhost (Node) ausser den JobTracker, NameNode, a Secondary (oder Standby) NameNode Hosts (op Node an dësem Fall).

 yum clean all
 yum install hadoop-0.20-mapreduce-tasktracker hadoop-hdfs-datanode

Dir kënnt Hadoop Client op enger separater Maschinn installéieren (an dësem Fall hunn ech et op datanode installéiert, Dir kënnt et op all Maschinn installéieren).

 yum install hadoop-client

Elo wa mir mat uewe Schrëtt fäerdeg sinn, loosst eis virgoen fir hdfs z'installéieren (op all Noden ze maachen).

Kopéiert d'Standardkonfiguratioun an den /etc/hadoop Verzeichnis (op all Node am Cluster).

 cp -r /etc/hadoop/conf.dist /etc/hadoop/conf.my_cluster
 cp -r /etc/hadoop/conf.dist /etc/hadoop/conf.my_cluster

Benotzt Alternativ Kommando fir Äre personaliséierte Verzeechnes ze setzen, wéi follegt (op all Node am Cluster).

 alternatives --verbose --install /etc/hadoop/conf hadoop-conf /etc/hadoop/conf.my_cluster 50
reading /var/lib/alternatives/hadoop-conf

 alternatives --set hadoop-conf /etc/hadoop/conf.my_cluster
 alternatives --verbose --install /etc/hadoop/conf hadoop-conf /etc/hadoop/conf.my_cluster 50
reading /var/lib/alternatives/hadoop-conf

 alternatives --set hadoop-conf /etc/hadoop/conf.my_cluster

Elo öffnen 'core-site.xml' Datei an update fs.defaultFS op all Node am Cluster.

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

Nächst Update dfs.permissions.superusergroup an hdfs-site.xml op all Node am Cluster.

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

Notiz: Gitt sécher datt déi uewe genannte Konfiguratioun op all Noden präsent ass (maacht op engem Node a lafen scp fir op de Rescht vun den Noden ze kopéieren).

Update dfs.name.dir oder dfs.namenode.name.dir an 'hdfs-site.xml' op der NameNode (op Master an Node). Ännert w.e.g. de Wäert wéi markéiert.

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

Fëllt ënnen Kommandoen aus fir Verzeichnisstruktur ze kreéieren & Benotzerpermissiounen op Namenode (Master) an Datanode (Node) Maschinn ze managen.

 mkdir -p /data/1/dfs/nn /nfsmount/dfs/nn
 chmod 700 /data/1/dfs/nn /nfsmount/dfs/nn
  mkdir -p /data/1/dfs/dn /data/2/dfs/dn /data/3/dfs/dn /data/4/dfs/dn
  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

Formatéiert den Namenode (op Master), andeems Dir de folgende Kommando ausgëtt.

 sudo -u hdfs hdfs namenode -format

Füügt déi folgend Eegeschafte op d'hdfs-site.xml Datei an ersetzt de Wäert wéi op Master gewisen.

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

Notiz: An eisem Fall sollt de Wäert d'IP Adress vum Master VM sinn.

Loosst eis elo MRv1 ofsetzen (Kaart-reduzéieren Versioun 1). Open 'mapred-site.xml' Datei folgend Wäerter wéi gewisen.

 cp hdfs-site.xml mapred-site.xml
 vi mapred-site.xml
 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>

Nächst, kopéiert 'mapred-site.xml'Datei op Node Maschinn mat dem folgenden scp Kommando.

 scp /etc/hadoop/conf/mapred-site.xml node:/etc/hadoop/conf/
mapred-site.xml                                                                      100%  200     0.2KB/s   00:00

Elo konfiguréieren lokal Späicherverzeichnisser fir vun MRv1 Daemons ze benotzen. Maacht erëm 'mapred-site.xml'Datei op a maacht Ännerungen wéi hei ënnendrënner fir all TaskTracker.

<property>
 <name>mapred.local.dir</name>
 <value>/data/1/mapred/local,/data/2/mapred/local,/data/3/mapred/local</value>
</property>

Nodeems Dir dës Verzeichnisser an der 'mapred-site.xml' Datei spezifizéiert hutt, musst Dir d'Verzeichnisser erstellen an déi richteg Dateierrechter op all Node an Ärem Cluster zouginn.

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

Fuert elo de folgende Kommando fir HDFS op all Node am Cluster ze starten.

 for x in `cd /etc/init.d ; ls hadoop-hdfs-*` ; do sudo service $x start ; done
 for x in `cd /etc/init.d ; ls hadoop-hdfs-*` ; do sudo service $x start ; done

Et ass erfuerderlech fir/tmp mat passenden Permissiounen ze kreéieren genau wéi hei ënnendrënner.

 sudo -u hdfs hadoop fs -mkdir /tmp
 sudo -u hdfs hadoop fs -chmod -R 1777 /tmp
 sudo -u hdfs hadoop fs -mkdir -p /var/lib/hadoop-hdfs/cache/mapred/mapred/staging
 sudo -u hdfs hadoop fs -chmod 1777 /var/lib/hadoop-hdfs/cache/mapred/mapred/staging
 sudo -u hdfs hadoop fs -chown -R mapred /var/lib/hadoop-hdfs/cache/mapred

Elo kontrolléiert d'HDFS Dateistruktur.

 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

Nodeems Dir HDFS gestart hutt an '/tmp' erstellt, awer ier Dir den JobTracker ufänkt, erstellt w.e.g. den HDFS Verzeichnis, deen vum Parameter 'mapred.system.dir' spezifizéiert gëtt (par défaut $ {hadoop.tmp.dir}/mapred/system an änneren Besëtzer ze mapred.

 sudo -u hdfs hadoop fs -mkdir /tmp/mapred/system
 sudo -u hdfs hadoop fs -chown mapred:hadoop /tmp/mapred/system

Fir MapReduce unzefänken: Start w.e.g. d'TT an JT Servicer.

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

Als nächst erstellt en Heemverzeechnes fir all hadoop Benotzer. et ass recommandéiert dat op NameNode ze maachen; zum Beispill.

 sudo -u hdfs hadoop fs -mkdir  /user/<user>
 sudo -u hdfs hadoop fs -chown <user> /user/<user>

Notiz: wou de Linux Benotzernumm vun all Benotzer ass.

Alternativ kënnt Dir den Heemverzeechnes erstellen wéi follegt.

 sudo -u hdfs hadoop fs -mkdir /user/$USER
 sudo -u hdfs hadoop fs -chown $USER /user/$USER

Öffnen Äre Browser a gitt d'URL als http://ip_address_of_namenode:50070 fir Zougang zum Namenode.

Öffnen eng aner Tab an Ärem Browser a gitt d'URL als http://ip_address_of_jobtracker:50030 fir Zougang zu JobTracker.

Dës Prozedur gouf erfollegräich op RHEL/CentOS 5.X/6.X getest. Kommentéiert w.e.g. hei ënnen wann Dir Probleemer mat der Installatioun hutt, ech hëllefen Iech mat de Léisungen.