DevVeri.com

Boğulacaksan büyük veride boğul!

Cloudera CDH3 Hadoop Kurulumu

Hadoop projesini geliştiren birçok firma mevcut, Cloudera da bunlardan bir tanesi. Bu yazıda Hadoop mimarisini öğrenmek, araştırmalar ve geliştirmeler yapmak amacıyla Cloudera‘nın CDH3 ismiyle yayınladığı Hadoop sürümünü Ubuntu işletim sistemine nasıl kurulacağını anlatmaya çalışacağız.

Hadoop dağıtık olmayan (standalone), dağıtık mimariye uygun ancak tek sunucuda çalışan (pseudo distributed) ve dağıtık (distributed) olmak üzere üç farklı modda çalıştırılabiliyor. Bu örnekte pseudo distributed kurulumdan bahsedeceğiz.

Kurulumun öncesinde sisteminizde yüklü Java olması ve openssh-server ve rsync paketlerinin kurulması gerekiyor.

sudo apt-get install ssh
sudo apt-get install rsync

 

Cloudera’nın paketlediği Hadoop’u kurabilmek için öncelikle Cloudera’nın paket depolarını Ubuntu’ya eklemek için uygun sürüme ait paketi indirmek gerekiyor. Ben Maverick sürümüne uygun olan paketi indirdim. Bu paket, paket depolarının listesine Cloudera’yı ekliyor.

wget http://archive.cloudera.com/one-click-install/maverick/cdh3-repository_1.0_all.deb
sudo dpkg -i cdh3-repository_1.0_all.deb

 

Bundan sonrası çok kolay, apt kullanarak kurulumu yapıyoruz:

sudo apt-get update
sudo apt-get install hadoop-0.20-conf-pseudo

 

Bu kurulum sırasında pseudo distributed mod için gerekli tüm konfigürasyon (/etc/hadoop) bizim adımıza yapılmış ve Name Node formatlanmış oluyor. Hadoop’u başlatmadan önce son olarak şifresiz ssh (passphraseless ssh) ayarı yapmamız gerekiyor. Yani Hadoop süreçlerini (process) çalıştıracak kullanıcının localhost adresine şifresiz ssh bağlantısı yapabiliyor olması gerekiyor. Bunun için öncelikle bir kere ssh bağlantısı yapacağız:

$ ssh localhost
The authenticity of host 'localhost (127.0.0.1)' can't be established.
ECDSA key fingerprint is 00:ab:cd:ef:12:23:56:ab:ba:c4:89:11:d8:22:33:1b.
Are you sure you want to continue connecting (yes/no)? yes

 

Daha sonra aşağıdaki komutlarla şifresiz ssh anahtarı oluşturacağız:

ssh-keygen -t dsa -P '' -f ~/.ssh/id_dsa
cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys

 

Artık servisleri başlatabiliriz. Kurulum sonrasında /etc/init.d/ altında aşağıdaki script dosyaları oluşmuş oluyor:

$ ls -l /etc/init.d/hadoop-0.20-*
-rwxr-xr-x 1 root root 5853 May  8 00:09 hadoop-0.20-datanode
-rwxr-xr-x 1 root root 5879 May  8 00:09 hadoop-0.20-jobtracker
-rwxr-xr-x 1 root root 5853 May  8 00:09 hadoop-0.20-namenode
-rwxr-xr-x 1 root root 5970 May  8 00:09 hadoop-0.20-secondarynamenode
-rwxr-xr-x 1 root root 5892 May  8 00:09 hadoop-0.20-tasktracker

 

Servislerin hepsini başlatmak için aşağıdaki takma isimleri kullanabilirsiniz, bunları .bashrc dosyasına da ekleyebilirsiniz:

alias hadoop_start='for service in /etc/init.d/hadoop-*; do sudo $service start; done'
alias hadoop_stop='for service in /etc/init.d/hadoop-*; do sudo $service stop; done'

 

Artık Hadoop’u başlatabiliriz. Eğer ayarlarda herhangi bir hata yoksa aşağıdaki şekilde açılacaktır. Servislerin tam olarak açıldığından emin olmak için Java süreçlerini kontrol ederek (ps aux|grep java) beş sürecin de çalıştığından emin olabilirsiniz.

$ hadoop_start
Starting Hadoop datanode daemon: starting datanode, logging to /usr/lib/hadoop-0.20/logs/hadoop-hadoop-datanode-haqen-HPProBook-6540b.out
hadoop-0.20-datanode.
Starting Hadoop jobtracker daemon: starting jobtracker, logging to /usr/lib/hadoop-0.20/logs/hadoop-hadoop-jobtracker-haqen-HPProBook-6540b.out
hadoop-0.20-jobtracker.
Starting Hadoop namenode daemon: starting namenode, logging to /usr/lib/hadoop-0.20/logs/hadoop-hadoop-namenode-haqen-HPProBook-6540b.out
hadoop-0.20-namenode.
Starting Hadoop secondarynamenode daemon: starting secondarynamenode, logging to /usr/lib/hadoop-0.20/logs/hadoop-hadoop-secondarynamenode-haqen-HPProBook-6540b.out
hadoop-0.20-secondarynamenode.
Starting Hadoop tasktracker daemon: starting tasktracker, logging to /usr/lib/hadoop-0.20/logs/hadoop-hadoop-tasktracker-haqen-HPProBook-6540b.out
hadoop-0.20-tasktracker.

 

Bundan sonra Name Node ve MapReduce web arayüzlerine erişebilirsiniz:

 

Artık çalışan bir Hadoop kurulumumuz var. HDFS dosya sisteminin de düzgün çalıştığından emin olmak amacıyla bir dosyayı Hadoop üzerine kopyalayalım ve içeriğini HDFS üzerinden içeriğini dökelim. Eğer çıktı aşağıdaki gibi ise HDFS düzgün olarak çalışıyor demektir.

$ echo 'hello, hadoop!' > test.txt
$ hadoop dfs -put test.txt test.txt
$ hadoop dfs -ls
Found 1 items
-rw-r--r--   1 devveri supergroup         15 2012-06-27 00:52 /user/devveri/test.txt
$ hadoop dfs -cat test.txt
hello, hadoop!

 

Örnek bir MapReduce çalıştırarak test edelim:

$ hadoop jar /usr/lib/hadoop/hadoop-*-examples.jar pi 2 10000
Number of Maps  = 2
Samples per Map = 10000
Wrote input for Map #0
Wrote input for Map #1
Starting Job
12/06/27 00:58:03 INFO mapred.FileInputFormat: Total input paths to process : 2
12/06/27 00:58:04 INFO mapred.JobClient: Running job: job_201206270039_0001
12/06/27 00:58:05 INFO mapred.JobClient:  map 0% reduce 0%
12/06/27 00:58:10 INFO mapred.JobClient:  map 100% reduce 0%
12/06/27 00:58:17 INFO mapred.JobClient:  map 100% reduce 33%
12/06/27 00:58:18 INFO mapred.JobClient:  map 100% reduce 100%
12/06/27 00:58:18 INFO mapred.JobClient: Job complete: job_201206270039_0001
12/06/27 00:58:18 INFO mapred.JobClient: Counters: 27
12/06/27 00:58:18 INFO mapred.JobClient:   Job Counters
12/06/27 00:58:18 INFO mapred.JobClient:     Launched reduce tasks=1
12/06/27 00:58:18 INFO mapred.JobClient:     SLOTS_MILLIS_MAPS=6520
12/06/27 00:58:18 INFO mapred.JobClient:     Total time spent by all reduces waiting after reserving slots (ms)=0
12/06/27 00:58:18 INFO mapred.JobClient:     Total time spent by all maps waiting after reserving slots (ms)=0
12/06/27 00:58:18 INFO mapred.JobClient:     Launched map tasks=2
12/06/27 00:58:18 INFO mapred.JobClient:     Data-local map tasks=2
12/06/27 00:58:18 INFO mapred.JobClient:     SLOTS_MILLIS_REDUCES=8337
12/06/27 00:58:18 INFO mapred.JobClient:   FileSystemCounters
12/06/27 00:58:18 INFO mapred.JobClient:     FILE_BYTES_READ=50
12/06/27 00:58:18 INFO mapred.JobClient:     HDFS_BYTES_READ=470
12/06/27 00:58:18 INFO mapred.JobClient:     FILE_BYTES_WRITTEN=168711
12/06/27 00:58:18 INFO mapred.JobClient:     HDFS_BYTES_WRITTEN=215
12/06/27 00:58:18 INFO mapred.JobClient:   Map-Reduce Framework
12/06/27 00:58:18 INFO mapred.JobClient:     Map input records=2
12/06/27 00:58:18 INFO mapred.JobClient:     Reduce shuffle bytes=56
12/06/27 00:58:18 INFO mapred.JobClient:     Spilled Records=8
12/06/27 00:58:18 INFO mapred.JobClient:     Map output bytes=36
12/06/27 00:58:18 INFO mapred.JobClient:     CPU time spent (ms)=2720
12/06/27 00:58:18 INFO mapred.JobClient:     Total committed heap usage (bytes)=392036352
12/06/27 00:58:18 INFO mapred.JobClient:     Map input bytes=48
12/06/27 00:58:18 INFO mapred.JobClient:     Combine input records=0
12/06/27 00:58:18 INFO mapred.JobClient:     SPLIT_RAW_BYTES=234
12/06/27 00:58:18 INFO mapred.JobClient:     Reduce input records=4
12/06/27 00:58:18 INFO mapred.JobClient:     Reduce input groups=2
12/06/27 00:58:18 INFO mapred.JobClient:     Combine output records=0
12/06/27 00:58:18 INFO mapred.JobClient:     Physical memory (bytes) snapshot=386891776
12/06/27 00:58:18 INFO mapred.JobClient:     Reduce output records=0
12/06/27 00:58:18 INFO mapred.JobClient:     Virtual memory (bytes) snapshot=1161449472
12/06/27 00:58:18 INFO mapred.JobClient:     Map output records=4
Job Finished in 14.667 seconds
Estimated value of Pi is 3.14280000000000000000

 

Bu yazıda Cloudera’nın CDH3 sürümü Hadoop’u kurup, servisleri test etmiş olduk. İlerleyen yazılarda diğer dağıtımların da kurulumlarından, HDFS ve MapReduce konularından bahsetmeye çalışacağız.

 

Kaynak: Installing CDH3 on a Single Linux Node in Pseudo-distributed Mode

, , ,

8 thoughts on “Cloudera CDH3 Hadoop Kurulumu

  • Kenan dedi ki:

    Selamlar,ben hbase veya hdfs kurmak istiyorum bunun için öncelikle hadoop’u kurmam gerekiyor mu yoksa hdbase veya hdfs kurdugum zaman hadoop kurulu geliyor mu?
    Ve kurulumlar il ilgili önerebileceginiz döküman var mı?
    Teşekürler

  • Hakan İlter dedi ki:

    Selam,

    http://devveri.com/hadoop-nedir yazısını okumanızı tavsiye ederim.

    Önümüzdeki günlerde HBase kurulumunu da yazmaya çalışacağım.

  • rıdvan dedi ki:

    ben denileni aşama aşama yaptım ama
    ‘Artık Hadoop’u başlatabiliriz. Eğer ayarlarda herhangi bir hata yoksa aşağıdaki şekilde açılacaktır. Servislerin tam olarak açıldığından emin olmak için Java süreçlerini kontrol ederek (ps aux|grep java) beş sürecin de çalıştığından emin olabilirsini’ kısmında hadoop_start yapınca bende

    ridvan@ubuntu:~$ hadoop_start
    -bash: sudo/etc/init.d/hadoop-0.20-datanode: No such file or directory
    -bash: sudo/etc/init.d/hadoop-0.20-jobtracker: No such file or directory
    -bash: sudo/etc/init.d/hadoop-0.20-namenode: No such file or directory
    -bash: sudo/etc/init.d/hadoop-0.20-secondarynamenode: No such file or directory
    -bash: sudo/etc/init.d/hadoop-0.20-tasktracker: No such file or directory

    oluşuyor eksik bir şey mi yaptım yoksa.. ayrıca localhost:50070/dfshealth.jsp ye ulaşamıyorum ne yapmalıyım

    • rıdvan dedi ki:

      tamam buldum sorunu çok sağolun..ayrıca hadoop ile türkçe kaynak varsa yayınlarsanız çok güzel olur.Makale için çok teşekkürler

  • Emre dedi ki:

    Merhaba,
    yazı eski zamanı anlattığı için şu anki ubuntu 12 / 14 sürümlerinde bol miktarda hata alınıyor , üstüne çalışmıyor.
    Ek olarak belirtmek isterim ki şu anda zaten yeni sürümlere göre paketlerde yok rica etsem yazınızı güncellermisiniz?

    • Hakan İlter dedi ki:

      Şu anda zaten güncel olarak CDH5 sürümü var. Bu yazıyı yazdığım zaman henüz hiçbir firma Sandbox yayınlamamıştı. Şu anda Cloudera ve Hortonworks’ün hazır kurulu Sandbox’ları var. Bunlar üzerinden testler yapabilirsiniz.

  • Sarlken Konig dedi ki:

    Merhabalar,
    Bu bahsettiğiniz kurulum yazısı tamda ihtiyacım olan şey olmuş. Hadoop altyapısı ile uğraşmaya daha çok yeni başladım o yüzden biraz acemiyim. Acaba cloudera programını bu şekilde, mac os x işletim sistemine kurabilmenin bir yolu var mı?

Bir cevap yazın

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

This site uses Akismet to reduce spam. Learn how your comment data is processed.