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.