Zoeken op website

Installeer Hadoop Multinode Cluster met CDH4 in RHEL/CentOS 6.5


Hadoop is een open source programmeerframework ontwikkeld door Apache om big data te verwerken. Het maakt gebruik van HDFS (Hadoop Distributed File System) om de gegevens op een distributieve manier op te slaan over alle datanodes in het cluster en een mapreduce-model om de gegevens te verwerken.

Namenode (NN) is een hoofddaemon die HDFS en Jobtracker (JT bestuurt) ) is de master-daemon voor de mapreduce-engine.

Vereisten

In deze tutorial gebruik ik twee CentOS 6.3 VM's ‘master’ en ‘node‘ nl. (master en node zijn mijn hostnamen). Het ‘master’-IP is 172.21.17.175 en het knooppunt-IP is ‘172.21.17.188‘. De volgende instructies werken ook op RHEL/CentOS 6.x versies.

Op Meester
[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
Op Knooppunt
[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

Zorg er eerst voor dat alle clusterhosts aanwezig zijn in het bestand ‘/etc/hosts‘ (op elk knooppunt), als u geen DNS hebt ingesteld.

Op Meester
[root@master ~]# cat /etc/hosts

172.21.17.175 master
172.21.17.188 node
Op Knooppunt
[root@node ~]# cat /etc/hosts

172.21.17.197 qabox
172.21.17.176 ansible-ground

Hadoop Multinode Cluster installeren in CentOS

We gebruiken de officiële CDH repository om CDH4 op alle hosts (Master en Node) in een cluster te installeren.

Stap 1: Download CDH Repository installeren

Ga naar de officiële CDH-downloadpagina en pak de CDH4-versie (dat wil zeggen 4.6) of u kunt de volgende wget-opdracht gebruiken om de repository te downloaden en te installeren.

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

Voordat u Hadoop Multinode Cluster installeert, voegt u de Cloudera Public GPG Key toe aan uw repository door een van de volgende opdrachten uit te voeren, afhankelijk van uw systeemarchitectuur.

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

Stap 2: Stel JobTracker en NameNode in

Voer vervolgens de volgende opdracht uit om JobTracker en NameNode op de Master-server te installeren en in te stellen.

[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

Stap 3: Stel het secundaire naamknooppunt in

Voer opnieuw de volgende opdrachten uit op de masterserver om het secundaire naamknooppunt in te stellen.

[root@master ~]# yum clean all 
[root@master ~]# yum install hadoop-hdfs-secondarynam

Stap 4: Stel Tasktracker & Datanode in

Stel vervolgens tasktracker & datanode in op alle clusterhosts (Node) behalve de JobTracker-, NameNode- en Secondary (of Standby) NameNode-hosts (in dit geval op node).

[root@node ~]# yum clean all
[root@node ~]# yum install hadoop-0.20-mapreduce-tasktracker hadoop-hdfs-datanode

Stap 5: Hadoop-client instellen

Je kunt de Hadoop-client op een aparte machine installeren (in dit geval heb ik het op datanode geïnstalleerd, je kunt het op elke machine installeren).

[root@node ~]# yum install hadoop-client

Stap 6: Implementeer HDFS op knooppunten

Als we nu klaar zijn met bovenstaande stappen, gaan we verder met het implementeren van hdfs (uit te voeren op alle knooppunten).

Kopieer de standaardconfiguratie naar de map /etc/hadoop (op elk knooppunt in het 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

Gebruik de opdracht alternatives om uw aangepaste map als volgt in te stellen (op elk knooppunt in 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

Stap 7: Configuratiebestanden aanpassen

Open nu het bestand ‘core-site.xml’ en update “fs.defaultFS” op elk knooppunt in het 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>

Volgende update “dfs.permissions.superusergroup” in hdfs-site.xml op elk knooppunt in het 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>

Opmerking: zorg ervoor dat de bovenstaande configuratie aanwezig is op alle knooppunten (doe dit op één knooppunt en voer scp uit om op de rest te kopiëren van de knooppunten).

Stap 8: Lokale opslagmappen configureren

Update “dfs.name.dir of dfs.namenode.name.dir” in ‘hdfs-site.xml’ op de NameNode (op Master en Node). Wijzig de waarde zoals gemarkeerd.

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

Stap 9: Mappen maken en machtigingen beheren

Voer de onderstaande opdrachten uit om een mapstructuur te maken en gebruikersrechten op de Namenode (Master) en Datanode (Node) machine te beheren.

[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

Formatteer de Namenode (op Master) door de volgende opdracht te geven.

[root@master conf]# sudo -u hdfs hdfs namenode -format

Stap 10: De secundaire NameNode configureren

Voeg de volgende eigenschap toe aan het bestand hdfs-site.xml en vervang de waarde zoals weergegeven in Master.

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

Opmerking: in ons geval moet de waarde het IP-adres van de hoofd-VM zijn.

Laten we nu MRv1 implementeren ( Map-reduce versie 1 ). Open het bestand ‘mapred-site.xml’ en volg de waarden zoals weergegeven.

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

Kopieer vervolgens het bestand ‘mapred-site.xml’ naar de knooppuntmachine met behulp van de volgende scp-opdracht.

[root@master conf]# scp /etc/hadoop/conf/mapred-site.xml node:/etc/hadoop/conf/
mapred-site.xml                                                                      100%  200     0.2KB/s   00:00

Configureer nu lokale opslagmappen voor gebruik door MRv1 Daemons. Open opnieuw het bestand ‘mapred-site.xml’ en breng wijzigingen aan zoals hieronder weergegeven voor elke TaskTracker.

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

Nadat u deze mappen heeft opgegeven in het bestand ‘mapred-site.xml’, moet u de mappen maken en de juiste bestandsrechten eraan toewijzen op elk knooppunt in uw cluster.

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

Stap 10: Start HDFS

Voer nu de volgende opdracht uit om HDFS op elk knooppunt in het cluster te 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

Stap 11: Maak HDFS /tmp en MapReduce /var mappen

Het is vereist om /tmp aan te maken met de juiste rechten, precies zoals hieronder vermeld.

[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

Controleer nu de HDFS-bestandsstructuur.

[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

Nadat u HDFS heeft gestart en '/tmp' heeft gemaakt, maar voordat u JobTracker start, maakt u de HDFS-map die is opgegeven door de parameter 'mapred.system.dir' (standaard is dit $ {hadoop.tmp .dir}/mapred/system en wijzig de eigenaar 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

Stap 12: Start MapReduce

Om MapReduce te starten: start de TT- en JT-services.

Op elk TaskTracker-systeem
[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
Op het JobTracker-systeem
[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

Maak vervolgens een thuismap voor elke hadoop-gebruiker. het is aan te raden dit op NameNode te doen; Bijvoorbeeld.

[root@master conf]# sudo -u hdfs hadoop fs -mkdir  /user/<user>
[root@master conf]# sudo -u hdfs hadoop fs -chown <user> /user/<user>

Opmerking: waarbij de Linux-gebruikersnaam van elke gebruiker is.

Als alternatief kunt u de thuismap als volgt aanmaken.

[root@master conf]# sudo -u hdfs hadoop fs -mkdir /user/$USER
[root@master conf]# sudo -u hdfs hadoop fs -chown $USER /user/$USER

Stap 13: Open JT, NN UI vanuit de browser

Open uw browser en typ de url als http://ip_address_of_namenode:50070 om toegang te krijgen tot Namenode.

Open een ander tabblad in uw browser en typ de URL als http://ip_address_of_jobtracker:50030 om toegang te krijgen tot JobTracker.

Deze procedure is met succes getest op RHEL/CentOS 5.X/6.X. Reageer hieronder als u problemen ondervindt met de installatie. Ik zal u helpen met de oplossingen.