Özet
Ubuntu 9.10 üzerinde gerekli olan java
kurulumlarını yaptıktan sonra hadoop'un en son
sürümü olan hadoop 0.20.02
sisteme entegre edelim
NetBeans 6.7.1 de karmasphere hadoop application
güncellemesini ayarlamakla başlayalım.Daha sonra birçok
sistemde kullanışlı olan wordcount uygulamasını build
ederek ;sonradan hadoop job oluştururken
kullanılacak jar dosyamı oluşturup.Wordcount job
uygulamasını run ederek daha önceden
oluşturduğum input dizinindeki text dosyaları
işlenerek output dizini altında hangi kelimeden kaç
tane kullanıldığını test edelim.
Keywords
WordCount, Hadoop, NetBeans, MapReduce,
Karmasphere, Job
1. Giriş
İlk olarak hadoop nedir ile projeye başlamak
istiyorum.
Dağıtık sistemlerde en çok kullanılan program
Apache'nin Hadoop’udur. Hadoop, Java
programlama dilinde yazılmış framework’tür.
Amacı Google Dosya Sistemi teknolojisi olan Map-
Reduce algoritmasını birçok bilgisayara dağıtarak
uygulamayı sağlamaktır.
Google, Yahoo ve Facebook gibi büyük
internet siteleri kendi sistemlerindeki verileri
sürekli analiz ederler.Bunun için artık
SQL(Structured Query Language) ve
RDBMS(Releational Database Management
System) kullanmıyorlar.Hadoop gibi keyword-value
sisteminini kullanmak teknolojik açıdan çok
önemli.Hadoop dağıtık sistem olarak
çalışabilmektedir. Bütün storage, searching,
indexing işlemlerini bu sisteme yaparak daha fazla
performans velde edilmiş olacaktır.Bu
performansın içinde zaman önemli yer
tutar,mesela google'da yapılan bir arama işleminin
saliselerle bize ulaşmasını sağlayan algoritma olan
Map-Reduce. Hadoop da bu algoritmayı
kullanmaktadır.Bu şekilde TB'larca veri dağıtık
olarak analiz edilerek sonuç döndürülmektedir.
Hadoop bu işi job'lar kullanarak yapmaktadır,ve
her işlem için ayrı birer job oluşturulur.
2. Nasıl Yaparım?
Önceden JDK 1.6 and Netbeans kurulumunun
yapıldığını varsayarak işleme başlayabiliriz.
A. Install Karmasphere Studio for Hadoop
adresinden başlangıç olarak Karmasphere Studio for
Hadoop kurulumunu yapıyoruz.Get it now, deyip;
KS Community Edition (Free) indirin.
Mail adresimize gelecek olan key daha sonra lisans
agreement yaparken gerekecektir.
1-NetBeans açılarak Tools > Plugins.
2-Settings tabında Add
Name: Karmasphere Studio for Hadoop
URL: http://hadoopstudio.org/updates/updates.xml
düzenlemelerini yapıyoruz.
3-Available Plugins tabında “Karmasphere
Studio for Hadoop bulunarak installation
yapılır,sonra restart IDE ile NETBeans yeniden
başlatılır.
B. Kodlama kısmı
1-File > New Project. Java Application project
ve click next.
2-Proje adı: WordCount . Type
WordCount as the Main Class. Ve Finish diyoruz.
3-WordCount.java şimdi açıldı.
4-Libraries WordCount project folder ile sağ
tıklayıp Add Library. İle Hadoop 0.20.2 seçilir.
5-WordCount.java da kodlar düzenlenebilir duruma
gelmiştir.
KODLAR:
package wordcount;
import java.io.IOException;
import java.util.*;
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.io.*;
import org.apache.hadoop.mapred.*;
public class WordCount{
public static class Map extends MapReduceBase implements Mapper{
private final static IntWritable one = new IntWritable(1);
private Text word = new Text();
public void map(LongWritable key, Text value, OutputCollector output, Reporter reporter) throws IOException{
String line = value.toString();
StringTokenizer tokenizer = new StringTokenizer(line);
while(tokenizer.hasMoreTokens()){
word.set(tokenizer.nextToken());
output.collect(word, one);
}
}
}
public static class Reduce extends MapReduceBase implements Reducer{
public void reduce(Text key, Iterator values,
OutputCollector output, Reporter reporter)
throws IOException{
int sum = 0;
while (values.hasNext()){
sum += values.next().get();
}
output.collect(key, new IntWritable(sum));
}
}
public static void main(String[]args) throws IOException{
JobConf conf = new JobConf(WordCount.class);
conf.setJobName("wordcount");
conf.setOutputKeyClass(Text.class);
conf.setOutputValueClass(IntWritable.class);
conf.setMapperClass(Map.class);
conf.setReducerClass(Reduce.class);
conf.setInputFormat(TextInputFormat.class);
conf.setOutputFormat(TextOutputFormat.class);
FileInputFormat.setInputPaths(conf, new Path(args[0]));
FileOutputFormat.setOutputPath(conf, new Path(args[1]));
try{
JobClient.runJob(conf);
}catch(IOException e){
System.err.println(e.getMessage());
}
}
}
6-/home/username/input
ile input dosyamı oluşturdum ve altında file01 ve
file02 adlı text dosyaları içinde ilkine;
Hello world Bye world
ikincisine;
Hello Hadoop Bye Hadoop
yazdım.(username=kullanıcıadı)
7-wordcount Build ederek jar dosyasını oluşturalım.
C. Hadoop Job oluşturma
1-Services tabında Hadoop Jobs sağ tıkalyıp New
job diyelim.
2-Job Name olarak WordCount deyip Hadoop Job
from pre-existing JAR file seçilir. Click Next
3-/home/username/NetbeansProjects/WordCount/dist
altındaki jar dosyası primary olarak
seçilir.
4-Set Job Defaults
In-Process Thread (0.20.2)
Default Arguments olarak;
/home/username/input /home/username/output
yazılır.
5-Job Name olan WordCount Run edilir.
6-sonuç output dosyamda şöyle gözükmektedir:
Bye 2
Hadoop 2
Hello 2
file02 1
world 2
3. Sonuç
Sonuç olarak istatistik depolama,arama ve indexleme
gibi günümüz problemlerinde hadoop bize çok yararlı
bilgileri çok kısa sürede MapReduce ile
sunabilmektedir.
4. Referanslar
Yorumlar
Yorum Gönder