Ana içeriğe atla

Netbeans & Hadoop ile Kelime Sayma Programı Wordcount with Hadoop in Netbeans



Ö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

Bu blogdaki popüler yayınlar

İstiyorum Birlikte

yaşamak güzellikleri birlikte keşfetmek dünyayı birlikte güneşin doğuşunu ve batışını izlemek İstiyorum birlikte elini tutmak sımsıkı söylemek istediklerimi söylemek içimden geçenleri anlatmak yaşamak seni sonusuza dek gülmek ağlamak sabahlara değin konuşmak susmadan uyanmak uyandırmak bir buse ile yanında olacağını bilerek yaşamak seninle bakabilmek geleceğe omzuna yaslandığında dertlerinin yokolacağını bilmek hiç konuşmadan gözlerinin ta içine bakarak anlaşabilmek her türlü yanını sevmek onu o olduğu için sevmek aşkın adını birlikte koymak İstiyorum İstiyorum birlikte yaşamak seninle.

Sahi Neydi Aşk

Nasıl yazılırdı, nasıl okunurdu? Neden olurdu, niçin vardı? Sebebi neydi ,olmak zorunda mıydı? Neden peşinden koşulurdu? Başlangıcı neydi, sonu ne olacaktı? Hayal miydi, gerçek miydi? Rüya mıydı ,düş müydü? Çıkar yolmuydu ,çıkmaz sokak mıydı? Liman mıydı, okyanus muydu? Sabah mıydı ,akşam mıydı? Özgürlük mü, esaret miydi? Sahi neydi aşk?

Sezen Aksu

Dönüp dolaşıp yeniden aynı küpçü dükkanına gelirmiş ya insan, Sezen Aksu tabir de öyle benim için çok farklı tarzda şarkılar dinlemeyi severim, ama Minik Serçe durur durur tekrar kendine çağırır , dinle beni der, kulak ver bana Sezen Aksu - Kursuni Renkler from Ozgur Cengiz on Vimeo .