Ubuntu 14.04 üzerine Hadoop 2.6.0 Kurulumu

Bu yazımızda tek bir node üzerine Hadoop kurulumu yapacağız.

Gereksinimler;

1 – Oracle Java 8 Kuralım.

ayhanarda@ubuntu:~$ sudo apt-get install software-properties-common
ayhanarda@ubuntu:~$ sudo add-apt-repository ppa:webupd8team/java
ayhanarda@ubuntu:~$ sudo apt-get update
ayhanarda@ubuntu:~$ sudo apt-get install oracle-java8-installer

Apache Hadoop bir java framework ü , dolayısı ile çalışabilmesi için java kurulu bir sunucu olmalı. Yukarıdaki işlem java yı /usr/lib/jvm/java-8-oracle path ine kuracaktır. Kurulumu test etmek için aşağıdaki komutu girebilirsiniz.

ayhanarda@ubuntu:~$ java -version

2 – HDFS ve MapReduce Erişimi İçin Bir Grup ve Kullanıcı Oluşturalım.

ayhanarda@ubuntu:~$ sudo addgroup hadoop
ayhanarda@ubuntu:~$ sudo adduser --ingroup hadoop hduser

3 – SSH Kuralım ve Konfigüre Edelim.

Hadoop diğer düğümlere ulaşmak ve yönetmek için ssh kullanacak.

ayhanarda@ubuntu:~$ sudo apt-get install openssh-server
ayhanarda@ubuntu:~$ /etc/init.d/ssh start
#Öncelikle hduser ile login olalim.
ayhanarda@ubuntu:~$ sudo su hduser
 
#Key olusturuyoruz , key adi soracak , bos geçebilirsiniz.
hduser@ubuntu:~$ ssh-keygen -t rsa -P ""
 
#Key i authorized_keys dosyamiza yaziyoruz.
hduser@ubuntu:~$ cat $HOME/.ssh/id_rsa.pub >> $HOME/.ssh/authorized_keys

Key i test etmek için ssh localhost yazabilirsiniz , şifre sormuyor ise tamam demektir.

4 – IPV6 yı kapatalım.

Hadoop henüz ipv6 ile çalışmamakta dolayısı ile kapatmamız gerekiyor. Bu işlem için /etc/sysctl.conf dosyamızı açalım ve dosyanın sonuna aşağıdakileri ekleyip kaydedelim , sonrasında reboot gerekmekte.

hduser@ubuntu:~$ sudo nano /etc/sysctl.conf
# disable ipv6
net.ipv6.conf.all.disable_ipv6 = 1
net.ipv6.conf.default.disable_ipv6 = 1
net.ipv6.conf.lo.disable_ipv6 = 1

Kurulum;

1 – Apache Hadoop indirelim.

#hadoop kuracağımız dizinin üstüne gidelim.
ayhanarda@ubuntu:~$ cd /usr/local
 
#hadoop u indirelim.
ayhanarda@ubuntu:/usr/local$ sudo wget https://www.apache.org/dist/hadoop/core/hadoop-2.6.0/hadoop-2.6.0.tar.gz
 
#hadoop u açalım.
ayhanarda@ubuntu:/usr/local$ sudo tar -xzvf hadoop-2.6.0.tar.gz
 
#hadoop u taşıyalım.
ayhanarda@ubuntu:/usr/local$ sudo mv hadoop-2.6.0 /usr/local/hadoop
 
#hadoop klasörü sahiplik ayarlarını yapalım.
ayhanarda@ubuntu:/usr/local$ sudo chown hduser:hadoop -R /usr/local/hadoop
 
#Namenode ve Datanode için hadoop temp dizini açalım.
ayhanarda@ubuntu:/usr/local$ sudo mkdir -p /usr/local/hadoop_tmp/hdfs/namenode
ayhanarda@ubuntu:/usr/local$ sudo mkdir -p /usr/local/hadoop_tmp/hdfs/datanode
 
#Hadoop temp dizininin sahiplik ayarlarını yapalım.
ayhanarda@ubuntu:/usr/local$ sudo chown hduser:hadoop -R /usr/local/hadoop_tmp/

2 – Hadoop Konfigürasyon Dosyalarını Güncelleyelim.

#Kullanıcı profilini güncellemek için aşağıdaki dosyayı açalım. 
hduser@ubuntu:~$ sudo nano $HOME/.bashrc
 
#Aşağıdakileri .bashrc dosyasının en altına yazıp kaydedelim. (Burada Java_Home ve Hadoop_Home pathlerinizi kontrol etmenizi öneririm)
# -- HADOOP-bigdatatr.com-- #
export JAVA_HOME=/usr/lib/jvm/java-8-oracle
export HADOOP_HOME=/usr/local/hadoop
export PATH=$PATH:$HADOOP_HOME/bin
export PATH=$PATH:$HADOOP_HOME/sbin
export HADOOP_MAPRED_HOME=$HADOOP_HOME
export HADOOP_COMMON_HOME=$HADOOP_HOME
export HADOOP_HDFS_HOME=$HADOOP_HOME
export YARN_HOME=$HADOOP_HOME
export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native
export HADOOP_OPTS="-Djava.library.path=$HADOOP_HOME/lib"
# -- HADOOP-bigdatatr.com-- #

hadoop-env.sh Dosyası İçin;

export JAVA_HOME= ile başlayan satırı aşağıdaki şekilde düzenleyin.
export JAVA_HOME=/usr/lib/jvm/java-8-oracle

Core-site.xml Dosyası İçin;

#Dosyada göreceğiniz <configuration> tagları arasına aşağıdakilerini girin.
 
<property>
<name>fs.default.name</name>
<value>hdfs://localhost:9000</value>
</property>

hdfs-site.xml Dosyası İçin;

#Dosyada göreceğiniz <configuration> tagları arasına aşağıdakilerini girin.
 
<property>
      <name>dfs.replication</name>
      <value>1</value>
 </property>
 <property>
      <name>dfs.namenode.name.dir</name>
      <value>file:/usr/local/hadoop_tmp/hdfs/namenode</value>
 </property>
 <property>
      <name>dfs.datanode.data.dir</name>
      <value>file:/usr/local/hadoop_tmp/hdfs/datanode</value>
 </property>

yarn-site.xml Dosyası İçin;

#Dosyada göreceğiniz <configuration> tagları arasına aşağıdakilerini girin.
 
<property>
      <name>yarn.nodemanager.aux-services</name>
      <value>mapreduce_shuffle</value>
</property>
<property>
      <name>yarn.nodemanager.aux-services.mapreduce.shuffle.class</name>
      <value>org.apache.hadoop.mapred.ShuffleHandler</value>
</property>

mapred-site.xml Dosyası İçin;

Bu dosyanın adı default olarak mapred-site.xml.template olarak gelir , bunu mapred-site.xml olarak değiştirmeliyiz.

hduser@ubuntu:~$ cp /usr/local/hadoop/etc/hadoop/mapred-site.xml.template /usr/local/hadoop/etc/hadoop/mapred-site.xml

Şimdi editleyebiliriz.

#Dosyada göreceğiniz <configuration> tagları arasına aşağıdakilerini girin.
 
<property>
      <name>mapreduce.framework.name</name>
      <value>yarn</value>
</property>

3 – NameNode u Formatlayalım.

#hadoop dizinine gidelim.
hduser@ubuntu:~$ cd /usr/local/hadoop
 
#hadoop u formatlayalım
hduser@ubuntu:/usr/local/hadoop$ bin/hdfs namenode -format

3 – Hadoop Daemonlarını Başlatalım.

#sbin dizinine gidelim.
hduser@ubuntu:~$ cd /usr/local/hadoop/sbin
 
#hdfs i başlatalım.
hduser@ubuntu:/usr/local/hadoop$ ./start-dfs.sh
 
#MapReduce i başlatalım.
hduser@ubuntu:/usr/local/hadoop$ ./start-yarn.sh

4 – Hadoop Daemonlarını Test Edelim.

hduser@ubuntu:/usr/local/hadoop/sbin$ jps
2082 ResourceManager
1941 SecondaryNameNode
2184 NodeManager
1785 DataNode
2475 Jps
1661 NameNode

Şimdi Resource Manager ve NameNode a Browserdan erişebilirsiniz.

ResourceManager için- Http://localhost:8088 ya da http://ipadresi:8088

ResourceManager

Name Node için- Http://localhost:50070 ya da http://ipadresi:50070

NameNode

Gelecek makalede görüşmek üzere..

Ayhan ARDA

Tavsiye;

Hadoop in Practice

Hadoop The Definite Guide

 

Share Button
16 Comments

    Arif

    Merhabalar hocam,
    Ne kadar alakalıdır bilmem fakat hadoop’u indirip tar.gz dosyasını açtığımız kısımda ufak bir hatayla karşılaşıyorum;

    gzip: stdin: not in gzip format
    tar: Child returned status 1
    tar: Error is not recoverable: exiting now

    Çok uğraştım ama çözemedim bir türlü. Yardımcı olabilirseniz sevinirim.

    İyi çalışmalar.

    Ayhan ARDA

    Merhaba;

    Hadoop u indirdiğiniz kısım degismis gözüküyor , link ne yazık ki kaldırılmıs , wget ile https://www.apache.org/dist/hadoop/core/hadoop-2.6.0/hadoop-2.6.0.tar.gz yi indirin ve tekrar açmayı deneyin derim.

    #hadoop u indirelim.
    ayhanarda@ubuntu:/usr/local$ sudo wget https://www.apache.org/dist/hadoop/core/hadoop-2.6.0/hadoop-2.6.0.tar.gz

    #hadoop u açalım.
    ayhanarda@ubuntu:/usr/local$ sudo tar -xzvf hadoop-2.6.0.tar.gz

    Arif

    Hocam teşekkür ederim orasyı hallettim. Fakat bu sefer başka bir sorun çıktı. Çözemedim günlerdir. Hadoop’u kurup “hadoop namenode -format” komutunu verince şöyle bir hata alıyorum;

    15/07/01 01:05:31 ERROR namenode.FSNamesystem: FSNamesystem initialization failed.
    org.apache.hadoop.HadoopIllegalArgumentException: An XAttr name must be prefixed with user/trusted/security/system/raw, followed by a ‘.’
    at org.apache.hadoop.hdfs.XAttrHelper.buildXAttr(XAttrHelper.java:72)
    at org.apache.hadoop.hdfs.server.namenode.FSDirectory.(FSDirectory.java:137)
    at org.apache.hadoop.hdfs.server.namenode.FSNamesystem.(FSNamesystem.java:894)
    at org.apache.hadoop.hdfs.server.namenode.FSNamesystem.(FSNamesystem.java:755)
    at org.apache.hadoop.hdfs.server.namenode.NameNode.format(NameNode.java:934)
    at org.apache.hadoop.hdfs.server.namenode.NameNode.createNameNode(NameNode.java:1379)
    at org.apache.hadoop.hdfs.server.namenode.NameNode.main(NameNode.java:1504)
    15/07/01 01:05:31 INFO namenode.FSNamesystem: Stopping services started for active state
    15/07/01 01:05:31 INFO namenode.FSNamesystem: Stopping services started for standby state
    15/07/01 01:05:31 FATAL namenode.NameNode: Failed to start namenode.
    org.apache.hadoop.HadoopIllegalArgumentException: An XAttr name must be prefixed with user/trusted/security/system/raw, followed by a ‘.’
    at org.apache.hadoop.hdfs.XAttrHelper.buildXAttr(XAttrHelper.java:72)
    at org.apache.hadoop.hdfs.server.namenode.FSDirectory.(FSDirectory.java:137)
    at org.apache.hadoop.hdfs.server.namenode.FSNamesystem.(FSNamesystem.java:894)
    at org.apache.hadoop.hdfs.server.namenode.FSNamesystem.(FSNamesystem.java:755)
    at org.apache.hadoop.hdfs.server.namenode.NameNode.format(NameNode.java:934)
    at org.apache.hadoop.hdfs.server.namenode.NameNode.createNameNode(NameNode.java:1379)
    at org.apache.hadoop.hdfs.server.namenode.NameNode.main(NameNode.java:1504)
    15/07/01 01:05:31 INFO util.ExitUtil: Exiting with status 1
    15/07/01 01:05:31 INFO namenode.NameNode: SHUTDOWN_MSG:
    /************************************************************
    SHUTDOWN_MSG: Shutting down NameNode at chPc/127.0.1.1
    ************************************************************/

    yardımcı olursanız çok sevinirim.
    İyi çalışmalar.

    miraç

    merhaba ,hadoopu kurdum ancak en sonda jps dediğimde datanode ve namenode gelmiyor ve localhost:50070 yazdığımda sunucu hatası alıyorum sorunun nerede olduğunu bulamadım yardımcı olursanız çok sevinirim
    iyi çalışmalar.

    Ayhan ARDA

    Hadoop daemonlarının başladığına emin olmak için bir önceki adımı tekrarlayın derim , browserda localhost yerine ip ile gitmeye çalışınız ayrıca sunucunun o portu dinlediğine emin olmanız gerekiyor , bunu da netstat -an | grep 50070 yazarak görebilirsiniz , LISTENING durumunda görmeniz gerekir

    mirac

    tekrar merhaba ,
    şimdi de hdfs namenode -format dediğimde hdfs komutu bulunamadı diyor

    mirac

    merhaba dediğiniz şekilde netstat komutunu çalıştırdım ve sadece bu şekilde bişey çıktı dediğiniz gibi listening durumunda göremiyorum.Hatam nerede bulamadım bütün adımları yaptım .

    Not all processes could be idenfied, non-owned process info will not be shown, you would have to be root to see it all

    Ayhan ARDA

    Bu gördüğünüz bir sonuç değil , sahibi olmadığınız prosesleri gösteremeyeceğini belirten ve bunun için root kullanıcısı ile aynı komutu tekrar çalıştırmanızı isteyen bir uyarı olarak gözüküyor.

    su root

    komutu ile root yetkilerini alıp komutu tekrar çalıştırabilirsiniz, diğer önerim ise konunun debug ı zor olacağı için en kolay yöntem sunucuyu sıfırlayarak kurulum adımlarını tekrarlamanız olacaktır.

    miraç

    çok teşekkür ederim bir de öyle deneyeyim

    mehmet

    Hocam merhabalar
    ./start-yarn.sh yazdıgımda bu geliyor root@localhost’s password:
    şifreyi yazıyorum
    localhost: Permission denied, please try again. bu cvbı alıyorum.
    tşkler.

    Ayhan ARDA

    Merhaba,

    Yazının 3. adımının 2. bölümünde bir yanlışlık yapmış olabilirsiniz , bu adımı tekrarlayabilirsiniz, ayrıca önerim /etc/ssh/sshd_config dosyanızda PermitRootLogin yes değil ise bu şekilde değiştirmenizi rica ederim.

    İyi çalışmalar

    akf

    hduser@a:~$ sudo nano $HOME/.bashrc
    [sudo] password for hduser:
    hduser is not in the sudoers file. This incident will be reported.

    hocam bu hatayı alıyorm..yardımcı olursanız sevinrm

    mehmet

    hocam ,
    Daemonları başlatıyorum consolda başlıyor fakat jps yazınca sadece jps dönüyor bunun sorunu ne olabilir acaba ?

    ELL

    merheba.
    Kurulumu bitirdim.Fakat bir sonurum var

    “hdfs dfs -ls ” girince shu ciktiyo aliyorum. . Bir turlu cozemedim

    16/04/28 08:54:52 WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform… using builtin-java classes where applicable
    ls: End of File Exception between local host is: “ubuntu/127.0.1.1”; destination host is: “localhost”:9000; : java.io.EOFException; For more details see: http://wiki.apache.org/hadoop/EOFException

    Ali Kemal Koçoğlu

    Merhaba hocam hadoop çalışıyor lakin bende 6 servis başlamıyor .

    6288 NameNode
    6788 ResourceManager
    25834 Jps
    6623 SecondaryNameNode
    6911 NodeManager

    DataNode kısmı başlamıyor. Onun dışında her şey çalışıyor.

    GÖZDE

    hocam merhaba;
    formatlama işleminden sonraki adımda hata alıyorum. nasıl çözebilirim.

    ******
    hadoop@hadoop-VirtualBox:~$ cd /opt/hadoop-2.7.2/sbin
    hadoop@hadoop-VirtualBox:/opt/hadoop-2.7.2/sbin$ ./start-dfs.sh
    Java HotSpot(TM) Client VM warning: You have loaded library /opt/hadoop-2.7.2/lib/native/libhadoop.so.1.0.0 which might have disabled stack guard. The VM will try to fix the stack guard now.
    It’s highly recommended that you fix the library with ‘execstack -c ‘, or link it with ‘-z noexecstack’.
    17/05/15 18:31:35 WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform… using builtin-java classes where applicable
    Starting namenodes on [master]
    master: ssh: connect to host master port 22: Connection refused
    slave1: Warning: Permanently added the ECDSA host key for IP address ‘192.168.0.112’ to the list of known hosts.
    slave2: Warning: Permanently added the ECDSA host key for IP address ‘192.168.0.114’ to the list of known hosts.
    hadoop@slave2’s password: hadoop@slave1’s password:
    slave2: mkdir: cannot create directory `/opt/hadoop-2.7.2/logs’: Permission denied
    slave2: chown: cannot access `/opt/hadoop-2.7.2/logs’: No such file or directory
    slave2: starting datanode, logging to /opt/hadoop-2.7.2/logs/hadoop-hadoop-datanode-slave2.out
    slave2: /opt/hadoop-2.7.2/sbin/hadoop-daemon.sh: line 159: /opt/hadoop-2.7.2/logs/hadoop-hadoop-datanode-slave2.out: No such file or directory
    slave2: head: cannot open `/opt/hadoop-2.7.2/logs/hadoop-hadoop-datanode-slave2.out’ for reading: No such file or directory
    slave2: /opt/hadoop-2.7.2/sbin/hadoop-daemon.sh: line 177: /opt/hadoop-2.7.2/logs/hadoop-hadoop-datanode-slave2.out: No such file or directory
    slave2: /opt/hadoop-2.7.2/sbin/hadoop-daemon.sh: line 178: /opt/hadoop-2.7.2/logs/hadoop-hadoop-datanode-slave2.out: No such file or directory
    ^C
    hadoop@slave1’s password: slave1: Permission denied, please try again.
    Starting secondary namenodes [0.0.0.0]
    0.0.0.0: ssh: connect to host 0.0.0.0 port 22: Connection refused
    Java HotSpot(TM) Client VM warning: You have loaded library /opt/hadoop-2.7.2/lib/native/libhadoop.so.1.0.0 which might have disabled stack guard. The VM will try to fix the stack guard now.
    It’s highly recommended that you fix the library with ‘execstack -c ‘, or link it with ‘-z noexecstack’.
    17/05/15 18:33:28 WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform… using builtin-java classes where applicable
    hadoop@hadoop-VirtualBox:/opt/hadoop-2.7.2/sbin$

Bir Cevap Yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

*
*