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