Hadoop - Çok Düğümlü Küme

Bu bölüm, dağıtılmış bir ortamda Hadoop Multi-Node kümesinin kurulumunu açıklamaktadır.

Tüm küme gösterilemediğinden, Hadoop küme ortamını üç sistem (bir ana ve iki yardımcı) kullanarak açıklıyoruz; IP adresleri aşağıda verilmiştir.

  • Hadoop Master: 192.168.1.15 (hadoop-master)
  • Hadoop Slave: 192.168.1.16 (hadoop-slave-1)
  • Hadoop Slave: 192.168.1.17 (hadoop-slave-2)

Hadoop Multi-Node küme kurulumuna sahip olmak için aşağıda verilen adımları izleyin.

Java yükleme

Java, Hadoop'un temel ön koşuludur. Öncelikle, sisteminizde java varlığını “java sürümü” kullanarak doğrulamalısınız. Java sürüm komutunun sözdizimi aşağıda verilmiştir.

$ java -version

Her şey yolunda giderse, size aşağıdaki çıktıyı verecektir.

java version "1.7.0_71" 
Java(TM) SE Runtime Environment (build 1.7.0_71-b13) 
Java HotSpot(TM) Client VM (build 25.0-b02, mixed mode)

Sisteminizde java yüklü değilse, java yüklemek için verilen adımları izleyin.

Aşama 1

Aşağıdaki bağlantıyı www.oracle.com ziyaret ederek java'yı (JDK <en son sürüm> - X64.tar.gz) indirin

Sonra jdk-7u71-linux-x64.tar.gz sisteminize indirilecektir.

Adım 2

Genellikle indirilen java dosyasını İndirilenler klasöründe bulabilirsiniz. Doğrulayın vejdk-7u71-linux-x64.gz aşağıdaki komutları kullanarak dosya.

$ cd Downloads/
$ ls
jdk-7u71-Linux-x64.gz

$ tar zxf jdk-7u71-Linux-x64.gz
$ ls
jdk1.7.0_71 jdk-7u71-Linux-x64.gz

Aşama 3

Java'yı tüm kullanıcıların kullanımına açmak için, onu "/ usr / local /" konumuna taşımalısınız. Kökü açın ve aşağıdaki komutları yazın.

$ su
password:
# mv jdk1.7.0_71 /usr/local/
# exit

4. adım

Kurulum için PATH ve JAVA_HOME değişkenler, aşağıdaki komutları ekleyin ~/.bashrc dosya.

export JAVA_HOME=/usr/local/jdk1.7.0_71
export PATH=PATH:$JAVA_HOME/bin

Şimdi doğrulayın java -versionterminalden komut yukarıda açıklandığı gibi. Yukarıdaki işlemi takip edin ve tüm küme düğümlerinize java yükleyin.

Kullanıcı Hesabı Oluşturma

Hadoop kurulumunu kullanmak için hem ana hem de bağımlı sistemlerde bir sistem kullanıcı hesabı oluşturun.

# useradd hadoop 
# passwd hadoop

Düğümleri haritalama

Düzenlemelisin hosts dosyasında /etc/ tüm düğümlerdeki klasörler, her sistemin IP adresini ve ardından ana bilgisayar adlarını belirtin.

# vi /etc/hosts
enter the following lines in the /etc/hosts file.

192.168.1.109 hadoop-master 
192.168.1.145 hadoop-slave-1 
192.168.56.1 hadoop-slave-2

Anahtar Tabanlı Oturum Açmayı Yapılandırma

Her düğümde ssh'yi parola istemeden birbirleriyle iletişim kurabilecekleri şekilde kurun.

# su hadoop 
$ ssh-keygen -t rsa 
$ ssh-copy-id -i ~/.ssh/id_rsa.pub tutorialspoint@hadoop-master 
$ ssh-copy-id -i ~/.ssh/id_rsa.pub hadoop_tp1@hadoop-slave-1 
$ ssh-copy-id -i ~/.ssh/id_rsa.pub hadoop_tp2@hadoop-slave-2 
$ chmod 0600 ~/.ssh/authorized_keys 
$ exit

Hadoop'u Yükleme

Ana sunucuda, aşağıdaki komutları kullanarak Hadoop'u indirin ve kurun.

# mkdir /opt/hadoop 
# cd /opt/hadoop/ 
# wget http://apache.mesi.com.ar/hadoop/common/hadoop-1.2.1/hadoop-1.2.0.tar.gz 
# tar -xzf hadoop-1.2.0.tar.gz 
# mv hadoop-1.2.0 hadoop
# chown -R hadoop /opt/hadoop 
# cd /opt/hadoop/hadoop/

Hadoop'u Yapılandırma

Aşağıdaki değişiklikleri yaparak Hadoop sunucusunu yapılandırmanız gerekmektedir.

core-site.xml

core-site.xml dosyasını açın ve aşağıda gösterildiği gibi düzenleyin.

<configuration>
   <property> 
      <name>fs.default.name</name> 
      <value>hdfs://hadoop-master:9000/</value> 
   </property> 
   <property> 
      <name>dfs.permissions</name> 
      <value>false</value> 
   </property> 
</configuration>

hdfs-site.xml

hdfs-site.xml dosyasını açın ve aşağıda gösterildiği gibi düzenleyin.

<configuration>
   <property> 
      <name>dfs.data.dir</name> 
      <value>/opt/hadoop/hadoop/dfs/name/data</value> 
      <final>true</final> 
   </property> 

   <property> 
      <name>dfs.name.dir</name> 
      <value>/opt/hadoop/hadoop/dfs/name</value> 
      <final>true</final> 
   </property> 

   <property> 
      <name>dfs.replication</name> 
      <value>1</value> 
   </property> 
</configuration>

mapred-site.xml

mapred-site.xml dosyasını açın ve aşağıda gösterildiği gibi düzenleyin.

<configuration>
   <property> 
      <name>mapred.job.tracker</name> 
      <value>hadoop-master:9001</value> 
   </property> 
</configuration>

hadoop-env.sh

hadoop-env.sh JAVA_HOME, HADOOP_CONF_DIR ve HADOOP_OPTS dosyasını aşağıda gösterildiği gibi düzenleyin.

Note - JAVA_HOME'u sistem yapılandırmanıza göre ayarlayın.

export JAVA_HOME=/opt/jdk1.7.0_17
export HADOOP_OPTS=-Djava.net.preferIPv4Stack=true
export HADOOP_CONF_DIR=/opt/hadoop/hadoop/conf

Hadoop'u Bağımlı Sunuculara Kurma

Verilen komutları izleyerek Hadoop'u tüm bağımlı sunuculara kurun.

# su hadoop 
$ cd /opt/hadoop 
$ scp -r hadoop hadoop-slave-1:/opt/hadoop 
$ scp -r hadoop hadoop-slave-2:/opt/hadoop

Ana Sunucuda Hadoop'u Yapılandırma

Ana sunucuyu açın ve verilen komutları izleyerek yapılandırın.

# su hadoop 
$ cd /opt/hadoop/hadoop

Ana Düğümü Yapılandırma

$ vi etc/hadoop/masters

hadoop-master

Slave Düğümünü Yapılandırma

$ vi etc/hadoop/slaves

hadoop-slave-1 
hadoop-slave-2

Hadoop Master'da Ad Düğümünü Biçimlendir

# su hadoop 
$ cd /opt/hadoop/hadoop 
$ bin/hadoop namenode –format
11/10/14 10:58:07 INFO namenode.NameNode: STARTUP_MSG:
/************************************************************ 
STARTUP_MSG: Starting NameNode 
STARTUP_MSG: host = hadoop-master/192.168.1.109 
STARTUP_MSG: args = [-format] 
STARTUP_MSG: version = 1.2.0 
STARTUP_MSG: build = https://svn.apache.org/repos/asf/hadoop/common/branches/branch-1.2 -r 1479473;
compiled by 'hortonfo' on Mon May 6 06:59:37 UTC 2013 
STARTUP_MSG: java = 1.7.0_71 

************************************************************/
11/10/14 10:58:08 INFO util.GSet: Computing capacity for map BlocksMap
editlog=/opt/hadoop/hadoop/dfs/name/current/edits
………………………………………………….
………………………………………………….
…………………………………………………. 
11/10/14 10:58:08 INFO common.Storage: Storage directory 
/opt/hadoop/hadoop/dfs/name has been successfully formatted.
11/10/14 10:58:08 INFO namenode.NameNode: 
SHUTDOWN_MSG:
/************************************************************
SHUTDOWN_MSG: Shutting down NameNode at hadoop-master/192.168.1.15
************************************************************/

Hadoop Hizmetlerini Başlatma

Aşağıdaki komut, Hadoop-Master üzerindeki tüm Hadoop hizmetlerini başlatmaktır.

$ cd $HADOOP_HOME/sbin
$ start-all.sh

Hadoop Kümesine Yeni Bir DataNode Ekleme

Aşağıda bir Hadoop kümesine yeni düğümler eklemek için izlenecek adımlar verilmiştir.

Ağ oluşturma

Bazı uygun ağ yapılandırmasıyla mevcut bir Hadoop kümesine yeni düğümler ekleyin. Aşağıdaki ağ yapılandırmasını varsayın.

Yeni düğüm Yapılandırması için -

IP address : 192.168.1.103 
netmask : 255.255.255.0
hostname : slave3.in

Kullanıcı ve SSH Erişimi Ekleme

Kullanıcı Ekle

Yeni bir düğümde, "hadoop" kullanıcısını ekleyin ve aşağıdaki komutları kullanarak Hadoop kullanıcısının şifresini "hadoop123" veya istediğiniz herhangi bir şeye ayarlayın.

useradd hadoop
passwd hadoop

Master'dan yeni slave'e şifresiz bağlantı kurun.

Master üzerinde aşağıdakileri yürütün

mkdir -p $HOME/.ssh 
chmod 700 $HOME/.ssh 
ssh-keygen -t rsa -P '' -f $HOME/.ssh/id_rsa 
cat $HOME/.ssh/id_rsa.pub >> $HOME/.ssh/authorized_keys 
chmod 644 $HOME/.ssh/authorized_keys
Copy the public key to new slave node in hadoop user $HOME directory
scp $HOME/.ssh/id_rsa.pub [email protected]:/home/hadoop/

Aşağıdakileri köle üzerinde yürütün

Hadoop'a giriş yapın. Değilse, hadoop kullanıcısına giriş yapın.

su hadoop ssh -X [email protected]

Genel anahtarın içeriğini dosyaya kopyalayın "$HOME/.ssh/authorized_keys" ve ardından aşağıdaki komutları uygulayarak bunun iznini değiştirin.

cd $HOME
mkdir -p $HOME/.ssh 
chmod 700 $HOME/.ssh
cat id_rsa.pub >>$HOME/.ssh/authorized_keys 
chmod 644 $HOME/.ssh/authorized_keys

Ana makineden ssh oturumunu kontrol edin. Şimdi, ana düğümden bir şifre olmadan yeni düğüme ssh yapıp yapamayacağınızı kontrol edin.

ssh [email protected] or hadoop@slave3

Yeni Düğümün Ana Bilgisayar Adını Ayarlayın

Ana bilgisayar adını dosyada ayarlayabilirsiniz /etc/sysconfig/network

On new slave3 machine

NETWORKING = yes 
HOSTNAME = slave3.in

Değişiklikleri etkili kılmak için, ya makineyi yeniden başlatın ya da ana bilgisayar adı komutunu ilgili ana bilgisayar adına sahip yeni bir makinede çalıştırın (yeniden başlatma iyi bir seçenektir).

Slave3 düğümlü makinede -

hostname slave3.in

Güncelleme /etc/hosts aşağıdaki satırlara sahip kümenin tüm makinelerinde -

192.168.1.102 slave3.in slave3

Şimdi IP'ye çözülüp çözülmediğini kontrol etmek için makineye ana bilgisayar adlarıyla ping atmayı deneyin.

Yeni düğüm makinesinde -

ping master.in

DataNode'u Yeni Düğümde Başlatın

Datanode arka planını manuel olarak başlatın. $HADOOP_HOME/bin/hadoop-daemon.sh script. Otomatik olarak ana sunucu (NameNode) ile iletişime geçecek ve kümeye katılacaktır. Yeni düğümü ana sunucudaki conf / slaves dosyasına da eklemeliyiz. Komut dosyası tabanlı komutlar yeni düğümü tanıyacaktır.

Yeni düğümde oturum açın

su hadoop or ssh -X [email protected]

Aşağıdaki komutu kullanarak yeni eklenen bir bağımlı düğümde HDFS'yi başlatın

./bin/hadoop-daemon.sh start datanode

Yeni bir düğümde jps komutunun çıktısını kontrol edin. Aşağıdaki gibi görünüyor.

$ jps
7141 DataNode
10312 Jps

DataNode'u Hadoop Kümesinden Kaldırma

Bir kümeden bir düğümü çalışırken herhangi bir veri kaybı olmadan anında kaldırabiliriz. HDFS, bir düğümü kaldırmanın güvenli bir şekilde gerçekleştirilmesini sağlayan bir hizmet dışı bırakma özelliği sağlar. Kullanmak için aşağıda verilen adımları izleyin -

Adım 1 - Master için oturum açın

Hadoop'un kurulu olduğu ana makine kullanıcısında oturum açın.

$ su hadoop

Adım 2 - Küme yapılandırmasını değiştirin

Kümeyi başlatmadan önce bir dışlama dosyası yapılandırılmalıdır. Dfs.hosts.exclude adlı bir anahtar ekleyin.$HADOOP_HOME/etc/hadoop/hdfs-site.xmldosya. Bu anahtarla ilişkilendirilen değer, HDFS'ye bağlanmasına izin verilmeyen makinelerin bir listesini içeren NameNode'un yerel dosya sistemindeki bir dosyanın tam yolunu sağlar.

Örneğin, bu satırları etc/hadoop/hdfs-site.xml dosya.

<property> 
   <name>dfs.hosts.exclude</name> 
   <value>/home/hadoop/hadoop-1.2.1/hdfs_exclude.txt</value> 
   <description>DFS exclude</description> 
</property>

Adım 3 - Hizmetten çıkarılacak ana bilgisayarları belirleyin

Hizmetten çıkarılacak her makine, her satırda bir alan adı olacak şekilde hdfs_exclude.txt ile tanımlanan dosyaya eklenmelidir. Bu onların NameNode'a bağlanmasını engelleyecektir. İçeriği"/home/hadoop/hadoop-1.2.1/hdfs_exclude.txt" DataNode2'yi kaldırmak istiyorsanız dosyası aşağıda gösterilmektedir.

slave2.in

Adım 4 - Yapılandırmayı yeniden yüklemeye zorlayın

Komutu çalıştırın "$HADOOP_HOME/bin/hadoop dfsadmin -refreshNodes" tırnak işaretleri olmadan.

$ $HADOOP_HOME/bin/hadoop dfsadmin -refreshNodes

Bu, NameNode'u, yeni güncellenen 'dışlananlar' dosyası da dahil olmak üzere yapılandırmasını yeniden okumaya zorlar. Belirli bir süre boyunca düğümleri devre dışı bırakarak, her düğümün bloklarının etkin kalması planlanan makinelere kopyalanması için süre tanır.

Açık slave2.injps komut çıktısını kontrol edin. Bir süre sonra DataNode işleminin otomatik olarak kapatıldığını göreceksiniz.

Adım 5 - Düğümleri kapatın

Hizmet dışı bırakma süreci tamamlandıktan sonra, hizmet dışı bırakılan donanım bakım için güvenli bir şekilde kapatılabilir. Devre dışı bırakma durumunu kontrol etmek için dfsadmin'e rapor komutunu çalıştırın. Aşağıdaki komut, devreden çıkarma düğümünün ve kümeye bağlı düğümlerin durumunu açıklayacaktır.

$ $HADOOP_HOME/bin/hadoop dfsadmin -report

Adım 6 - Düzenleme dosyayı tekrar dışlar

Makineler kullanımdan kaldırıldıktan sonra, 'dışlananlar' dosyasından kaldırılabilirler. Koşu"$HADOOP_HOME/bin/hadoop dfsadmin -refreshNodes"tekrar dışlananlar dosyasını tekrar Ad Düğümüne okuyacaktır; Bakım tamamlandıktan sonra DataNode'ların kümeye yeniden katılmasına izin verme veya kümede yeniden ek kapasite gerekli, vb.

Special Note- Yukarıdaki işlem izleniyorsa ve görev izleyici işlemi düğümde hala çalışıyorsa, kapatılması gerekir. Bunun bir yolu, yukarıdaki adımlarda yaptığımız gibi makinenin bağlantısını kesmektir. Kaptan süreci otomatik olarak tanıyacak ve öldüğünü ilan edecek. Görev izleyiciyi kaldırmak için aynı işlemi izlemeye gerek yoktur, çünkü DataNode ile karşılaştırıldığında çok önemli DEĞİLDİR. DataNode, herhangi bir veri kaybı olmadan güvenle kaldırmak istediğiniz verileri içerir.

Görev izleyici, herhangi bir zamanda aşağıdaki komutla anında çalıştırılabilir / kapatılabilir.

$ $HADOOP_HOME/bin/hadoop-daemon.sh stop tasktracker
$HADOOP_HOME/bin/hadoop-daemon.sh start tasktracker