Hadoop 1.0.3 Kurulumu Adım Adım
Daha önceki yazımızda Cloudera’nın CDH3 sürümü olan Hadoop kurulumundan bahsetmiştik. Bu yazımızda da Apache‘nin son stabil sürümü olan 1.0.3 sürümünü paket kullanmadan elle nasıl kurulduğundan bahsedeceğiz. CDH3 kurulumunda sorun yaşayanlar da bu yazıdan faydalanabilirler.
1. 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
2. Bu paketleri kurduktan sonra localhost adresine şifresiz olarak bağlantı yapabiliyor olmamız gerekli. Bu sebeple aşağıdaki adımları izliyoruz:
$ 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 ssh-keygen -t dsa -P '' -f ~/.ssh/id_dsa cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys
3. Bundan sonra kurulumu yapacağımız klasörü ve verilerin bulunacağı klasörü hazırlamamız gerekiyor. Ben /usr/java klasörüne kurulum yapıyorum. Eğer bu klasör yoksa yaratılıp, yetki vermeliyiz:
sudo mkdir /usr/java sudo chown -R devveri:devveri /usr/java mkdir /usr/java/hadoop-data
4. Kurulumu yapacağımız klasöre geçip Apache’nin sitesinden Hadoop 1.0.3 sürümüne ait tar.gz uzantılı dosyayı indiriyoruz:
cd /usr/java/ wget "http://www.eu.apache.org/dist/hadoop/common/hadoop-1.0.3/hadoop-1.0.3.tar.gz" gzip -dc hadoop-1.0.3.tar.gz | tar xf - ln -s /usr/java/hadoop-1.0.3 /usr/java/hadoop
5. Kurulum neredeyse tamamlandı, bundan sonra conf klasörüne geçip konfigürasyon dosyalarını Pseudo-Distributed olarak çalışması için ayarlamamız gerekiyor.
Genel ayarların yapıldığı core-site.xml dosyasında aşağıdaki düzenlemeyi yapıyoruz:
<configuration> <property> <name>fs.default.name</name> <value>hdfs://localhost:9000</value> </property> <property> <name>hadoop.tmp.dir</name> <value>/usr/java/hadoop-data</value> </property> </configuration>
HDFS ile ilgili ayarların yapıldığı hdfs-site.xml dosyasına varsayılan replikasyon ayarını 1 olacak şekilde ayarlıyoruz:
<configuration> <property> <name>dfs.replication</name> <value>1</value> </property> </configuration>
Son olarak MapReduce ayarlarının yapıldığı mapred-site.xml dosyasına aşağıdaki tanımı yapıyoruz:
<configuration> <property> <name>mapred.job.tracker</name> <value>localhost:9001</value> </property> </configuration>
6. Bu ayarların dışında hadoop-env.sh dosyasında iki ayar daha yapmamız gerekiyor. Birincisi JAVA_HOME klasörünü ayarlamak (benim bilgisayarımda /usr/java/jdk alanında Java 6 kurulu):
export JAVA_HOME=/usr/java/jdk
7. İkinci ayar da hafıza ayarı. Varsayılan ayarlarda her Java süreci için 1G hafıza alanı tanımlanıyor. Hadoop’un tam olarak çalışması için 5 Java süreci çalışması gerekeceği için eğer kurulum yaptığınız bilgisayarda yeterli hafıza yoksa bu ayarı değiştirmeniz gerekli, aksi takdirde Out Of Memory hataları ile karşılaşırsınız. Ben bu değeri 512MB olacak şekilde ayarlıyorum:
export HADOOP_HEAPSIZE=512
8. Yine kolaylık olması açısından kullanıcımızın .bash_profile (ya da .bashrc) dosyasına aşağıdaki tanımları ekleyerek Hadoop ile ilgili komutlarını erişilebilir kılıyoruz:
JAVA_HOME=/usr/java/jdk PATH=$PATH:$JAVA_HOME/bin HADOOP_HOME=/usr/java/hadoop PATH=$PATH:$HADOOP_HOME/bin
9. Son olarak tüm ayarlar yapıldı, bir kereye mahsus olmak üzere Hadoop NameNode’un formatlanması gerekiyor:
$ hadoop namenode -format 12/09/05 00:07:06 INFO namenode.NameNode: STARTUP_MSG: /************************************************************ STARTUP_MSG: Starting NameNode STARTUP_MSG: host = devveri-HP-ProBook-6540b/127.0.1.1 STARTUP_MSG: args = [-format] STARTUP_MSG: version = 1.0.3 STARTUP_MSG: build = https://svn.apache.org/repos/asf/hadoop/common/branches/branch-1.0 -r 1335192; compiled by 'hortonfo' on Tue May 8 20:31:25 UTC 2012 ************************************************************/ 12/09/05 00:07:06 INFO util.GSet: VM type = 32-bit 12/09/05 00:07:06 INFO util.GSet: 2% max memory = 9.1025 MB 12/09/05 00:07:06 INFO util.GSet: capacity = 2^21 = 2097152 entries 12/09/05 00:07:06 INFO util.GSet: recommended=2097152, actual=2097152 12/09/05 00:07:07 INFO namenode.FSNamesystem: fsOwner=devveri 12/09/05 00:07:07 INFO namenode.FSNamesystem: supergroup=supergroup 12/09/05 00:07:07 INFO namenode.FSNamesystem: isPermissionEnabled=true 12/09/05 00:07:07 INFO namenode.FSNamesystem: dfs.block.invalidate.limit=100 12/09/05 00:07:07 INFO namenode.FSNamesystem: isAccessTokenEnabled=false accessKeyUpdateInterval=0 min(s), accessTokenLifetime=0 min(s) 12/09/05 00:07:07 INFO namenode.NameNode: Caching file names occuring more than 10 times 12/09/05 00:07:07 INFO common.Storage: Image file of size 111 saved in 0 seconds. 12/09/05 00:07:07 INFO common.Storage: Storage directory /usr/java/hadoop-data/dfs/name has been successfully formatted. 12/09/05 00:07:07 INFO namenode.NameNode: SHUTDOWN_MSG: /************************************************************ SHUTDOWN_MSG: Shutting down NameNode at devveri-HP-ProBook-6540b/127.0.1.1 ************************************************************/
10. Eğer buraya kadar bir sorunla karşılaşmadıysanız kurulumu tamamlamışsınız demektir. Tabi kurulumun düzgün olup olmadığını anlamak için onu çalıştırmamız gerekiyor. start-all.sh ile Hadoop’u başlatıyoruz:
$ start-all.sh starting namenode, logging to /usr/java/hadoop-1.0.3/libexec/../logs/hadoop-devveri-namenode-devveri-HP-ProBook-6540b.out localhost: starting datanode, logging to /usr/java/hadoop-1.0.3/libexec/../logs/hadoop-devveri-datanode-devveri-HP-ProBook-6540b.out localhost: starting secondarynamenode, logging to /usr/java/hadoop-1.0.3/libexec/../logs/hadoop-devveri-secondarynamenode-devveri-HP-ProBook-6540b.out starting jobtracker, logging to /usr/java/hadoop-1.0.3/libexec/../logs/hadoop-devveri-jobtracker-devveri-HP-ProBook-6540b.out localhost: starting tasktracker, logging to /usr/java/hadoop-1.0.3/libexec/../logs/hadoop-devveri-tasktracker-devveri-HP-ProBook-6540b.out
11. Tüm süreçlerin doğru başladığına emin olmak için jps komutuyla süreçleri listeliyoruz. Bu süreçlerin hepsinin çalışıyor olması gerekiyor:
$ jps 12941 JobTracker 12355 NameNode 13953 Jps 12845 SecondaryNameNode 13178 TaskTracker 12605 DataNode
12. Eğer herhangi bir hata ile karşılaşmadıysanız http://localhost:50070 ve http://localhost:50030 adreslerinden Job Tracker ve Name Node grafik arayüzlerine erişebilirsiniz:
13. HDFS’in düzgün çalıştığını test etmek için bir dosya oluşturup bunu HDFS’e atmayı, sonra oradan okumayı deniyoruz:
$ 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!
14. MapReduce’ün düzgün çalıştığını test etmek içinde Hadoop ile beraber gelen wordcount örneğini çalıştırıyoruz:
$ hadoop jar /usr/java/hadoop/hadoop-examples-1.0.3.jar wordcount test.txt result 12/09/05 00:18:27 INFO input.FileInputFormat: Total input paths to process : 1 12/09/05 00:18:27 INFO util.NativeCodeLoader: Loaded the native-hadoop library 12/09/05 00:18:27 WARN snappy.LoadSnappy: Snappy native library not loaded 12/09/05 00:18:27 INFO mapred.JobClient: Running job: job_201209050009_0001 12/09/05 00:18:28 INFO mapred.JobClient: map 0% reduce 0% 12/09/05 00:18:43 INFO mapred.JobClient: map 100% reduce 0% 12/09/05 00:18:55 INFO mapred.JobClient: map 100% reduce 100% 12/09/05 00:19:00 INFO mapred.JobClient: Job complete: job_201209050009_0001 12/09/05 00:19:00 INFO mapred.JobClient: Counters: 29 12/09/05 00:19:00 INFO mapred.JobClient: Job Counters 12/09/05 00:19:00 INFO mapred.JobClient: Launched reduce tasks=1 12/09/05 00:19:00 INFO mapred.JobClient: SLOTS_MILLIS_MAPS=12206 12/09/05 00:19:00 INFO mapred.JobClient: Total time spent by all reduces waiting after reserving slots (ms)=0 12/09/05 00:19:00 INFO mapred.JobClient: Total time spent by all maps waiting after reserving slots (ms)=0 12/09/05 00:19:00 INFO mapred.JobClient: Launched map tasks=1 12/09/05 00:19:00 INFO mapred.JobClient: Data-local map tasks=1 12/09/05 00:19:00 INFO mapred.JobClient: SLOTS_MILLIS_REDUCES=10153 12/09/05 00:19:00 INFO mapred.JobClient: File Output Format Counters 12/09/05 00:19:00 INFO mapred.JobClient: Bytes Written=19 12/09/05 00:19:00 INFO mapred.JobClient: FileSystemCounters 12/09/05 00:19:00 INFO mapred.JobClient: FILE_BYTES_READ=33 12/09/05 00:19:00 INFO mapred.JobClient: HDFS_BYTES_READ=121 12/09/05 00:19:00 INFO mapred.JobClient: FILE_BYTES_WRITTEN=43265 12/09/05 00:19:00 INFO mapred.JobClient: HDFS_BYTES_WRITTEN=19 12/09/05 00:19:00 INFO mapred.JobClient: File Input Format Counters 12/09/05 00:19:00 INFO mapred.JobClient: Bytes Read=15 12/09/05 00:19:00 INFO mapred.JobClient: Map-Reduce Framework 12/09/05 00:19:00 INFO mapred.JobClient: Map output materialized bytes=33 12/09/05 00:19:00 INFO mapred.JobClient: Map input records=1 12/09/05 00:19:00 INFO mapred.JobClient: Reduce shuffle bytes=0 12/09/05 00:19:00 INFO mapred.JobClient: Spilled Records=4 12/09/05 00:19:00 INFO mapred.JobClient: Map output bytes=23 12/09/05 00:19:00 INFO mapred.JobClient: CPU time spent (ms)=5200 12/09/05 00:19:00 INFO mapred.JobClient: Total committed heap usage (bytes)=218169344 12/09/05 00:19:00 INFO mapred.JobClient: Combine input records=2 12/09/05 00:19:00 INFO mapred.JobClient: SPLIT_RAW_BYTES=106 12/09/05 00:19:00 INFO mapred.JobClient: Reduce input records=2 12/09/05 00:19:00 INFO mapred.JobClient: Reduce input groups=2 12/09/05 00:19:00 INFO mapred.JobClient: Combine output records=2 12/09/05 00:19:00 INFO mapred.JobClient: Physical memory (bytes) snapshot=216649728 12/09/05 00:19:00 INFO mapred.JobClient: Reduce output records=2 12/09/05 00:19:00 INFO mapred.JobClient: Virtual memory (bytes) snapshot=770465792 12/09/05 00:19:00 INFO mapred.JobClient: Map output records=2
15. M/R sonucu oluşan dosyayı görüntülemek için:
$ hadoop dfs -ls result/ Found 3 items -rw-r--r-- 1 devveri supergroup 0 2012-09-05 00:18 /user/devveri/result/_SUCCESS drwxr-xr-x - devveri supergroup 0 2012-09-05 00:18 /user/devveri/result/_logs -rw-r--r-- 1 devveri supergroup 19 2012-09-05 00:18 /user/devveri/result/part-r-00000 $ hadoop dfs -cat result/part-r-00000 hadoop! 1 hello, 1
Tüm bu adımları başarıyla geçtiyseniz tek bir bilgisayar üzerinde Hadoop kurulumunu başarıyla yapmışsınız demektir. Son olarak “Warning: $HADOOP_HOME is deprecated” hatasını görüyorsanız hadoop-env.sh dosyasına aşağıdaki satırı eklemeniz gerekiyor:
export HADOOP_HOME_WARN_SUPPRESS="TRUE"
Kaynak:
Single Node Setup
MapReduce Tutorial
Hadoop MapReduce Örnek Uygulama Apache Hive
Merhabalar;
Makalenizi gerçekten çok faydalı buldum. Yazılarınızın devamını diliyorum, hadoop ve alt yazılımları ilgili Türkçe makale malesef fazla yok. Lütfen, vakit buldukça konuya eğilim gösterin. Her ne kadar Hadoop kullanacak boyutta veri ve harddisk bulamamış olsam da konuyu çok merak ediyor ve üstünde çalışmalar yapıyorum. Bu konu da da Türkçe içerikli bir sonuç bulmak gerçekten sevindirici oluyor.
Teşekkürler.
Selamlar,
Bildiğim kadarıyla wikipedia tüm verisinin indirilmesine izin veriyor, bu veriyi örnek olarak kullanabilirsiniz. Bunun dışında internette örnek olarak bulabileceğiniz başka veriler de mevcut. Wiki için şuraya bakabilirsiniz: http://en.wikipedia.org/wiki/Wikipedia:Database_download
Merhaba,
öncelikle bu faydalı paylaşım için teşekkürler.
Benim 3 sorum olacaktı..
1. Bu Apache‘nin son stabil sürümü olan 1.0.3 ve de Cloudera’nın CDH3 sürümü olan Hadoop arasındaki fark ne dir ? Hangisini kurmam gerektiği konusunda şüpheye düştüm de ?
2. Ben öncelikle Hadoop ‘u standalone ve sonrasında Pseudo-Distributed ve en son da cluster olarak kurmak istiyorum ki adım adım denemek istiyorum. Bunun için hangi sürüm daha uygundur acaba ?
3. Bu stable ve daha bir sürü sürüm var. Acaba bu stable sürüm ne oluyor ? 🙂
Şimdiden çok teşekkür ederim..
Selam,
Cloudera’nın sürümünde Apache’nin sürümünden farklı olarak bazı bugfixler, performans iyileştirmeleri vs mevcut ama en büyük farkı Cloudera Manager gibi bir arayüzü olması, bu arayüzden hbase, hive vs gibi kurulumların kolayca yapılabilmesi. Bildiğim kadarıyla 50 node’a kadar ücretsiz, daha sonrası için para ödemek icap ediyor.
Bence standalone kurmanın pek bir anlamı yok, pseudo-distributed kurup kurcalayıp daha sonra cluster olarak kurmak bana daha anlamlı geliyor.
Şu anki sürümlerden 1.0.X olan stabil sürüm, yani en çok kurulup kullanılan bol bol test edilmiş güncel sürüm. Diğer sürümler ise beta ya da eski sürümler. İlla yeni kod yapısında bulunan bir özellik gerekmiyorsa sağlıklı bir kurulum için stabil olanı kurmakta fayda var. Şu an en güncel sürüm 1.0.4 olarak görünüyor.
Ben şimdiye kadar gerçek ortamda hep Apache sürümünden gittim. Ancak Cloudera’nın sürümünü de kurup incelemek istiyorum.
Merhaba;
Benim bir iki yerde problemim oldu öncelikle kullandıgım sitemi belirtiyim;
ubuntu 12.10- hadoop version 1.0.3 java version 1.7
6. aşamada ne yapılması gerektiğini tam olarak anlamadım, windows kullanıyor olsam ProgramFiles/Java/jdkx gibi bir path verebilirim ama sizin gösterdiğiniz path de ki java nın içi tamamen boş bende.
9 cu aşamada hadoop namenode -format komutunda
” hadoop : command not found ” diye bir hata alıyorum bunun sebebini de anlamış değilim
Ek olarakda başında hadoop olan komutları kullanamıyorum, java home problemini hallettim ancak consol üzerinde start-all.sh v.b komutlar calısmıyor command not found diyor
8. adımda Hadoop’un bulunduğu dizini de HADOOP_HOME olarak set ediyoruz. Ayrıca bunu PATH değişkenine ekliyoruz. PATH değişkenine eklerseniz o zaman terminalde herhangi bir yerden bu komutlara ulaşabilirsiniz. Aksi takdirde sürekli path vermeniz gerekir.
HADOOP_HOME=/usr/java/hadoop
PATH=$PATH:$HADOOP_HOME/bin
Ubuntu’da java normalde /usr/lib/jvm/ klasörünün altında oluyor. Sizde buraya bakıp JAVA_HOME değişkenini set edebilirsiniz.
Merhaba,
Hadoop 2.1.0 betayı ubuntu 12.04 kuruyorum.
İlk 9 işlemi tamamladım fakat 10.da start-all.sh komutunu yazdığımda böyle bir komut bulunmamaktadır diyor.
Nerde hata yapmış olabilirim?
.bash_profile ya da .bashrc dosyasının içinde şu satırların yer aldığından emin olun:
HADOOP_HOME=/usr/java/hadoop
PATH=$PATH:$HADOOP_HOME/bin
Burada yaptığımız Hadoop’u kurduğunuz dizinin altındaki bin dizinini PATH’e ekleyerek heryerden erişebilmek.
Eğer olmaz ise direkt kurulumu yaptığınız dizin altındaki bin dizinine girip ordan çalıştırın. Dosyanın orda olduğundan emin olun.
Merhaba,
Bu güzel anlatım için teşekkürler…
– Hadoop kurulumu sonrasında test amaçlı çok büyük boyutta olmayan bir veriyi oluşturabilceğimiz script yada bu datayı nasıl oluşturabileceğimize ait yol gösterebilirmisiniz ?
– Oracle’dan Hadoop’a veri taşıma konusunda tecrübelerinizi ve inceleyebileceğimiz kaynak varsa paylaşabilirmisiniz ?
Teşekkürler…
Merhaba ben en başta ki sudo apt-get install ssh komutunu yazıyorum ancak paketlerim yüklenemiyor.Yardımcı olur musunuz._?
Öncelikle paylaşım için teşekkürler Hakan Bey.
Ben multi-node hadoop clusterı kurmak istiyorum bu yüzden sizin dökümanlarıda kullanarak farklı bilgisayarlara single node kurulumları gerçekleştirdim bu bilgisayarlar birbirlerine ping atabiliyor.Bundan sonra yapılacak adımları bir multi-node kurulumu nasıl yapılır şeklinde paylaşırsanız çok sevinirim.Başka dökümalarda multi node kurulumları var ama orda ayrı hadoop grubları oluşturduğundan ssh ile ilgili sorunlar oluşuyor.
Teşekkürler.
Selam,
Gerçek cluster kurulumu için eğer Apache dağıtımını kullanmak zorunda değilseniz Cloudera veya Hortonworks dağıtımlarını kurmanızı tavsiye ederim. Cloudera Manager veya Ambari yardımı ile küme kurulumu gerçekten çok kolay. Manual kurulum yapacaksanız gerçekten çok uğraşmanız gerekiyor, her komponenti tek tek kurmanız, ayarlamanız gerekiyor.
Selamlar
Elinize sağlık.Çok güzel bir yazı olmuş.sorum belki temel olacak ama merak ediyorum gerçekten.
‘core-site.xml’ dosyası ne amaçla kullanılıyor. Bu php ‘deki php.ini ile aynı işlevdemi.
Şimdiden teşekkürler.
Adı üzerinde, core-site.xml içerisinde temel ayarların bulunduğu konfigürasyon dosyası. Genel ayarlar bu dosya içerisinden yapılır.
Merhabalar,
Ben start-all.sh komutu ile başlatıyorum ancak jps komutu ile süreçleri listelediğimde yalnızca jps:7180 yazıyor diğer süreçler listelenmiyor. http://localhost:50070 sayfasına da ulaşamıyorum. yardımcı olursanız sevinirim. Teşekkürler.
Kurulumda bir sıkıntı olmuştur mutlaka. Belki de formatlama aşamasını atlamış olabilirsiniz.