I-install ang Hadoop Multinode Cluster gamit ang CDH4 sa RHEL/CentOS 6.5


Ang Hadoop usa ka open source programing framework nga gihimo sa apache aron maproseso ang dagkong datos. Gigamit niini ang HDFS (Hadoop Distributed File System) aron tipigan ang datos sa tanang datanodes sa cluster sa distributive nga paagi ug mapreduce nga modelo aron maproseso ang datos.

Ang Namenode (NN) kay master daemon nga nagkontrol sa HDFS ug Jobtracker (JT) kay master daemon para sa mapreduce nga makina.

Sa kini nga panudlo gigamit nako ang duha nga CentOS 6.3 VMs 'master' ug 'node' viz. (master ug node ang akong mga hostname). Ang 'master' IP mao ang 172.21.17.175 ug ang node IP mao ang '172.21.17.188'. Ang mosunod nga mga instruksyon magamit usab sa RHEL/CentOS 6.x nga mga bersyon.

 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

Siguruha una nga ang tanan nga mga cluster host naa sa '/etc/hosts' file (sa matag node), kung wala kay DNS set up.

 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

Pag-instalar sa Hadoop Multinode Cluster sa CentOS

Gigamit namo ang opisyal nga CDH repository aron i-install ang CDH4 sa tanang mga host (Master ug Node) sa usa ka cluster.

Lakaw ngadto sa opisyal nga pahina sa pag-download sa CDH ug kuhaa ang bersyon sa CDH4 (ie 4.6) o mahimo nimong gamiton ang pagsunod sa wget command aron i-download ang repository ug i-install kini.

# 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

Sa dili pa i-install ang Hadoop Multinode Cluster, idugang ang Cloudera Public GPG Key sa imong repository pinaagi sa pagpadagan sa usa sa mosunod nga command sumala sa imong system architecture.

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

Sunod, padagana ang mosunod nga sugo aron i-install ug i-setup ang JobTracker ug NameNode sa Master server.

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

Pag-usab, padagana ang mosunod nga mga sugo sa Master server aron ma-setup ang secondary name node.

 yum clean all 
 yum install hadoop-hdfs-secondarynam

Sunod, i-setup ang tasktracker & datanode sa tanang cluster hosts (Node) gawas sa JobTracker, NameNode, ug Secondary (o Standby) NameNode hosts (sa node niini nga kaso).

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

Mahimo nimong i-install ang kliyente sa Hadoop sa usa ka bulag nga makina (sa kini nga kaso gi-install ko kini sa datanode mahimo nimo kini i-install sa bisan unsang makina).

 yum install hadoop-client

Karon kung nahuman na kita sa mga lakang sa ibabaw, magpadayon kita sa pag-deploy sa hdfs (nga buhaton sa tanan nga mga node).

Kopyaha ang default configuration ngadto sa /etc/hadoop directory ( sa matag node sa cluster ).

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

Gamita ang mga alternatibo nga sugo aron itakda ang imong custom nga direktoryo, sama sa mosunod (sa matag node sa 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
 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

Karon ablihi ang 'core-site.xml' nga file ug i-update ang fs.defaultFS sa matag node sa cluster.

 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>

Sunod nga update dfs.permissions.superusergroup sa hdfs-site.xml sa matag node sa cluster.

 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>

Mubo nga sulat: Palihog siguroha nga, ang naa sa ibabaw nga configuration anaa sa tanang node (buhata sa usa ka node ug padagana ang scp aron kopyahon sa ubang mga node ).

I-update ang dfs.name.dir o dfs.namenode.name.dir sa 'hdfs-site.xml' sa NameNode (sa Master ug Node). Palihug usba ang bili ingon nga gipasiugda.

 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>

Ipatuman ang mga sugo sa ubos aron makahimo og istruktura sa direktoryo ug pagdumala sa mga permiso sa user sa Namenode (Master) ug Datanode (Node) nga makina.

 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

I-format ang Namenode (sa Master), pinaagi sa pag-isyu sa mosunod nga sugo.

 sudo -u hdfs hdfs namenode -format

Idugang ang mosunod nga kabtangan sa hdfs-site.xml file ug ilisan ang bili sama sa gipakita sa Agalon.

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

Hinumdomi: Sa among kaso nga kantidad kinahanglan nga ip address sa master VM.

Karon atong i-deploy ang MRv1 ( Map-reduce version 1). Ablihi ang 'mapred-site.xml' file nga nagsunod sa mga kantidad sama sa gipakita.

 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>

Sunod, kopyaha ang 'mapred-site.xml' nga file sa node machine gamit ang mosunod nga scp command.

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

Karon i-configure ang lokal nga mga direktoryo sa pagtipig aron magamit sa MRv1 Daemons. Pag-abli pag-usab ang 'mapred-site.xml' nga file ug paghimo og mga pagbag-o sama sa gipakita sa ubos alang sa matag TaskTracker.

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

Human sa pagpiho niini nga mga direktoryo sa 'mapred-site.xml' nga payl, kinahanglan nimong himoon ang mga direktoryo ug i-assign ang hustong permiso sa file ngadto kanila sa matag node sa imong cluster.

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

Karon padagana ang mosunod nga sugo aron masugdan ang HDFS sa matag node sa cluster.

 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

Kinahanglan nga maghimo /tmp nga adunay husto nga pagtugot sama sa gihisgutan sa ubos.

 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

Karon pamatud-i ang istruktura sa HDFS File.

 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

Human nimo sugdan ang HDFS ug paghimo og '/tmp', apan sa dili ka pa magsugod sa JobTracker palihog paghimo sa direktoryo sa HDFS nga gipiho sa parameter nga 'mapred.system.dir' (sa default $ {hadoop.tmp.dir}/mapred/system ug ilisan ang tag-iya sa mapa.

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

Sa pagsugod sa MapReduce : palihog sugdi ang mga serbisyo sa TT ug 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

Sunod, paghimo usa ka direktoryo sa balay alang sa matag tiggamit sa hadoop. girekomendar nga buhaton nimo kini sa NameNode; pananglitan.

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

Pahinumdom: diin ang mao ang Linux username sa matag user.

Sa laing paagi, mahimo nimong buhaton ang direktoryo sa balay sama sa mosunod.

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

Ablihi ang imong browser ug i-type ang url nga http://ip_address_of_namenode:50070 para ma-access ang Namenode.

Ablihi ang laing tab sa imong browser ug i-type ang url nga http://ip_address_of_jobtracker:50030 para ma-access ang JobTracker.

Kini nga pamaagi malampuson nga gisulayan sa RHEL/CentOS 5.X/6.X. Palihug pagkomento sa ubos kung nag-atubang ka sa bisan unsang mga isyu sa pag-install, tabangan ko ikaw sa mga solusyon.