Instal·leu Hadoop Multinode Cluster mitjançant CDH4 a RHEL/CentOS 6.5
Hadoop és un marc de programació de codi obert desenvolupat per apache per processar grans dades. Utilitza HDFS (Hadoop Distributed File System) per emmagatzemar les dades a tots els nodes de dades del clúster d'una manera distributiva i el model mapreduce per processar les dades.
Namenode (NN) és un dimoni mestre que controla HDFS i Jobtracker (JT) és un dimoni principal per al motor mapreduce.
En aquest tutorial estic fent servir dues màquines virtuals CentOS 6.3 mestre i node, és a dir. (el mestre i el node són els meus noms d'amfitrió). La IP mestra és 172.21.17.175 i la IP del node és 172.21.17.188. Les instruccions següents també funcionen amb les versions 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
Primer, assegureu-vos que tots els amfitrions del clúster hi siguin al fitxer /etc/hosts (a cada node), si no teniu configurat el DNS.
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
Instal·lació de Hadoop Multinode Cluster a CentOS
Utilitzem el dipòsit oficial de CDH per instal·lar CDH4 a tots els amfitrions (Master i Node) d'un clúster.
Aneu a la pàgina oficial de descàrrega de CDH i agafeu la versió CDH4 (és a dir, 4.6) o podeu utilitzar la següent comanda wget per descarregar el dipòsit i instal·lar-lo.
# 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
Abans d'instal·lar Hadoop Multinode Cluster, afegiu la clau pública GPG de Cloudera al vostre dipòsit executant una de les ordres següents segons l'arquitectura del vostre sistema.
## 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
A continuació, executeu l'ordre següent per instal·lar i configurar JobTracker i NameNode al servidor principal.
yum clean all yum install hadoop-0.20-mapreduce-jobtracker
yum clean all yum install hadoop-hdfs-namenode
De nou, executeu les ordres següents al servidor mestre per configurar el node de nom secundari.
yum clean all yum install hadoop-hdfs-secondarynam
A continuació, configureu el rastrejador de tasques i el node de dades a tots els amfitrions del clúster (Node), excepte els amfitrions JobTracker, NameNode i secundaris (o en espera) NameNode (al node en aquest cas).
yum clean all yum install hadoop-0.20-mapreduce-tasktracker hadoop-hdfs-datanode
Podeu instal·lar el client Hadoop en una màquina independent (en aquest cas l'he instal·lat a datanode, podeu instal·lar-lo a qualsevol màquina).
yum install hadoop-client
Ara, si hem acabat amb els passos anteriors, avancem per desplegar hdfs (que es farà a tots els nodes).
Copieu la configuració predeterminada al directori /etc/hadoop (a cada node del clúster).
cp -r /etc/hadoop/conf.dist /etc/hadoop/conf.my_cluster
cp -r /etc/hadoop/conf.dist /etc/hadoop/conf.my_cluster
Utilitzeu l'ordre d'alternatives per configurar el vostre directori personalitzat, de la manera següent (a cada node del clúster).
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
Ara obriu el fitxer core-site.xml i actualitzeu fs.defaultFS a cada node del clúster.
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>
Següent actualització dfs.permissions.superusergroup a hdfs-site.xml a cada node del clúster.
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>
Nota: si us plau, assegureu-vos que la configuració anterior estigui present a tots els nodes (feu-ho en un node i executeu scp per copiar a la resta dels nodes).
Actualitzeu dfs.name.dir o dfs.namenode.name.dir a hdfs-site.xml al NameNode (a Master i Node). Canvieu el valor tal com es destaca.
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>
Executeu les ordres següents per crear una estructura de directoris i gestionar els permisos d'usuari a la màquina Namenode (Master) i 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
Formateu el Namenode (a Master), emetent l'ordre següent.
sudo -u hdfs hdfs namenode -format
Afegiu la propietat següent al fitxer hdfs-site.xml i substituïu el valor tal com es mostra a 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>
Nota: En el nostre cas, el valor hauria de ser l'adreça IP de la màquina virtual mestra.
Ara despleguem MRv1 (versió de reducció de mapes 1). Obriu el fitxer mapred-site.xml seguint els valors que es mostren.
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>
A continuació, copieu el fitxer mapred-site.xml a la màquina del node mitjançant l'ordre scp següent.
scp /etc/hadoop/conf/mapred-site.xml node:/etc/hadoop/conf/ mapred-site.xml 100% 200 0.2KB/s 00:00
Ara configureu els directoris d'emmagatzematge local per utilitzar els dimonis MRv1. Torneu a obrir el fitxer mapred-site.xml i feu canvis com es mostra a continuació per a cada TaskTracker.
<property> Â <name>mapred.local.dir</name> Â <value>/data/1/mapred/local,/data/2/mapred/local,/data/3/mapred/local</value> </property>
Després d'especificar aquests directoris al fitxer 'mapred-site.xml', heu de crear els directoris i assignar-los els permisos de fitxer correctes a cada node del vostre clúster.
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
Ara executeu l'ordre següent per iniciar HDFS a tots els nodes del clúster.
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
Cal crear /tmp amb els permisos adequats exactament com s'esmenta a continuació.
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
Ara verifiqueu l'estructura del fitxer 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
Després d'iniciar HDFS i crear '/tmp', però abans d'iniciar el JobTracker, creeu el directori HDFS especificat pel paràmetre 'mapred.system.dir' (per defecte $ {hadoop.tmp.dir}/mapred/system i canvieu el propietari a maped.
sudo -u hdfs hadoop fs -mkdir /tmp/mapred/system sudo -u hdfs hadoop fs -chown mapred:hadoop /tmp/mapred/system
Per iniciar MapReduce: inicieu els serveis TT i 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
A continuació, creeu un directori d'inici per a cada usuari d'hadoop. es recomana que ho feu a NameNode; per exemple.
sudo -u hdfs hadoop fs -mkdir /user/<user> sudo -u hdfs hadoop fs -chown <user> /user/<user>
Nota: on és el nom d'usuari de Linux de cada usuari.
Alternativament, podeu crear el directori d'inici de la següent manera.
sudo -u hdfs hadoop fs -mkdir /user/$USER sudo -u hdfs hadoop fs -chown $USER /user/$USER
Obriu el vostre navegador i escriviu l'URL com a http://ip_address_of_namenode:50070 per accedir a Namenode.
Obriu una altra pestanya al vostre navegador i escriviu l'URL com a http://ip_address_of_jobtracker:50030 per accedir a JobTracker.
Aquest procediment s'ha provat amb èxit a RHEL/CentOS 5.X/6.X. Comenteu a continuació si teniu cap problema amb la instal·lació, us ajudaré amb les solucions.