RHEL/CentOS 6.5'te CDH4 kullanarak Hadoop Multinode Cluster'ı yükleyin


Hadoop büyük verileri işlemek için Apache tarafından geliştirilen açık kaynaklı bir programlama çerçevesidir. Verileri kümedeki tüm veri düğümleri genelinde dağıtımcı bir şekilde depolamak için HDFS (Hadoop Dağıtılmış Dosya Sistemi) kullanır ve verileri işlemek için harita azaltma modelini kullanır.

Namenode (NN), HDFS ve Jobtracker'ı (JT) kontrol eden bir ana arka plan programıdır. ) Mapreduce motoru için ana arka plan programıdır.

Gereksinimler

Bu eğitimde iki CentOS 6.3 VM'si 'ana' ve 'düğüm' kullanıyorum; (ana makine ve düğüm benim ana makine adlarımdır). 'Ana' IP, 172.21.17.175 ve düğüm IP'si ise '172.21.17.188'dir. Aşağıdaki talimatlar aynı zamanda RHEL/CentOS 6.x sürümlerinde de çalışır.

Master'da
[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
Düğümde
[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

DNS kurulumunuz yoksa, öncelikle tüm küme ana bilgisayarlarının '/etc/hosts' dosyasında (her düğümde) bulunduğundan emin olun.

Master'da
[root@master ~]# cat /etc/hosts

172.21.17.175 master
172.21.17.188 node
Düğümde
[root@node ~]# cat /etc/hosts

172.21.17.197 qabox
172.21.17.176 ansible-ground

Hadoop Multinode Cluster'ı CentOS'a Kurmak

Bir kümedeki tüm ana bilgisayarlara (Ana ve Düğüm) CDH4'ü yüklemek için resmi CDH deposunu kullanırız.

Adım 1: CDH Deposunu İndirin

Resmi CDH indirme sayfasına gidin ve CDH4 (yani 4.6) sürümünü edinin veya depoyu indirip yüklemek için aşağıdaki wget komutunu kullanabilirsiniz.

RHEL/CentOS 32-bit'te
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'te
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'ı kurmadan önce sistem mimarinize göre aşağıdaki komutlardan birini çalıştırarak Cloudera Public GPG Key'i repository'nize ekleyin.

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

Adım 2: JobTracker ve NameNode'u kurun

Daha sonra, JobTracker ve NameNode'u Ana sunucuya kurmak ve ayarlamak için aşağıdaki komutu çalıştırın.

[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. Adım: İkincil Ad Düğümünü Kurun

İkincil ad düğümünü ayarlamak için Ana sunucuda tekrar aşağıdaki komutları çalıştırın.

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

Adım 4: Tasktracker ve Datanode'u kurun

Daha sonra, JobTracker, NameNode ve İkincil (veya Beklemedeki) NameNode ana bilgisayarları (bu durumda düğümde) dışındaki tüm küme ana bilgisayarlarında (Node) görev izleyiciyi ve datanode'u kurun.

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

Adım 5: Hadoop İstemcisini Kurun

Hadoop istemcisini ayrı bir makineye kurabilirsiniz (bu durumda ben onu datanode'a kurdum, siz de herhangi bir makineye kurabilirsiniz).

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

Adım 6: HDFS'yi Düğümlere Dağıtın

Şimdi yukarıdaki adımları tamamladıysak hdf'leri dağıtmak için ilerleyelim (tüm düğümlerde yapılacak).

Varsayılan yapılandırmayı /etc/hadoop dizinine kopyalayın ( kümedeki her düğümde).

[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

Özel dizininizi aşağıdaki gibi ayarlamak için alternatives komutunu kullanın (kümedeki her düğümde).

[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

Adım 7: Yapılandırma Dosyalarını Özelleştirme

Şimdi 'core-site.xml' dosyasını açın ve kümedeki her düğümde “fs.defaultFS” dosyasını güncelleyin.

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

Daha sonra kümedeki her düğümde hdfs-site.xml dosyasındaki "dfs.permissions.superusergroup" dosyasını güncelleyin.

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

Not: Lütfen yukarıdaki yapılandırmanın tüm düğümlerde mevcut olduğundan emin olun (bir düğümde yapın ve geri kalanını kopyalamak için scp komutunu çalıştırın) düğümlerin).

Adım 8: Yerel Depolama Dizinlerini Yapılandırma

NameNode'da (Master ve Node'da) 'hdfs-site.xml' dosyasındaki "dfs.name.dir veya dfs.namenode.name.dir" dosyasını güncelleyin. Lütfen değeri vurgulandığı gibi değiştirin.

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

Adım 9: Dizinler Oluşturun ve İzinleri Yönetin

Namenode (Master) ve Datanode (Node) makinesinde dizin yapısı oluşturmak ve kullanıcı izinlerini yönetmek için aşağıdaki komutları uygulayın.

[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

Aşağıdaki komutu vererek Namenode'u (Master'da) biçimlendirin.

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

Adım 10: İkincil NameNode'u Yapılandırma

Aşağıdaki özelliği hdfs-site.xml dosyasına ekleyin ve değeri Master'da gösterildiği gibi değiştirin.

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

Not: Bizim durumumuzda değer ana VM'nin IP adresi olmalıdır.

Şimdi MRv1'i (Harita azaltma sürüm 1) dağıtalım. Değerleri gösterildiği gibi izleyerek 'mapred-site.xml' dosyasını açın.

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

Daha sonra, aşağıdaki scp komutunu kullanarak 'mapred-site.xml' dosyasını düğüm makinesine kopyalayın.

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

Şimdi yerel depolama dizinlerini MRv1 Daemon'ları tarafından kullanılacak şekilde yapılandırın. Tekrar ‘mapred-site.xml’ dosyasını açın ve her bir TaskTracker için aşağıda gösterildiği gibi değişiklikler yapın.

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

mapred-site.xml’ dosyasında bu dizinleri belirttikten sonra dizinleri oluşturmalı ve kümenizdeki her düğümde onlara doğru dosya izinlerini atamalısınız.

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

Adım 10: HDFS'yi başlatın

Şimdi kümedeki her düğümde HDFS'yi başlatmak için aşağıdaki komutu çalıştırın.

[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

Adım 11: HDFS /tmp ve MapReduce /var Dizinlerini oluşturun

Tam olarak aşağıda belirtildiği gibi uygun izinlerle /tmp dosyasını oluşturmak gerekiyor.

[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

Şimdi HDFS Dosya yapısını doğrulayın.

[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'yi başlattıktan ve '/tmp' oluşturduktan sonra, ancak JobTracker'ı başlatmadan önce lütfen 'mapred.system.dir' parametresi tarafından belirtilen HDFS dizinini oluşturun (varsayılan olarak $ {hadoop.tmp) .dir}/mapred/system ve sahibini eşlenmiş olarak değiştirin.

[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

Adım 12: MapReduce'ı başlatın

MapReduce'u başlatmak için: lütfen TT ve JT hizmetlerini başlatın.

Her TaskTracker sisteminde
[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 sisteminde
[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

Daha sonra her Hadoop kullanıcısı için bir giriş dizini oluşturun. bunu NameNode'da yapmanız önerilir; Örneğin.

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

Not: burada her kullanıcının Linux kullanıcı adıdır.

Alternatif olarak, ana dizini aşağıdaki gibi oluşturabilirsiniz.

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

Adım 13: Tarayıcıdan JT, NN UI'yi açın

Namenode'a erişmek için tarayıcınızı açın ve URL'yi http://ip_address_of_namenode:50070 olarak yazın.

Tarayıcınızda başka bir sekme açın ve JobTracker'a erişmek için URL'yi http://ip_address_of_jobtracker:50030 olarak yazın.

Bu prosedür RHEL/CentOS 5.X/6.X'te başarıyla test edilmiştir. Kurulumla ilgili herhangi bir sorunla karşılaşırsanız lütfen aşağıya yorum yapın, çözümler konusunda size yardımcı olacağım.