RHEL/CentOS 6.5-ൽ CDH4 ഉപയോഗിച്ച് ഹഡൂപ്പ് മൾട്ടിനോഡ് ക്ലസ്റ്റർ ഇൻസ്റ്റാൾ ചെയ്യുക


വലിയ ഡാറ്റ പ്രോസസ്സ് ചെയ്യുന്നതിനായി അപ്പാച്ചെ വികസിപ്പിച്ചെടുത്ത ഒരു ഓപ്പൺ സോഴ്സ് പ്രോഗ്രാമിംഗ് ചട്ടക്കൂടാണ് ഹഡൂപ്പ്. ക്ലസ്റ്ററിലെ എല്ലാ ഡാറ്റാനോഡുകളിലുമുള്ള ഡാറ്റ ഒരു ഡിസ്ട്രിബ്യൂട്ടീവ് രീതിയിൽ സംഭരിക്കാനും ഡാറ്റ പ്രോസസ്സ് ചെയ്യുന്നതിനുള്ള മോഡൽ മാപ്രഡ്യൂസ് ചെയ്യാനും ഇത് HDFS (ഹഡൂപ്പ് ഡിസ്ട്രിബ്യൂട്ടഡ് ഫയൽ സിസ്റ്റം) ഉപയോഗിക്കുന്നു.

നെയിംനോഡ് (NN) HDFS-നെ നിയന്ത്രിക്കുന്ന ഒരു മാസ്റ്റർ ഡെമൺ ആണ്, Mapreduce എഞ്ചിനുള്ള മാസ്റ്റർ ഡെമൺ ആണ് Jobtracker (JT).

ഈ ട്യൂട്ടോറിയലിൽ ഞാൻ രണ്ട് CentOS 6.3 VM 'മാസ്റ്റർ', 'നോഡ്' എന്നിവ ഉപയോഗിക്കുന്നു. (മാസ്റ്ററും നോഡും എന്റെ ഹോസ്റ്റ് നാമങ്ങളാണ്). ‘മാസ്റ്റർ’ ഐപി 172.21.17.175 ഉം നോഡ് ഐപി ‘172.21.17.188’ ഉം ആണ്. ഇനിപ്പറയുന്ന നിർദ്ദേശങ്ങൾ 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

നിങ്ങൾക്ക് DNS സജ്ജീകരിച്ചിട്ടില്ലെങ്കിൽ, എല്ലാ ക്ലസ്റ്റർ ഹോസ്റ്റുകളും '/etc/hosts' ഫയലിൽ (ഓരോ നോഡിലും) ഉണ്ടെന്ന് ആദ്യം ഉറപ്പാക്കുക.

 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

CentOS-ൽ Hadoop മൾട്ടിനോഡ് ക്ലസ്റ്റർ ഇൻസ്റ്റാൾ ചെയ്യുന്നു

ഒരു ക്ലസ്റ്ററിലെ എല്ലാ ഹോസ്റ്റുകളിലും (മാസ്റ്ററും നോഡും) CDH4 ഇൻസ്റ്റാൾ ചെയ്യാൻ ഞങ്ങൾ ഔദ്യോഗിക CDH റിപ്പോസിറ്ററി ഉപയോഗിക്കുന്നു.

ഔദ്യോഗിക CDH ഡൗൺലോഡ് പേജിലേക്ക് പോയി CDH4 (അതായത് 4.6) പതിപ്പ് എടുക്കുക അല്ലെങ്കിൽ നിങ്ങൾക്ക് ശേഖരം ഡൗൺലോഡ് ചെയ്ത് ഇൻസ്റ്റാൾ ചെയ്യാൻ ഇനിപ്പറയുന്ന wget കമാൻഡ് ഉപയോഗിക്കാം.

# 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

ഹഡൂപ്പ് മൾട്ടിനോഡ് ക്ലസ്റ്റർ ഇൻസ്റ്റാൾ ചെയ്യുന്നതിനുമുമ്പ്, നിങ്ങളുടെ സിസ്റ്റം ആർക്കിടെക്ചർ അനുസരിച്ച് ഇനിപ്പറയുന്ന കമാൻഡുകളിലൊന്ന് പ്രവർത്തിപ്പിച്ച് ക്ലൗഡറ പബ്ലിക് ജിപിജി കീ നിങ്ങളുടെ റിപ്പോസിറ്ററിയിലേക്ക് ചേർക്കുക.

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

അടുത്തതായി, Master സെർവറിൽ JobTracker, NameNode എന്നിവ ഇൻസ്റ്റാൾ ചെയ്യാനും സജ്ജീകരിക്കാനും ഇനിപ്പറയുന്ന കമാൻഡ് പ്രവർത്തിപ്പിക്കുക.

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

വീണ്ടും, സെക്കണ്ടറി നെയിം നോഡ് സജ്ജീകരിക്കുന്നതിന് മാസ്റ്റർ സെർവറിൽ ഇനിപ്പറയുന്ന കമാൻഡുകൾ പ്രവർത്തിപ്പിക്കുക.

 yum clean all 
 yum install hadoop-hdfs-secondarynam

അടുത്തതായി, ജോബ്ട്രാക്കർ, നെയിം നോഡ്, സെക്കൻഡറി (അല്ലെങ്കിൽ സ്റ്റാൻഡ്uബൈ) നെയിം നോഡ് ഹോസ്റ്റുകൾ എന്നിവ ഒഴികെയുള്ള എല്ലാ ക്ലസ്റ്റർ ഹോസ്റ്റുകളിലും (നോഡ്) ടാസ്uക്uട്രാക്കറും ഡാറ്റനോഡും സജ്ജീകരിക്കുക (ഈ സാഹചര്യത്തിൽ നോഡിൽ ).

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

നിങ്ങൾക്ക് ഒരു പ്രത്യേക മെഷീനിൽ ഹഡൂപ്പ് ക്ലയന്റ് ഇൻസ്റ്റാൾ ചെയ്യാൻ കഴിയും (ഈ സാഹചര്യത്തിൽ ഞാൻ ഇത് ഡാറ്റാനോഡിൽ ഇൻസ്റ്റാൾ ചെയ്തിട്ടുണ്ട്, നിങ്ങൾക്ക് ഇത് ഏത് മെഷീനിലും ഇൻസ്റ്റാൾ ചെയ്യാൻ കഴിയും).

 yum install hadoop-client

ഇപ്പോൾ മുകളിലുള്ള ഘട്ടങ്ങൾ പൂർത്തിയാക്കിയാൽ, നമുക്ക് hdfs വിന്യസിക്കാൻ മുന്നോട്ട് പോകാം (എല്ലാ നോഡുകളിലും ചെയ്യേണ്ടത്).

സ്ഥിരസ്ഥിതി കോൺഫിഗറേഷൻ /etc/hadoop ഡയറക്ടറിയിലേക്ക് പകർത്തുക ( ക്ലസ്റ്ററിലെ ഓരോ നോഡിലും ).

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

ഇനിപ്പറയുന്ന രീതിയിൽ നിങ്ങളുടെ ഇഷ്uടാനുസൃത ഡയറക്uടറി സജ്ജീകരിക്കുന്നതിന് ഇതര കമാൻഡ് ഉപയോഗിക്കുക (ക്ലസ്റ്ററിലെ ഓരോ നോഡിലും).

 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

ഇപ്പോൾ 'core-site.xml' ഫയൽ തുറന്ന് ക്ലസ്റ്ററിലെ ഓരോ നോഡിലും fs.defaultFS അപ്ഡേറ്റ് ചെയ്യുക.

 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>

ക്ലസ്റ്ററിലെ ഓരോ നോഡിലും hdfs-site.xml-ൽ അടുത്തതായി “dfs.permissions.superusergroup” അപ്uഡേറ്റ് ചെയ്യുക.

 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>

ശ്രദ്ധിക്കുക: മുകളിലുള്ള കോൺഫിഗറേഷൻ എല്ലാ നോഡുകളിലും ഉണ്ടെന്ന് ഉറപ്പാക്കുക (ഒരു നോഡിൽ ചെയ്യുക, ബാക്കിയുള്ള നോഡുകളിൽ പകർത്താൻ scp പ്രവർത്തിപ്പിക്കുക).

നെയിംനോഡിലെ (മാസ്റ്ററിലും നോഡിലും) 'hdfs-site.xml' എന്നതിൽ dfs.name.dir അല്ലെങ്കിൽ dfs.namenode.name.dir അപ്uഡേറ്റ് ചെയ്യുക. ഹൈലൈറ്റ് ചെയ്തതുപോലെ മൂല്യം മാറ്റുക.

 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>

നെയിംനോഡ് (മാസ്റ്റർ), ഡാറ്റനോഡ് (നോഡ്) മെഷീനിൽ ഡയറക്uടറി ഘടന സൃഷ്uടിക്കുന്നതിനും ഉപയോക്തൃ അനുമതികൾ നിയന്ത്രിക്കുന്നതിനും താഴെയുള്ള കമാൻഡുകൾ എക്uസിക്യൂട്ട് ചെയ്യുക.

 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

ഇനിപ്പറയുന്ന കമാൻഡ് നൽകി നെയിംനോഡ് ഫോർമാറ്റ് ചെയ്യുക (മാസ്റ്ററിൽ).

 sudo -u hdfs hdfs namenode -format

ഇനിപ്പറയുന്ന പ്രോപ്പർട്ടി hdfs-site.xml ഫയലിലേക്ക് ചേർക്കുക, മാസ്റ്ററിൽ കാണിച്ചിരിക്കുന്നതുപോലെ മൂല്യം മാറ്റിസ്ഥാപിക്കുക.

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

ശ്രദ്ധിക്കുക: ഞങ്ങളുടെ കാര്യത്തിൽ മൂല്യം മാസ്റ്റർ വിഎമ്മിന്റെ ഐപി വിലാസമായിരിക്കണം.

ഇനി നമുക്ക് MRv1 വിന്യസിക്കാം (മാപ്പ്-കുറയ്ക്കുക പതിപ്പ് 1). കാണിച്ചിരിക്കുന്നതുപോലെ മൂല്യങ്ങൾ താഴെയുള്ള 'mapred-site.xml' ഫയൽ തുറക്കുക.

 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>

അടുത്തതായി, ഇനിപ്പറയുന്ന scp കമാൻഡ് ഉപയോഗിച്ച് 'mapred-site.xml' ഫയൽ നോഡ് മെഷീനിലേക്ക് പകർത്തുക.

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

MRv1 ഡെമൺസ് ഉപയോഗിക്കുന്നതിനായി ഇപ്പോൾ ലോക്കൽ സ്റ്റോറേജ് ഡയറക്ടറികൾ കോൺഫിഗർ ചെയ്യുക. വീണ്ടും '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' ഫയലിൽ ഈ ഡയറക്uടറികൾ വ്യക്തമാക്കിയ ശേഷം, നിങ്ങൾ ഡയറക്ടറികൾ സൃഷ്uടിക്കുകയും നിങ്ങളുടെ ക്ലസ്റ്ററിലെ ഓരോ നോഡിലും അവയ്uക്ക് ശരിയായ ഫയൽ അനുമതികൾ നൽകുകയും വേണം.

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

ഇപ്പോൾ ക്ലസ്റ്ററിലെ എല്ലാ നോഡിലും HDFS ആരംഭിക്കാൻ താഴെ പറയുന്ന കമാൻഡ് പ്രവർത്തിപ്പിക്കുക.

 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

താഴെ സൂചിപ്പിച്ചതുപോലെ കൃത്യമായ അനുമതികളോടെ /tmp സൃഷ്ടിക്കേണ്ടതുണ്ട്.

 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

ഇപ്പോൾ 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

നിങ്ങൾ HDFS ആരംഭിച്ച് '/tmp' സൃഷ്uടിച്ചതിന് ശേഷം, എന്നാൽ നിങ്ങൾ JobTracker ആരംഭിക്കുന്നതിന് മുമ്പ് ദയവായി 'mapred.system.dir' പാരാമീറ്റർ വ്യക്തമാക്കിയ HDFS ഡയറക്uടറി സൃഷ്uടിക്കുക (സ്വതവേ $ {hadoop.tmp.dir}/mapred/system ഒപ്പം ഉടമയെ മാപ്പ് ചെയ്തതിലേക്ക് മാറ്റുക.

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

MapReduce ആരംഭിക്കാൻ : ദയവായി TT, 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

അടുത്തതായി, ഓരോ ഹഡൂപ്പ് ഉപയോക്താവിനും ഒരു ഹോം ഡയറക്ടറി സൃഷ്ടിക്കുക. നിങ്ങൾ ഇത് NameNode-ൽ ചെയ്യാൻ ശുപാർശ ചെയ്യുന്നു; ഉദാഹരണത്തിന്.

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

ശ്രദ്ധിക്കുക: ഓരോ ഉപയോക്താവിന്റെയും Linux ഉപയോക്തൃനാമം ആണ്.

പകരമായി, നിങ്ങൾക്ക് ഇനിപ്പറയുന്ന രീതിയിൽ ഹോം ഡയറക്ടറി ഉണ്ടാക്കാം.

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

Namenode ആക്സസ് ചെയ്യുന്നതിന് നിങ്ങളുടെ ബ്രൗസർ തുറന്ന് url http://ip_address_of_namenode:50070 എന്ന് ടൈപ്പ് ചെയ്യുക.

JobTracker ആക്uസസ് ചെയ്യാൻ നിങ്ങളുടെ ബ്രൗസറിൽ മറ്റൊരു ടാബ് തുറന്ന് url http://ip_address_of_jobtracker:50030 എന്ന് ടൈപ്പ് ചെയ്യുക.

ഈ നടപടിക്രമം RHEL/CentOS 5.X/6.X-ൽ വിജയകരമായി പരീക്ഷിച്ചു. ഇൻസ്റ്റാളേഷനിൽ എന്തെങ്കിലും പ്രശ്നങ്ങൾ നേരിടുകയാണെങ്കിൽ താഴെ കമന്റ് ചെയ്യുക, പരിഹാരങ്ങൾക്കായി ഞാൻ നിങ്ങളെ സഹായിക്കും.