Installer Hadoop Multinode Cluster med CDH4 i RHEL/CentOS 6.5
Hadoop er et åpen kildekode-programmeringsramme utviklet av apache for å behandle store data. Den bruker HDFS (Hadoop Distributed File System) for å lagre dataene på tvers av alle datanodene i klyngen på en distributiv måte og kartredusere modellen for å behandle dataene.
Namenode (NN) er en master-demon som kontrollerer HDFS og Jobtracker (JT) er master-demon for mapreduce-motoren.
I denne opplæringen bruker jeg to CentOS 6.3 VM-er 'master' og 'node', nemlig. (master og node er vertsnavnene mine). 'Master' IP er 172.21.17.175 og node IP er '172.21.17.188'. Følgende instruksjoner fungerer også på RHEL/CentOS 6.x-versjoner.
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
Sørg først for at alle klyngevertene er der i '/etc/hosts'-filen (på hver node), hvis du ikke har DNS-oppsett.
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
Installere Hadoop Multinode Cluster i CentOS
Vi bruker offisielt CDH-depot for å installere CDH4 på alle vertene (Master og Node) i en klynge.
Gå til den offisielle CDH-nedlastingssiden og hent CDH4-versjonen (dvs. 4.6), eller du kan bruke følgende wget-kommando for å laste ned depotet og installere det.
# 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
Før du installerer Hadoop Multinode Cluster, legg til Cloudera Public GPG Key til depotet ditt ved å kjøre en av følgende kommandoer i henhold til systemarkitekturen din.
## 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
Kjør deretter følgende kommando for å installere og konfigurere JobTracker og NameNode på Master-serveren.
yum clean all yum install hadoop-0.20-mapreduce-jobtracker
yum clean all yum install hadoop-hdfs-namenode
Igjen, kjør følgende kommandoer på hovedserveren for å sette opp sekundær navnenoden.
yum clean all yum install hadoop-hdfs-secondarynam
Deretter setter du opp oppgavesporing og datanode på alle klyngeverter (Node) bortsett fra JobTracker, NameNode og Secondary (eller Standby) NameNode-verter (på noden i dette tilfellet).
yum clean all yum install hadoop-0.20-mapreduce-tasktracker hadoop-hdfs-datanode
Du kan installere Hadoop-klienten på en separat maskin (i dette tilfellet har jeg installert den på datanode, du kan installere den på hvilken som helst maskin).
yum install hadoop-client
Hvis vi er ferdige med trinnene ovenfor, la oss gå videre for å distribuere hdfs (skal gjøres på alle nodene).
Kopier standardkonfigurasjonen til katalogen /etc/hadoop (på hver node i klyngen).
cp -r /etc/hadoop/conf.dist /etc/hadoop/conf.my_cluster
cp -r /etc/hadoop/conf.dist /etc/hadoop/conf.my_cluster
Bruk alternatives-kommandoen for å angi din egendefinerte katalog, som følger (på hver node i klyngen).
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
Åpne nå 'core-site.xml'-filen og oppdater fs.defaultFS på hver node i klyngen.
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>
Neste oppdatering dfs.permissions.superusergroup i hdfs-site.xml på hver node i klyngen.
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>
Merk: Sørg for at konfigurasjonen ovenfor er til stede på alle nodene (gjør på én node og kjør scp for å kopiere på resten av nodene).
Oppdater dfs.name.dir eller dfs.namenode.name.dir i 'hdfs-site.xml' på NameNode (på Master og Node ). Vennligst endre verdien som uthevet.
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>
Utfør kommandoene nedenfor for å lage katalogstruktur og administrere brukertillatelser på Namenode (Master) og Datanode (Node) maskin.
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
Formater Namenode (på Master), ved å gi følgende kommando.
sudo -u hdfs hdfs namenode -format
Legg til følgende egenskap til filen hdfs-site.xml og erstatt verdien som vist på 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>
Merk: I vårt tilfelle bør verdien være ip-adressen til master VM.
La oss nå distribuere MRv1 ( Map-reduce versjon 1 ). Åpne 'mapred-site.xml'-filen ved å følge verdiene som vist.
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>
Deretter kopierer du ‘mapred-site.xml’-filen til nodemaskinen ved å bruke følgende scp-kommando.
scp /etc/hadoop/conf/mapred-site.xml node:/etc/hadoop/conf/ mapred-site.xml 100% 200 0.2KB/s 00:00
Konfigurer nå lokale lagringskataloger for bruk av MRv1 Daemons. Åpne igjen 'mapred-site.xml'-filen og gjør endringer som vist nedenfor for hver TaskTracker.
<property> Â <name>mapred.local.dir</name> Â <value>/data/1/mapred/local,/data/2/mapred/local,/data/3/mapred/local</value> </property>
Etter å ha spesifisert disse katalogene i 'mapred-site.xml'-filen, må du opprette katalogene og tildele de riktige filtillatelsene til dem på hver node i klyngen din.
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
Kjør nå følgende kommando for å starte HDFS på hver node i klyngen.
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
Det kreves å opprette /tmp med riktige tillatelser nøyaktig som nevnt nedenfor.
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
Bekreft nå HDFS-filstrukturen.
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
Etter at du har startet HDFS og opprettet '/tmp', men før du starter JobTracker, må du opprette HDFS-katalogen spesifisert av parameteren 'mapred.system.dir' (som standard $ {hadoop.tmp.dir}/mapred/system og endre eier til mapred.
sudo -u hdfs hadoop fs -mkdir /tmp/mapred/system sudo -u hdfs hadoop fs -chown mapred:hadoop /tmp/mapred/system
For å starte MapReduce: start TT- og JT-tjenestene.
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
Deretter oppretter du en hjemmekatalog for hver hadoop-bruker. det anbefales at du gjør dette på NameNode; for eksempel.
sudo -u hdfs hadoop fs -mkdir /user/<user> sudo -u hdfs hadoop fs -chown <user> /user/<user>
Merk: hvor er Linux-brukernavnet til hver bruker.
Alternativt kan du lage hjemmekatalogen som følger.
sudo -u hdfs hadoop fs -mkdir /user/$USER sudo -u hdfs hadoop fs -chown $USER /user/$USER
Åpne nettleseren din og skriv inn url som http://ip_address_of_namenode:50070 for å få tilgang til Namenode.
Åpne en annen fane i nettleseren din og skriv inn url som http://ip_address_of_jobtracker:50030 for å få tilgang til JobTracker.
Denne prosedyren har blitt testet på RHEL/CentOS 5.X/6.X. Vennligst kommenter nedenfor hvis du har problemer med installasjonen, jeg vil hjelpe deg med løsningene.