Namestite Hadoop Multinode Cluster z uporabo CDH4 v RHEL/CentOS 6.5


Hadoop je odprtokodni programski okvir, ki ga je razvil apache za obdelavo velikih podatkov. Uporablja HDFS (Hadoop Distributed File System) za distribucijsko shranjevanje podatkov v vseh podatkovnih vozliščih v gruči in model mapreduce za obdelavo podatkov.

Namenode (NN) je glavni demon, ki nadzoruje HDFS, Jobtracker (JT) pa glavni demon za mapreduce engine.

V tej vadnici uporabljam dve glavni enoti in vozlišču CentOS 6.3 VM. (glavni in vozlišče sta moji gostiteljski imeni). "Glavni" IP je 172.21.17.175, IP vozlišča pa "172.21.17.188". Naslednja navodila delujejo tudi na različicah RHEL/CentOS 6.x.

 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

Najprej se prepričajte, da so vsi gostitelji gruč v datoteki '/ etc/hosts' (na vsakem vozlišču), če DNS ni nastavljen.

 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

Namestitev Hadoop Multinode Cluster v CentOS

Z uradnim skladiščem CDH namestimo CDH4 na vse gostitelje (Master in Node) v gruči.

Pojdite na uradno stran za prenos CDH in zajemite različico CDH4 (tj. 4.6) ali pa uporabite naslednji ukaz wget, da prenesete repozitorij in ga namestite.

# 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

Pred namestitvijo Hadoop Multinode Cluster dodajte Cloudera Public GPG Key v svoje odlagališče tako, da zaženete enega od naslednjih ukazov v skladu s sistemsko arhitekturo.

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

Nato zaženite naslednji ukaz, da namestite in nastavite JobTracker in NameNode na glavnem strežniku.

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

Spet zaženite naslednje ukaze na glavnem strežniku, da nastavite vozlišče sekundarnega imena.

 yum clean all 
 yum install hadoop-hdfs-secondarynam

Nato nastavite orodje za sledenje opravil in podatkovno vozlišče na vse gostitelje gruče (vozlišče), razen na gostitelje JobTracker, NameNode in sekundarne (ali v stanju pripravljenosti) NameNode (v tem primeru na vozlišču).

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

Odjemalec Hadoop lahko namestite na ločen računalnik (v tem primeru sem ga namestil na datanode, lahko ga namestite na kateri koli računalnik).

 yum install hadoop-client

Zdaj, če smo končali z zgornjimi koraki, pojdimo naprej, da uvedemo hdfs (to bo izvedeno na vseh vozliščih).

Kopirajte privzeto konfiguracijo v imenik /etc/hadoop (na vsakem vozlišču v gruči).

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

Z ukazom alternativ nastavite svoj imenik po meri, kot sledi (na vsakem vozlišču v gruči).

 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

Zdaj odprite datoteko "core-site.xml" in posodobite "fs.defaultFS" na vsakem vozlišču v gruči.

 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>

Naslednja posodobitev »dfs.permissions.superusergroup« v hdfs-site.xml na vsakem vozlišču v gruči.

 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>

Opomba: Prepričajte se, da je zgornja konfiguracija prisotna na vseh vozliščih (na enem vozlišču in zaženite scp za kopiranje na preostalih vozliščih).

Posodobite »dfs.name.dir ali dfs.namenode.name.dir« v »hdfs-site.xml« na NameNode (na Master in Node). Prosimo, spremenite vrednost, kot je označena.

 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>

Izvedite spodnje ukaze za ustvarjanje strukture imenika in upravljanje uporabniških dovoljenj na računalniku Namenode (Master) in Datanode (Node).

 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

Formatirajte Namenode (na Master), tako da izdate naslednji ukaz.

 sudo -u hdfs hdfs namenode -format

V datoteko hdfs-site.xml dodajte naslednjo lastnost in zamenjajte vrednost, kot je prikazano v glavnem.

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

Opomba: V našem primeru mora biti vrednost ip naslov glavne VM.

Zdaj pa postavimo MRv1 (različica 1 za zmanjšanje zemljevida). Odprite datoteko 'mapred-site.xml', ki sledi naslednjim vrednostim, kot je prikazano.

 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>

Nato kopirajte datoteko 'mapred-site.xml' v vozlišče z naslednjim ukazom scp.

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

Zdaj konfigurirajte lokalne imenike pomnilnika, ki jih bodo uporabljali demoni MRv1. Ponovno odprite datoteko 'mapred-site.xml' in izvedite spremembe, kot je prikazano spodaj za vsak TaskTracker.

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

Po določitvi teh imenikov v datoteki 'mapred-site.xml' morate ustvariti imenike in jim dodeliti pravilna dovoljenja za datoteke na vsakem vozlišču v gruči.

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

Zdaj zaženite naslednji ukaz, da zaženete HDFS na vsakem vozlišču v gruči.

 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

Ustvariti/tmp je treba z ustreznimi dovoljenji natančno tako, kot je navedeno spodaj.

 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

Zdaj preverite strukturo datoteke HDFS.

 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

Ko zaženete HDFS in ustvarite '/ tmp', vendar preden zaženete JobTracker, ustvarite imenik HDFS, ki ga določa parameter 'mapred.system.dir' (privzeto & # 36 {hadoop.tmp.dir}/mapred/system in lastnika spremenite v zemljevida.

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

Če želite zagnati MapReduce: zaženite storitve TT in JT.

 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

Nato ustvarite domači imenik za vsakega uporabnika hadoop-a. Priporočljivo je, da to storite na NameNode; na primer.

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

Opomba: kjer je uporabniško ime za Linux vsakega uporabnika.

Domači imenik lahko ustvarite tudi na naslednji način.

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

Odprite brskalnik in vnesite URL kot http:// ip_address_of_namenode: 50070 za dostop do Namenode.

Odprite drug zavihek v brskalniku in vnesite URL kot http:// ip_address_of_jobtracker: 50030 za dostop do JobTrackerja.

Ta postopek je bil uspešno preizkušen na RHEL/CentOS 5.X/6.X. Prosimo, komentirajte spodaj, če imate kakršne koli težave z namestitvijo, jaz vam bom pomagal pri rešitvah.