18 Kasım 2014 Salı

Hadoop MapReduce Dosyalar ile Çalışma

Hoddop kümseinde paralel olarak çalışacak mapReduce programlarında bazen dışarıdan verilere ihtiyaç duyulabilir. Bu durumda join işlemlerinin getireceği maliyet gözönünde bulundurularak bu tür kayıtlar çalışacak Job'a konfigürasyon  dosyası olarak eklenir. Hadoop bir job başlatılırken "-files" "-archives", "-jars" ile gönderilen parametreleri Distributed Cache'e yükler. TaskTracker "run" metodunu çağırmadan önce Distributed Cache deki dosyaları lokal diske kopyalar.  Böylelikle bu dosyalar Hadoop Distributed cache'e atılacağından program içerisinden rahatlık ile kullanılabilir.

Bir dosyayı çalışma anında bir job'da kullnabilmek için job başlatılırken "-files dosyaAdi.txt" şeklinde parametre olarak geçilebilir. Birden fazla dosya yüklenecek ise virgül ile ayrılır. Bu işlem kod içerisinden de "addCacheFile" gibi metodlar ile gerçekleştirilebilir. Yüklenen bu dosyaların Job içerisindeki tanımlanan "setup"   methodları içerisende "new File (dosyaAdi.txt)" şeklinde çağırılıp kullanılabilir. Ya da kod içerisinde "context.getLocalCacheFiles()" yada eski API de bulunan "DistributedCache.getLocalCacheFiles(conf)" metodları ile bu dosyalara erişilip kullanılabilir.

Tüm bunlara ek olarak dosyalar Distributed Cachede bulunan dosyalar lokal diske yazılırken, "-libjar"  parametresi ile tanımlanmış dosyalar task'ın classpath'ine eklenir. Task tracker aynı zamanda cache de bulunan bir dosyanın kaç task tarafından kullanıldığı ve kullanımının sona erip ermediği bilgisinide tutar. Bir dosya hiç bir task tarafından kullanılmıyor ise silinecekler listesine eklenir ve cache size 10 GB'a eriştiğinde silinir. 10 GB değeride parametrik olarak "local.cache.size" parametresi ile tanımlanabilmektedir.


Hiç yorum yok:

Yorum Gönder