Category: Türkçe

Date:

Şu anki işyerimde görevim dağıtık graph işleme yapmak. Milyarlarca edgee sahip graphları işlemek istediğinizde sıradan Graph kütüphaneleri maalesef yetersiz kalıyor. Bu durumda dağıtık graph işleme kütüphanelerine başvurmak durumundasınız. Benim de görevim dağıtık olarak PageRank, HostRank vb algoritmaları kodlamak. Bu algoritmaları kodlamak için hangi araçları kullanabiliriz diye düşündüğümde ilk başta aklıma son zamanlarda popüler olan Neo4j, Titan gibi Graph veritabanları geldi. Ancak bunlar verileri saklamak ve değiştirmek için iyiydi. Toplu işlem ve hesaplama yapılacak olduğunda çok da iyi performans vermeyebilirdi. Diğer alternatif Apache Nutch‘ın 1.x sürümlerinde yapıldığı gibi MapReduce paradigmasını kullanarak kodlamak idi. Ama o durumda da clusterdaki nodelar arasında gereksiz birçok veri aktarımı yapılıyor ve performans düşüyordu. Googleın bu hesabı nasıl yaptığını araştırdığımda kendi yazdıkları Pregel adlı kütüphaneyle karşılaştım. Ancak bu kütüphane Googlea ait ve dış kullanıma açık değil. Apache vakfı da bu kütüphanenin bir klonunu Java ile yazmış: Apache Giraph. Jython desteği de henüz geldi ancak tam olgunlaşmadı.

Ben de kodlarımı Apache Giraph ile yazıyorum. Bu kütüphanenin modeli olan Bulk Synchronous Parallel  ile muhtemelen her algoritma yazılamaz ancak yazılabilecek birçok algoritma vardı. Ben de PageRanki ve HostRanki bu kütühpane ile yazdım, bazı özellikler ekledim. Yazdığım kodları Girapha gönderdim. Şu sıralar da yazdığım kodun Apache Nutch 2.x crawlerının skor hesabını yapması için yama yapıyorum.

Yakınlarda Giraphın  Facebooktaki baş geliştiricisi Avery Ching, bir yazı yayınladı ve 1 trilyon edgei Giraph ile nasıl işlediklerini anlattı. Oldukça ciddi bir rakam. Kütüphanenin ilk sürümü mayısta yayınlandı. Deposu hızlı gelişiyor. O yüzden dökümantasyonu çok iyi değil. Sık sık API değişiklikleri olabiliyor, sürüm güncellediğinizde kodunuzu değiştirmek zorunda kalabiliyorsunuz. Herhalde 1-2 seneye daha oturaklı hale gelir.

Giraph, HDFSten, HBase veritabanından ve Rexter aracılığıyla Neo4j ve Titan gibi veritabanlarından girdi alıp sonuçlarını yine bu kaynaklara yazabiliyor. Bu da oldukça güzel bir özellik.


Share: FacebookGoogle+Email


comments powered by Disqus