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.