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
Apache Cassandra Kurulumu Apache Cassandra Astyanax
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
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.
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
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
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?
Ş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.
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ı?
Cloudera manager yardımıyla kurabilirsiniz.