11 Kasım 2014 Salı

MapReduce Sayaçlar (Counter)

MapReduce programları çalışırken sayaç (counter) kayıtlarındaki değerle çalışma esnasındaki gerçekleşen işlemler ile ilgili bize çeşitli bilgiler sunabilir. Hadoop altyapısında bulunan standart sayaçlara ek olarak kullanıcıların ihtiyaçları doğrultusunda yeni sayaçlarda tanımlanabilmektedir.

Tanımlanan sayaçlar Java enum yapısında olmakta. Örn:

public class OdemeAnaliz extends Configured implements Tool {

//Sayaç tanımı
enum OdemeTuru{
KrediKarti,
Nakit
}

public static class Map extends Mapper<LongWritable, Text, Text, IntWritable> 
 {......
//Sabit Sayaç
context.getCounter(OdemeTuru.KrediKarti).increment(1);
......
//Dinamik Sayaç
context.getConter("OdemeYil", getOdemeTarih()).increment(1);
......
  }
}

Örnekte 2 adet sabit 1 adet dinamik sayaç tanımlandı. Sabit enum olarak tanımlanan sayaçlar jobTracker arayüzünde enumda tanımlandığı ismi ile görülmekte. Bu ekilde görüntülenmesi çok kullanıcı dostu değil. Ekranda bu sayaçların farklı şekilde görüntülenmesini istersek bir .properties dosyası oluşturularak burada tanımlamalar yapılmakta. Bu dosya sayacın tanımlandığı sınıf ile aynı dizine konulmalı.
Bu dosyanın isimlendirmesi sınıfIsmi_enumIsmi.properties kalıbında olmalı. Dostya içindeki tanımlamalar ise aşağıdaki kalıpta olmalı:

CounterGroupName=Ödeme Türleri
KrediKarti.name=Kredi Kartı ile Ödeme Sayısı
Nakit.name=Nakit Ödeme Sayısı

Bu tür bir dosya tanımı yapıarak sistemin farklı dilleri desteklemesi sağlanabilmekte. İngilizce için sınıfIsmi_enumIsmi_en_EN.properties Türkçe için sınıfIsmi_enumIsmi_tr_TR.properties olarak dosyalar tanımlanarak sistemin farklı dillerde sayaç bilgilerini sunması sağlanabilmekte.

Hiç yorum yok:

Yorum Gönder