Linux Mint 19 Üzerine Apache Hadoop 3.1.1 Kurulumu

title

Merhabalar, bu yazımızda sizlere Linux Mint/Ubuntu sanal makinesi üzerine Hadoop 3.1.1 kurulumunu anlatacağız. Single Node Cluster olacak şekilde kurulum yapacağız. Diğer bir deyişle Hadoop Cluster’ı tek bir makine üzerine kuracağız.

Henüz sanal makineniz yok ise : VmWare Workstation 15 ile Linux Mint 19 Kurulumu

Sanal makineniz var ama Java kurulu değil ise : Linux Ortamında JDK 8 Kurulumu

yazılarını takip ederek ön gereksinimleri sağlayabilirsiniz.

Genel olarak Hadoop kurulumu yapacak olduğunuzda gerekli ön koşullar şunlardır:

1. Linux Mint 19 64-bit (Sanal Makine)
2. Jdk 1.8′ in kurulu olması

Java birincil gereksinimdir . O yüzden Java’nın makinenize kurulu olduğundan emin olmalısınız. Bir önceki yazımızda  JDK kurulumunun nasıl yapılabileceğini ve JAVA_HOME ortam değişkenini nasıl atayabileceğimizi anlatmıştık.

$ ls10@LingoSoft:~$ echo $JAVA_HOME
/usr/lib/jvm/java-8-oracle

Ek olarak kullanıcılar arası geçiş yaparken dikkatli olmak için hostname adını kontrol edebilirsiniz.

ls10@LingoSoft:~$ hostname
LingoSoft

Screenshot_1

Hadoop Kurulumuna başlamadan önce yapılması gereken Linux konfigürasyonları :

1.  root olarak giriş yapmalıyız.

ls10@LingoSoft:~$ sudo su
[sudo] password for ls10:

Kullanıcı değiştirdiniz ve o an için kim olduğunuzdan şüphe ediyorsanız yapmanız gereken tek şey whoami komutunu çalıştırmak.

root@LingoSoft:/home/ls10# whoami
root

Screenshot_2Screenshot_3

Hadoop çalışmak için hduser adında ayrı bir kullanıcı oluşturacağız.

2. hadoop kullanıcı grubu oluşturuyoruz. Ardından hduser adında bir kullanıcı oluşturuyoruz.

root@LingoSoft:/home/ls10# sudo addgroup hadoop
"hadoop" grubu ekleniyor (GID 1001) ...
Tamamlandı.
root@LingoSoft:/home/ls10# sudo adduser hduser
	"hduser" kullanıcısı ekleniyor ...
	Yeni grup "hduser" ekleniyor (1002) ...
	Yeni kullanıcı "hduser" (1001) "hduser" grubuyla ekleniyor ...
	"/home/hduser" başlangıç dizini oluşturuluyor ...
	"/etc/skel" dizininden dosyalar kopyalanıyor ...
	Yeni parolayı girin: 
	Yeni parolayı tekrar girin: 
	passwd: şifre başarıyla güncellendi
	hduser için kullanıcı bilgileri değiştiriliyor
	Yeni değeri girin, veya varsayılan değer için ENTER'a basın
		Tam İsim []: 
		Oda Numarası []: 
		İş Telefonu []: 
		Ev Telefonu []: 
		Diğer []: 
	Bilgiler doğru mu? [E/h] E

Screenshot_3

3. hduser kullanıcısını hadoop kullanıcı grubuna ekliyoruz.

root@LingoSoft:/home/ls10# sudo adduser hduser hadoop
	"hduser" kullanıcısı "hadoop" grubuna ekleniyor ...
	hduser kullanıcısı hadoop grubuna ekleniyor
	Tamamlandı.

Aslında 2. ve 3. adımı tek seferde de yapabilirdik:

root@LingoSoft:/home/ls10# sudo adduser --ingroup hadoop hduser

Screenshot_4

4. Oluşturduğumuz hduser kullanıcısına yönetici yetkilerini atamak için visudo komutunu çalıştırıyoruz. Bu komut ile /etc klasörünün altında bulunan sudoers.tmp dosyasına hduser ALL=(ALL) ALL bilgisini ekliyoruz. Elle yazmak yerine kopyala-yapıştır yapabilirsiniz.

root@LingoSoft:/home/ls10# sudo visudo

screenshot_5screenshot_6

Aşağı ok tuşu ile sayfanın en alt kısmına kadar inmemiz gerekiyor.

screenshot_7screenshot_8

Yaptığımız değişikliği kaydetmek için, önce CTRL+X ardından E  harfine tıklıyoruz. (Not: Evet yerine E / e yazmak yeterli olacaktır.) Sonrasında diğer aşamaları varsayılan şekilde bırakmak için Enter‘a tıklamanız yeterli olacaktır.

Screenshot_9Screenshot_10

Şimdi makinemizi yeniden başlatıp,  hduser ile oturum açıyoruz.

Screenshot_13Screenshot_14

Hadoop kurulumuna geçmeden önce ekran çözünürlüğünü değiştirmek için aşağıdaki adımları takip edebilirsiniz.

Screenshot_15Screenshot_16

Kurulum için çalıştırdığımız kodları birbirini takip edecek şekilde text dosyasına kopyaladım. (Installation_Hadoop_Text.txt dosyasını buradan indirebilirsiniz.) İsterseniz bu dosyayı sanal makinenizin içerisine kopyalayıp kodları terminale yapıştırarak çalıştırabilirsiniz.

Screenshot_17

5. Kurulum için openssh-server paketlerinin kurulması gerekiyor. (Not: clear komutu ile terminal ekranınızı temizleyebilirsiniz.)

hduser@LingoSoft:~$ sudo apt-get install openssh-server

hduser@LingoSoft:~$ clear

Screenshot_19Screenshot_20Screenshot_21

6.  SSH paketini kurduktan sonra iletişim için SSH kodu oluşturmamız gerekli. Oluşturmak için ssh-keygen kodunu çalıştırıyoruz.

hduser@LingoSoft:~$ ssh-keygen

Screenshot_22Screenshot_23

Oluşturduğumuz bu kodu authorized_keys dosyasının sonuna satır olarak ekliyoruz.

hduser@LingoSoft:~$ cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys

hduser@LingoSoft:~$ chmod 700 ~/.ssh/authorized_keys

7. Önce SSH ‘ı yeninden başlatıyoruz. Oluşturduğumuz bağlantıyı test ediyoruz.

hduser@LingoSoft:~$ sudo /etc/init.d/ssh restart
hduser@LingoSoft:~$ ssh localhost

Screenshot_24

Bundan sonraki aşamalarda kullanmak için vim editörünü indirebilirsiniz.

hduser@LingoSoft:~$ sudo apt-get install vim

8. IPv6 ‘yı Disable etmemiz gerekiyor. Bunun için /etc klasörünün altında bulunan sysctl.conf dosyasını düzenliyoruz.


# disable ipv6
net.ipv6.conf.all.disable_ipv6 = 1
net.ipv6.conf.default.disable_ipv6 = 1
net.ipv6.conf.lo.disable_ipv6 = 1


Yukarıdaki kısmı sysctl.conf dosyasının en alt kısmına eklememiz gerekiyor. Bunun için ok tuşu ile sayfanın en altına inip, i harfine tıklıyoruz. Eklemek istediğimiz kısımı installation_hadoop_text.txt dosyasından kopyalayıp, sayfa içerisine yapıştırıyoruz. Yine kaydetmek için “ESC” tuşuna tıklayıp :wq yazıyoruz.

hduser@LingoSoft:~$ sudo vim /etc/sysctl.conf
Enter Your Password: hadoop

Screenshot_28Screenshot_29Screenshot_30Screenshot_32

IPv6 Disable hale geldiğinden emin olmak için aşağıdaki kodu çalıştırmamız gerekiyor. Kodu çalıştırdığımızda 0 gelecektir. Bu IPv6’nın Disable olmadığı anlamına gelir. Makinemizi yeniden başlatmadığımız takdirde, yaptığımız değişikler aktif hale gelmeyecektir. Şimdilik böyle bırakıp, Hadoop kurulumuna devam edebiliriz.

hduser@LingoSoft:~$ cat /proc/sys/net/ipv6/conf/all/disable_ipv6 
0

Artık Hadoop kurulumuna geçebiliriz.

Screenshot_34Screenshot_38Screenshot_40

hadoop-3.1.1.tar.gz dosyasını /usr/local/ dizinine taşıyoruz.

hduser@LingoSoft:~/İndirilenler$ sudo mv hadoop-3.1.1.tar.gz /usr/local/

Screenshot_96.png

Change Directory(cd)  komutu ile /usr/local/ dizinine geçip çalışmalarımıza orada devam ediyoruz.

hduser@LingoSoft:~/İndirilenler$ cd /usr/local/

hduser@LingoSoft:/usr/local$ ls -l

Screenshot_47

/usr/local dizinine taşıdığımız hadoop-3.1.1.tar.gz arşiv dosyasını arşivden çıkarmak için yine aynı şekilde tar komutunu kullanıyoruz.

hduser@LingoSoft:/usr/local$ sudo tar -xvf hadoop-3.1.1.tar.gz

Screenshot_48

Hadoop arşiv dosyasına(hadoop-3.1.1.tar.gz) artık ihtiyacımız kalmadı. O yüzden öncelikle rm(remove) komutu ile arşiv dosyasını siliyoruz. Ardından hadoop-3.1.1 klasörüne ln komutu ile kısayol oluşturuyoruz. Oluşturacağımız kısayol linkine hadoop adını veriyoruz.

hduser@LingoSoft:/usr/local$ sudo rm hadoop-3.1.1.tar.gz

hduser@LingoSoft:/usr/local$ sudo ln -s hadoop-3.1.1 hadoop

Screenshot_49

hadoop-3.1.1 klasörümüzün sahibi olarak ls10 kullanıcısı tanımlı bunu değiştirip hduser‘a aktarmak için chown(Change Owner) komutu ile chmod(Change Mode) komutunu kullanıyoruz.

hduser@LingoSoft:/usr/local$ sudo chown -R hduser:hadoop hadoop-3.1.1

hduser@LingoSoft:/usr/local$ sudo chmod 777 hadoop-3.1.1

hduser@LingoSoft:/usr/local$ ls -l

Screenshot_50

Vim editörünü kullanırken ;
– Dosyayı açtıktan sonra içerisine düzenleme yapmak istediğinizde önce i harfine tıklayıp, Insert moduna geçmeniz gerekecek.
– Kopyalamak için Shift+Ctrl+C ve yapıştırmak için Shift+Ctrl+V kısayolunu kullanabilirsiniz. (Terminal ekranında da bu kısayollar geçerlidir.) Kafanız karışıyorsa, bu kısayollar yerine fare ile sağ tık yaparak kopyala/yapıştır yapabilirsiniz.
– Dosyayı kaydedip, çıkmak için önce ESC tuşuna ardından :wq yazmanız yeterli olacak.
– Yanlış değişiklik yaptınız, kaydetmek istemiyorsunuz o zaman ( önce ESC tuşuna ardından) :q! yazmanız yeterli olacak.

hadoop-env.sh doyamızı düzenlememiz gerekiyor. Vim editörü ile sh dosyamızı açıyoruz. İçerisine JAVA_HOME ve HADOOP_HOME gibi ortam değişkenlerini içerisine tanımlıyoruz. Bunun için önce Insert moduna geçiyoruz.( i harfine tıklayarak) Ok tuşları ile en alt satıra inip yapıştırıyoruz. Kaydedip kapatıyoruz. ( ESC‘ye tıklayıp :wq yazıyoruz.)

hduser@LingoSoft:/usr/local$ echo $JAVA_HOME
/usr/lib/jvm/java-8-oracle

hduser@LingoSoft:/usr/local$ sudo vim /usr/local/hadoop/etc/hadoop/hadoop-env.sh

export HADOOP_OPTS=-Djava.net.preferIPv4Stack=true
export HADOOP_HOME_WARN_SUPPRESS=”TRUE”
export JAVA_HOME=/usr/lib/jvm/java-8-oracle


Screenshot_53Screenshot_54Screenshot_56Screenshot_58

~ işareti oturum açtığınız kişinin home dizin adresini gösterir ve baschrc dosyası o dizinde bulunur. Dosya adının başında nokta olması ise o dosyanın gizli dosya olduğunu belirtir.  Terminal üzerinde hangi dizinde olursanız olun açmak isteğiniz dosyanın tam adresini yazarsanız, açabiliriniz.  Biz /usr/local/ dizinindeyiz ama home dizini altındaki dosyayı açmak için  ~/.baschrc yazmanız yeterli olacaktır.

.baschrc dosyamızı düzenlememiz gerekiyor. Vim editörü ile dosyamızı açıyoruz. İçerisine aşağıdaki satırları ekliyoruz. Bunun için önce Insert moduna geçiyoruz.( i harfine tıklayarak) Ok tuşları ile en alt satıra inip yapıştırıyoruz. Kaydedip kapatıyoruz. ( ESC‘ye tıklayıp :wq yazıyoruz.)

hduser@LingoSoft:/usr/local$ vim ~/.bashrc

# Set Hadoop-related environment variables
export HADOOP_HOME=/usr/local/hadoop
export HADOOP_MAPRED_HOME=${HADOOP_HOME}
export HADOOP_COMMON_HOME=${HADOOP_HOME}
export HADOOP_HDFS_HOME=${HADOOP_HOME}
export HADOOP_YARN_HOME=${HADOOP_HOME}
export HADOOP_CONF_DIR=${HADOOP_HOME}/etc/hadoop

# Native Path
export HADOOP_COMMON_LIB_NATIVE_DIR=${HADOOP_PREFIX}/lib/native
export HADOOP_OPTS=”-Djava.library.path=$HADOOP_PREFIX/lib”

# Set JAVA_HOME (we will also configure JAVA_HOME directly for Hadoop later on)
export JAVA_HOME=/usr/lib/jvm/java-8-oracle

# Some convenient aliases and functions for running Hadoop-related commands
unaliasfs&> /dev/null
aliasfs=”hadoop fs”
unaliashls&> /dev/null
aliashls=”fs -ls”
export PATH=$PATH:$HADOOP_HOME/bin:$PATH:$JAVA_HOME/bin:$HADOOP_HOME/sbin


Screenshot_59Screenshot_60Screenshot_63

yarn-site.xml dosyamızı düzenlememiz gerekiyor. Vim editörü ile dosyamızı açıyoruz. İçerisine aşağıdaki satırları ekliyoruz. Bunun için önce Insert moduna geçiyoruz.( i harfine tıklayarak) Ok tuşları ile en alt satıra inip yapıştırıyoruz. Kaydedip kapatıyoruz. ( ESC‘ye tıklayıp :wq yazıyoruz.) 

hduser@LingoSoft:/usr/local$ cd ~

hduser@LingoSoft:~$ sudo vim /usr/local/hadoop/etc/hadoop/yarn-site.xml

yarn.nodemanager.aux-services
mapreduce_shuffle

yarn.nodemanager.aux-services.mapreduce.shuffle.class
org.apache.hadoop.mapred.ShuffleHandler


Screenshot_64Screenshot_67

core-site.xml dosyamızı düzenlememiz gerekiyor. Vim editörü ile dosyamızı açıyoruz. İçerisine aşağıdaki satırları ekliyoruz. Bunun için önce Insert moduna geçiyoruz.( i harfine tıklayarak) Ok tuşları ile en alt satıra inip yapıştırıyoruz. Kaydedip kapatıyoruz. ( ESC‘ye tıklayıp :wq yazıyoruz.) 

hduser@LingoSoft:~$ sudo vim /usr/local/hadoop/etc/hadoop/core-site.xml

hadoop.tmp.dir
/app/hadoop/tmp
A base for other temporary directories.
fs.default.name
hdfs://localhost:9000
default host and port


Screenshot_68Screenshot_69Screenshot_70

hduser@LingoSoft:~$ sudo mkdir -p /app/hadoop/tmp

hduser@LingoSoft:~$ sudo chown hduser:hadoop -R /app/hadoop/tmp

hduser@LingoSoft:~$ sudo chmod 750 /app/hadoop/tmp

Screenshot_71

mapred-site.xml dosyamızı düzenlememiz gerekiyor. Vim editörü ile dosyamızı açıyoruz. İçerisine aşağıdaki satırları ekliyoruz. Bunun için önce Insert moduna geçiyoruz.( i harfine tıklayarak) Ok tuşları ile en alt satıra inip yapıştırıyoruz. Kaydedip kapatıyoruz. ( ESC‘ye tıklayıp :wq yazıyoruz.) 

hduser@LingoSoft:~ sudo vim /usr/local/hadoop/etc/hadoop/mapred-site.xml

mapreduce.framework.name
yarn

mapreduce.jobhistory.address
localhost:10020
Host and port for Job History Server (default 0.0.0.0:10020)

yarn.app.mapreduce.am.env
HADOOP_MAPRED_HOME=${HADOOP_HOME}

mapreduce.map.env
HADOOP_MAPRED_HOME=${HADOOP_HOME}

mapreduce.reduce.env
HADOOP_MAPRED_HOME=${HADOOP_HOME}


Screenshot_72Screenshot_73Screenshot_74Screenshot_75

Komutlarımızı çalıştırırken sizlere farklı bir yol göstermek istiyorum. Klasör oluşturma, yetki verme gibi komutları çalıştıracak olduğunuzda üç satırı birden kopyalayıp  terminale yapıştırabilirsiniz. Sırayla çalışacaktır.

Make Directory (mkdir) komutu ile namenode ve datanode adında klasör oluşturuyoruz. Change Owner(chown) komutu ile de klasörün sahibi olarak hduser’ı  belirliyoruz.

sudo mkdir -p /usr/local/hadoop_tmp/hdfs/namenode
sudo mkdir -p /usr/local/hadoop_tmp/hdfs/datanode
sudo chown hduser:hadoop -R /usr/local/hadoop_tmp/

Screenshot_76Screenshot_77Screenshot_78

hdfs-site.xml dosyamızı düzenlememiz gerekiyor. Vim editörü ile dosyamızı açıyoruz. İçerisine aşağıdaki satırları ekliyoruz. Bunun için önce Insert moduna geçiyoruz.( i harfine tıklayarak) Ok tuşları ile en alt satıra inip yapıştırıyoruz. Kaydedip kapatıyoruz. ( ESC‘ye tıklayıp :wq yazıyoruz.) 

hduser@LingoSoft:~$ sudo vim /usr/local/hadoop/etc/hadoop/hdfs-site.xml

dfs.replication
1

dfs.namenode.name.dir
file:/usr/local/hadoop_tmp/hdfs/namenode

dfs.datanode.data.dir
file:/usr/local/hadoop_tmp/hdfs/datanode


Screenshot_79Screenshot_82

Şimdi Dosya menüsünün altından Yeni Pencere‘ye tıklayarak, yeni bir terminal ekranı açıyoruz. Önceki terminal penceresini kapatıp, yeni pencereden devam ediyoruz. (*)

Screenshot_97

Klasik dosya sisteminde olduğu gibi HDFS Cluster yapısında da biçimlendirilmeye ihtiyaç vardır. HDFS Cluster’ınızı hadoop namenode -format diyerek biçimlendirebilirsiniz.

hduser@LingoSoft:~$ hadoop namenode -format

Screenshot_85.png

HDFS Cluster’ı ve YARN’ı başlatmak için aşağıdaki adımları uygulayabilirsiniz.

start-dfs.sh komutu NameNode(NN), Secondary NameNode(SNN), DataNode(DN)’ları başlatır.
start-yarn.sh komutu ise NodeManager(NM) ve ResourceManager(RM) ‘ı başlatır.
İki komutu tek satırda yazarak da çalıştırabilirsiniz ya da bunun yerine start-all.sh diyerek de çalıştırabilirsiniz.

hduser@LingoSoft:~$ start-dfs.sh && start-yarn.sh
hduser@LingoSoft:~$ start-all.sh

Screenshot_87

HistoryServer’ı başlatmak için çalıştırmanız gereken kodumuz;

hduser@LingoSoft:~$ mr-jobhistory-daemon.sh start historyserver
- If you want to stop: mr-jobhistory-daemon.sh stop historyserver

Screenshot_88Screenshot_91

Gördüğünüz üzere kurulumu başarılı bir şekilde tamamlamış olduk.
————————————————————————————————————-
NameNode                                     : http://127.0.0.1:9870

ResourceManager                        : http://127.0.0.1:8088

MapReduce JobHistory Server  : http://127.0.0.1:19888

————————————————————————————————————–

Faydalı bir doküman olması dileğiyle,

iyi  çalışmalar dileriz.. 🙂

Bu yazı Hadoop, linux içinde yayınlandı. Kalıcı bağlantıyı yer imlerinize ekleyin.

Bir Cevap Yazın

Aşağıya bilgilerinizi girin veya oturum açmak için bir simgeye tıklayın:

WordPress.com Logosu

WordPress.com hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap /  Değiştir )

Google fotoğrafı

Google hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap /  Değiştir )

Twitter resmi

Twitter hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap /  Değiştir )

Facebook fotoğrafı

Facebook hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap /  Değiştir )

Connecting to %s