ຕິດຕັ້ງ Hadoop Multinode Cluster ໂດຍໃຊ້ CDH4 ໃນ RHEL/CentOS 6.5


Hadoop ແມ່ນໂຄງຮ່າງການຂຽນໂປແກຼມເປີດທີ່ພັດທະນາໂດຍ apache ເພື່ອປະມວນຜົນຂໍ້ມູນໃຫຍ່. ມັນໃຊ້ HDFS (ລະບົບເອກະສານແຈກຢາຍແຈກຢາຍເອກະສານ Hadoop) ເພື່ອເກັບຂໍ້ມູນທົ່ວທຸກຂໍ້ມູນໃນກຸ່ມທີ່ເປັນຮູບແບບແຈກຢາຍແລະຮູບແບບ mapreduce ເພື່ອປະມວນຜົນຂໍ້ມູນ.

Namenode (NN) ແມ່ນ daemon ຕົ້ນສະບັບທີ່ຄວບຄຸມ HDFS ແລະ Jobtracker (JT) ແມ່ນ daemon ຕົ້ນສະບັບສໍາລັບເຄື່ອງຈັກ mapreduce.

ໃນບົດແນະ ນຳ ນີ້ຂ້ອຍໃຊ້ສອງ CentOS 6.3 VMs 'master' ແລະ 'node' viz. (ຕົ້ນສະບັບແລະ node ແມ່ນ hostnames ຂອງຂ້ອຍ). IP ຕົ້ນສະບັບແມ່ນ 172.21.17.175 ແລະ IP node ແມ່ນ '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

ທຳ ອິດໃຫ້ແນ່ໃຈວ່າບັນດາກຸ່ມໂຮມທັງ ໝົດ ແມ່ນຢູ່ໃນເອກະສານ ‘/ etc/hosts’ (ຢູ່ໃນແຕ່ລະຂໍ້), ຖ້າທ່ານບໍ່ໄດ້ຕັ້ງ 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

ການຕິດຕັ້ງກຸ່ມ Hadoop Multinode ໃນ CentOS

ພວກເຮົາໃຊ້ຫໍສະ ໝຸດ CDH ຢ່າງເປັນທາງການເພື່ອຕິດຕັ້ງ CDH4 ໃນທຸກໂຮດ (Master ແລະ Node) ໃນກຸ່ມ.

ໄປທີ່ ໜ້າ ດາວໂຫລດ CDH ຢ່າງເປັນທາງການແລ້ວຈັບເອົາ CDH4 (i.e. 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

ກ່ອນທີ່ຈະຕິດຕັ້ງ 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

ຕໍ່ໄປ, ດຳ ເນີນການ ຄຳ ສັ່ງຕໍ່ໄປນີ້ເພື່ອຕິດຕັ້ງແລະຕັ້ງ JobTracker ແລະ NameNode ເທິງ Master server.

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

ອີກເທື່ອຫນຶ່ງ, ດໍາເນີນການຄໍາສັ່ງຕໍ່ໄປນີ້ໃນເຄື່ອງແມ່ຂ່າຍ Master ເພື່ອຕັ້ງ node ຊື່ມັດທະຍົມ.

 yum clean all 
 yum install hadoop-hdfs-secondarynam

ຕໍ່ໄປ, ຕັ້ງຄ່າ tasktracker & datanode ໃສ່ທຸກໂຮດ cluster (Node) ຍົກເວັ້ນ JobTracker, NameNode, ແລະ Secondary (ຫຼື Standby) ຊື່ NameNode (ຢູ່ໃນ node ໃນກໍລະນີນີ້).

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

ທ່ານສາມາດຕິດຕັ້ງລູກຄ້າ Hadoop ໃນເຄື່ອງແຍກຕ່າງຫາກ (ໃນກໍລະນີນີ້ຂ້ອຍໄດ້ຕິດຕັ້ງມັນຢູ່ໃນ 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

ໃຊ້ ຄຳ ສັ່ງທາງເລືອກເພື່ອ ກຳ ນົດໄດເລກະທໍລີທີ່ ກຳ ຫນົດເອງ, ດັ່ງຕໍ່ໄປນີ້ (ໃນແຕ່ລະ node ໃນ 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

ຕອນນີ້ເປີດ '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>

ການປັບປຸງຕໍ່ໄປ“ dfs.permissions.superusergroup” ໃນ hdfs-site.xml ໃນແຕ່ລະຂໍ້ໃນກຸ່ມ.

 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>

ໝາຍ ເຫດ: ກະລຸນາກວດສອບໃຫ້ແນ່ໃຈວ່າ, ການຕັ້ງຄ່າຂ້າງເທິງນີ້ແມ່ນມີຢູ່ເທິງທຸກໆ node (ເຮັດຢູ່ເທິງ node ດຽວແລະ run scp ເພື່ອ copy ໃສ່ສ່ວນທີ່ເຫຼືອຂອງ node).

ປັບປຸງ“ dfs.name.dir ຫຼື dfs.namenode.name.dir” ໃນ 'hdfs-site.xml' ໃນ NameNode (ໃນ Master ແລະ Node). ກະລຸນາປ່ຽນຄ່າຕາມທີ່ໄດ້ສະແດງ.

 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>

ປະຕິບັດຄໍາສັ່ງຂ້າງລຸ່ມນີ້ເພື່ອສ້າງໂຄງສ້າງໄດເລກະທໍລີແລະຈັດການສິດຂອງຜູ້ໃຊ້ໃນເຄື່ອງ Namenode (Master) ແລະ 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

ຈັດຮູບແບບ Namenode (ຕາມ Master) ໂດຍອອກ ຄຳ ສັ່ງຕໍ່ໄປນີ້.

 sudo -u hdfs hdfs namenode -format

ຕື່ມຄຸນສົມບັດດັ່ງຕໍ່ໄປນີ້ໃສ່ແຟ້ມ 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' ແຟ້ມຄ່າຕາມຄ່າຕາມທີ່ສະແດງໄວ້.

 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>

ຕໍ່ໄປ, ສຳ ເນົາເອກະສານ ‘mapred-site.xml’ ໃສ່ເຄື່ອງ node ໂດຍໃຊ້ ຄຳ ສັ່ງ scp ຕໍ່ໄປນີ້.

 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’, ທ່ານຕ້ອງສ້າງບັນດາໄດເລກະທໍລີແລະແຕ່ງຕັ້ງເອກະສານອະນຸຍາດທີ່ຖືກຕ້ອງໃຫ້ເຂົາເຈົ້າໃນແຕ່ລະ node ໃນກຸ່ມຂອງທ່ານ.

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 ໃນທຸກໆ node ໃນ 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

ມັນຈໍາເປັນຕ້ອງສ້າງ/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 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

ຫຼັງຈາກທີ່ທ່ານເລີ່ມຕົ້ນ HDFS ແລະສ້າງ '/ tmp', ແຕ່ກ່ອນທີ່ທ່ານຈະເລີ່ມ JobTracker ກະລຸນາສ້າງໄດເລກະທໍລີ HDFS ທີ່ລະບຸໂດຍພາລາມິເຕີ 'mapred.system.dir' (ໂດຍຄ່າເລີ່ມຕົ້ນ & # 36 {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

ຕໍ່ໄປ, ສ້າງໄດເລກະທໍລີຢູ່ເຮືອນ ສຳ ລັບແຕ່ລະຄົນທີ່ໃຊ້ hadoop. ແນະ ນຳ ໃຫ້ທ່ານເຮັດໃນ 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

ເປີດ browser ຂອງທ່ານແລະພິມ url ເປັນ http:// ip_address_of_namenode: 50070 ເພື່ອເຂົ້າຫາ Namenode.

ເປີດແທັບອື່ນໃນ browser ຂອງທ່ານແລະພິມ url ທີ່ http:// ip_address_of_jobtracker: 50030 ເພື່ອເຂົ້າຫາ JobTracker.

ຂັ້ນຕອນນີ້ໄດ້ຖືກທົດສອບຢ່າງ ສຳ ເລັດຜົນໃນ RHEL/CentOS 5.X/6.X. ກະລຸນາໃຫ້ ຄຳ ເຫັນຂ້າງລຸ່ມນີ້ຖ້າທ່ານປະສົບບັນຫາໃດໆກ່ຽວກັບການຕິດຕັ້ງ, ຂ້າພະເຈົ້າຈະຊ່ວຍທ່ານແກ້ໄຂບັນຫາ.