Εγκαταστήστε το Hadoop Multinode Cluster χρησιμοποιώντας CDH4 σε RHEL/CentOS 6.5


Το Hadoop είναι ένα πλαίσιο προγραμματισμού ανοιχτού κώδικα που αναπτύχθηκε από την apache για την επεξεργασία μεγάλων δεδομένων. Χρησιμοποιεί το HDFS (Σύστημα κατανεμημένου αρχείου Hadoop) για την αποθήκευση των δεδομένων σε όλους τους κόμβους δεδομένων του συμπλέγματος με διανεμητικό τρόπο και τη μείωση του μοντέλου για την επεξεργασία των δεδομένων.

Το Namenode (NN) είναι ένας κύριος δαίμονας που ελέγχει το HDFS και το Jobtracker (JT ) είναι ο κύριος δαίμονας για τη μηχανή mapreduce.

Απαιτήσεις

Σε αυτό το σεμινάριο χρησιμοποιώ δύο εικονικά μηχανήματα CentOS 6.3 "master" και "node", δηλαδή. (το κύριο και ο κόμβος είναι τα ονόματα κεντρικού υπολογιστή μου). Η "κύρια" IP είναι 172.21.17.175 και η IP του κόμβου είναι "172.21.17.188". Οι παρακάτω οδηγίες λειτουργούν επίσης σε εκδόσεις RHEL/CentOS 6.x.

Στο Master
[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
Στον κόμβο
[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

Πρώτα βεβαιωθείτε ότι όλοι οι κεντρικοί υπολογιστές συμπλέγματος βρίσκονται στο αρχείο ‘/etc/hosts‘ (σε κάθε κόμβο), εάν δεν έχετε ρυθμίσει το DNS.

Στο Master
[root@master ~]# cat /etc/hosts

172.21.17.175 master
172.21.17.188 node
Στον κόμβο
[root@node ~]# cat /etc/hosts

172.21.17.197 qabox
172.21.17.176 ansible-ground

Εγκατάσταση του Hadoop Multinode Cluster στο CentOS

Χρησιμοποιούμε επίσημο αποθετήριο CDH για να εγκαταστήσουμε το CDH4 σε όλους τους κεντρικούς υπολογιστές (Master και Node) σε ένα σύμπλεγμα.

Βήμα 1: Λήψη Εγκατάσταση αποθετηρίου CDH

Μεταβείτε στην επίσημη σελίδα λήψης CDH και πάρτε την έκδοση CDH4 (δηλαδή 4.6) ή μπορείτε να χρησιμοποιήσετε την ακόλουθη εντολή wget για να κάνετε λήψη του αποθετηρίου και να το εγκαταστήσετε.

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

Πριν εγκαταστήσετε το Hadoop Multinode Cluster, προσθέστε το Cloudera Public GPG Key στο αποθετήριο σας εκτελώντας μία από τις παρακάτω εντολές σύμφωνα με την αρχιτεκτονική του συστήματός σας.

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

Βήμα 2: Ρύθμιση JobTracker & NameNode

Στη συνέχεια, εκτελέστε την ακόλουθη εντολή για να εγκαταστήσετε και να ρυθμίσετε το JobTracker και το NameNode στον κύριο διακομιστή.

[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

Βήμα 3: Ρύθμιση δευτερεύοντος κόμβου ονόματος

Και πάλι, εκτελέστε τις ακόλουθες εντολές στον κύριο διακομιστή για να ρυθμίσετε τον δευτερεύοντα κόμβο ονόματος.

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

Βήμα 4: Ρύθμιση Tasktracker & Datanode

Στη συνέχεια, ρυθμίστε τον εντοπισμό εργασιών και τον κόμβο δεδομένων σε όλους τους κεντρικούς υπολογιστές συμπλέγματος (Κόμβος) εκτός από τους κεντρικούς υπολογιστές JobTracker, NameNode και Δευτερεύοντες (ή Αναμονής) NameNode (σε κόμβο σε αυτήν την περίπτωση).

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

Βήμα 5: Ρύθμιση προγράμματος-πελάτη Hadoop

Μπορείτε να εγκαταστήσετε το πρόγραμμα-πελάτη Hadoop σε ξεχωριστό μηχάνημα (σε αυτήν την περίπτωση το έχω εγκαταστήσει στο datanode μπορείτε να το εγκαταστήσετε σε οποιοδήποτε μηχάνημα).

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

Βήμα 6: Αναπτύξτε το HDFS σε κόμβους

Τώρα, αν τελειώσουμε με τα παραπάνω βήματα, ας προχωρήσουμε στην ανάπτυξη hdfs (να γίνει σε όλους τους κόμβους).

Αντιγράψτε την προεπιλεγμένη διαμόρφωση στον κατάλογο /etc/hadoop (σε κάθε κόμβο του συμπλέγματος).

[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

Χρησιμοποιήστε την εντολή εναλλακτικές για να ορίσετε τον προσαρμοσμένο σας κατάλογο, ως εξής ( σε κάθε κόμβο στο σύμπλεγμα ).

[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

Βήμα 7: Προσαρμογή αρχείων διαμόρφωσης

Τώρα ανοίξτε το αρχείο ‘core-site.xml’ και ενημερώστε το «fs.defaultFS» σε κάθε κόμβο του συμπλέγματος.

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

Επόμενη ενημέρωση "dfs.permissions.superusergroup" στο hdfs-site.xml σε κάθε κόμβο του συμπλέγματος.

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

Σημείωση: Βεβαιωθείτε ότι η παραπάνω διαμόρφωση υπάρχει σε όλους τους κόμβους (κάντε σε έναν κόμβο και εκτελέστε το scp για αντιγραφή σε κατάσταση αναμονής των κόμβων).

Βήμα 8: Διαμόρφωση καταλόγων τοπικής αποθήκευσης

Ενημερώστε το "dfs.name.dir ή dfs.namenode.name.dir" στο "hdfs-site.xml" στο NameNode (στο Master και στο Node). Αλλάξτε την τιμή όπως επισημαίνεται.

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

Βήμα 9: Δημιουργία καταλόγων και διαχείριση δικαιωμάτων

Εκτελέστε τις παρακάτω εντολές για να δημιουργήσετε δομή καταλόγου και να διαχειριστείτε τα δικαιώματα χρήστη στο μηχάνημα Namenode (Master) και Datanode (Node).

[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

Μορφοποιήστε το Namenode (στο Master), εκδίδοντας την ακόλουθη εντολή.

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

Βήμα 10: Διαμόρφωση του δευτερεύοντος NameNode

Προσθέστε την ακόλουθη ιδιότητα στο αρχείο hdfs-site.xml και αντικαταστήστε την τιμή όπως φαίνεται στο 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>

Σημείωση: Στην περίπτωσή μας, η τιμή πρέπει να είναι η διεύθυνση IP του κύριου VM.

Τώρα ας αναπτύξουμε το MRv1 (έκδοση 1 μείωσης χάρτη). Ανοίξτε το αρχείο ‘mapred-site.xml’ ακολουθώντας τις τιμές όπως φαίνεται.

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

Στη συνέχεια, αντιγράψτε το αρχείο ‘mapred-site.xml’ στο μηχάνημα κόμβου χρησιμοποιώντας την ακόλουθη εντολή scp.

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

Τώρα διαμορφώστε τους τοπικούς καταλόγους αποθήκευσης για χρήση από το MRv1 Daemons. Ανοίξτε ξανά το αρχείο ‘mapred-site.xml’ και κάντε αλλαγές όπως φαίνεται παρακάτω για κάθε TaskTracker.

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

Αφού καθορίσετε αυτούς τους καταλόγους στο αρχείο «mapred-site.xml», πρέπει να δημιουργήσετε τους καταλόγους και να τους εκχωρήσετε τα σωστά δικαιώματα αρχείων σε κάθε κόμβο στο σύμπλεγμα σας.

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

Βήμα 10: Εκκινήστε το HDFS

Τώρα εκτελέστε την ακόλουθη εντολή για να ξεκινήσετε το HDFS σε κάθε κόμβο του συμπλέγματος.

[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

Βήμα 11: Δημιουργήστε καταλόγους HDFS /tmp και MapReduce /var

Απαιτείται η δημιουργία /tmp με τα κατάλληλα δικαιώματα ακριβώς όπως αναφέρεται παρακάτω.

[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

Τώρα επαληθεύστε τη δομή του αρχείου HDFS.

[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

Αφού ξεκινήσετε το HDFS και δημιουργήσετε το '/tmp', αλλά πριν ξεκινήσετε το JobTracker, δημιουργήστε τον κατάλογο HDFS που καθορίζεται από την παράμετρο 'mapred.system.dir' (από προεπιλογή $ {hadoop.tmp .dir}/mapred/system και αλλάξτε τον ιδιοκτήτη σε χαρτογραφημένο.

[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

Βήμα 12: Ξεκινήστε το MapReduce

Για να ξεκινήσετε το MapReduce: ξεκινήστε τις υπηρεσίες TT και JT.

Σε κάθε σύστημα TaskTracker
[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
Στο σύστημα JobTracker
[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

Στη συνέχεια, δημιουργήστε έναν οικιακό κατάλογο για κάθε χρήστη του hadoop. Συνιστάται να το κάνετε αυτό στο NameNode. για παράδειγμα.

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

Σημείωση: όπου είναι το όνομα χρήστη Linux για κάθε χρήστη.

Εναλλακτικά, μπορείτε να δημιουργήσετε τον αρχικό κατάλογο ως εξής.

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

Βήμα 13: Ανοίξτε το JT, NN UI από το πρόγραμμα περιήγησης

Ανοίξτε το πρόγραμμα περιήγησής σας και πληκτρολογήστε τη διεύθυνση url ως http://ip_address_of_namenode:50070 για πρόσβαση στο Namenode.

Ανοίξτε μια άλλη καρτέλα στο πρόγραμμα περιήγησής σας και πληκτρολογήστε τη διεύθυνση url ως http://ip_address_of_jobtracker:50030 για να αποκτήσετε πρόσβαση στο JobTracker.

Αυτή η διαδικασία έχει δοκιμαστεί με επιτυχία στο RHEL/CentOS 5.X/6.X. Παρακαλώ σχολιάστε παρακάτω εάν αντιμετωπίζετε προβλήματα με την εγκατάσταση, θα σας βοηθήσω με τις λύσεις.