11 Mart 2018 Pazar

Ubuntu üzerinde multi node hadoop kurulumu

Merhaba,
bu yazımda sizlere "hadoop multi node cluster" kurulumundan bahsedeceğim.  Aslında kurulum açısından single node'dan bir farkı yok. Sadece kurulumdan sonra ağ(network) kısmında ve konfigürasyon  dosyalarında bir kaç değişiklik yaparak dağıtık yapının birbiriyle nasıl konuşacağını belirtmemiz gerekiyor.

Buradaki yapacağımız işlem esasen bir cihazı master diğer bir cihazı ise slave  olarak konfigüre etmektir. Yazıyı hazırlarken ben çalışmamı ubuntu üzerinde yapacağım. Eğer  hadoop dünyasında yeniyseniz bu yazıdaki aynı ortamlarda çalışmanızı yapmanız sizin için de  faydalı olacaktır.

ilk olarak içinde ubuntu işletim sistemi olan iki makineye(master,slave)ihtiyacımız olacağı için bu hazırlığı yapın.

NOT: Ben çalışmamı yaparken VMware üzerinde sanal bir ubuntu işletim sistemi kuracağım. Daha sonra kullanıcı, grup, sshkey oluşturarak  hadoop kurulumunu bu makineye yapacağım. Son olarak ta bu makinenin kopyasını oluşturacağım(slave için). Bu şekilde tekrardan ikinci makinede aynı işlemleri yapmamıza ihtiyaç olmayacaktır.

Ortam ve  makinemiz hazırsa hemen işlemlere başlayalım...

- Hazırladığınız ubuntu makine de hadoop adında bir group birde kullanıcı oluşturun. 
Bu konuda yardıma ihtiyacınız varsa buradaki yazımı inceleyebilirsiniz. Aslında bu işlem zorunlu değil ancak anlatımı ve yetkileri bu kullanıcı ve gruba göre yapacağım için sizlere de bu adımı uygulamanızı öneririm.

Java ve hadoop kurulumunu yapın
Java ve hadoop kurulumu konusunda buradaki yazım size yol gösterebilir.

- Hadoop konfigürasyonunu aşağıdaki adımları takip ederek  yapın
core-site.xml dosyasını açın
 $ sudo vi /usr/local/hadoop/conf/core-site.xml

dosya içeriğine  aşağıdaki satırları ekleyerek FS için hangi adresin kullanılacağını ve temp directory'i belirtin.
 <configuration>
<property>
  <name>fs.default.name</name>
  <value>hdfs://master:9000</value>
</property>
<property>
  <name>hadoop.tmp.dir</name>
  <value>/var/hadoop/hadop-${user.name}</value>
</property>
</configuration>

mapred-site.xml dosyasını açın
$ sudo vi /usr/local/hadoop/conf/mapred-site.xml

dosya içeriğine  aşağıdaki satırları ekleyin.
 <configuration>
<property>
        <name>mapreduce.job.tracker</name>
        <value>master:5431</value>
</property>
</configuration>

hdfs-site.xml dosyasını açın
$ sudo vi /usr/local/hadoop/conf/hdfs-site.xml 

configuration tag lerinin arasına aşağıdaki satırları ekleyerek kaç cihaz ile konuşulacağını belirtin
 <configuration>
<property>
  <name>dfs.replication</name>
  <value>1</value>
</property>
</configuration>

hadoop-env.sh dosyasını açın
 $ sudo vi /usr/local/hadoop/conf/hadoop-env.sh

Dosya içeriğine aşağıdaki satırları ekleyerek JAVA ve HADOOP pathlarini belirtin.
export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64/jre/
export HADOOP_HOME=/usr/local/hadoop
export HADOOP_CONF_DIR=/usr/local/hadoop/conf 

- Hadop'u kurduğumuz ve hadoop'un kullanacağı dizinlerin yetilerini günceleyin
 Aşağıdaki komutları çalıştırarak ilgili hadoop dizinlerinin hadoop kullanıcısının yetkilerine açın.
$ sudo mkdir /var/hadoop
$ sudo chown -R hadoop.hadoop  /var/hadoop
$ sudo chown -R hadoop.hadoop  /usr/local/hadoop/ 


- Her iki makinenin(master ve slave) birbirine SSH bağlantısı yapabilmesi için ssh-key oluşturun 
$ ssh-keygen -t rsa -P ""
$ cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
$ chmod 600 ~/.ssh/authorized_keys 

- Makineden bir kopya daha oluşturun
üstteki işlemlerden  sonra ubuntu makinenin kopyasını(slave için) alın

- Makine isimlerini güncelleme
Bu aşamada mevcut makineyi "master", kopyaladığınızı da "slave1" olarak isimlerini değiştireceğiz

master makine de  isim değişikliği 
 $ hostnamectl set-hostname master

slave makine de  isim değişikliği 
 $ hostnamectl set-hostname slave1

- IP Adreslerini ayarlama 
bu aşamada  master makinesinin IP adresini ve slave1 makinesinin IP adresini static olarak ayarlayın.

master makinenin IP ayarları (192.168.2.100)
 $ sudo vi /etc/network/interfaces 

Dosya içeriği
 auto ens33
iface ens33 inet static
address 192.168.2.100
netmask 255.255.255.0
gateway 192.168.2.1
dns-nameservers 8.8.4.4 8.8.8.8

slave1 adlı  makinenin IP ayarları (192.168.2.101)
$ sudo vi /etc/network/interfaces  

Dosya içeriği
auto ens33
iface ens33 inet static
address 192.168.2.101
netmask 255.255.255.0
gateway 192.168.2.1
dns-nameservers 8.8.4.4 8.8.8.8 

Bu IP adreslerine göre her iki makine deki hosts dosyasını güncelleyin. 
$ sudo vi /etc/hosts  

Dosyaya aşağıdaki satırları ekleyin
 192.168.2.100   master
192.168.2.101   slave1
#192.168.2.102   slave2

- master adlı makinede slave ve master tanımlamalarını yapın.

master makinede hadoop master ve slave dosyalarını güncelleyin. 
 $ vi /usr/local/hadoop/conf/masters 

dosya içerisine aşağıdaki satırı ekleyin(burada master makinenin adını yazıyoruz).
 master

slaves dosyasını açın ve içine slave makinelerin isimlerini yazın
$ vi /usr/local/hadoop/conf/slaves  


dosya içeriği
slave1
#slave2
#slave3
Birden fazla slave makine varsa bu doysa içine alt alta ekleyebilirsiniz.

- Son olarak hadoop'u master makinede ayağa kaldırın
 her iki makineyi reboot edin ve master makinede hadop'u ayağa kaldırın 
$ /usr/local/hadoop/bin/hadoop namenode -format
$ /usr/local/hadoop/bin/start-all.sh

Durumu kontrol etmek için Web browser üzerinden http://192.168.2.100:50070 adresine giderek UI'a bağlanabilirsiniz.

http://192.168.2.100:50070/dfsnodelist.jsp?whatNodes=LIVE adresini ziyaret ederek te aktif node ları listeleyebilirsiniz.

1 yorum:

  1. start-all dosyası mevcut configrusyan yapmadığımız için hata veriyor o kısmıda ekleyebilirmisiniz

    YanıtlayınSil