GittiGidiyor'da Big Data ve Hadoop Teknolojileri - GittiGidiyor Blog - GittiGidiyor'da Neler Oluyor?
GittiGidiyor‘da 2001 yılından bu yana 30 milyonun üzerinde satış işlemi gerçekleşti. 2012 yılında %46, 2013 yılında ise %69’luk bir büyüme kaydetti., 10 milyon olan üye sayımız geçen seneye oranla %23 arttı. Sadece 2013 Aralık ayında 15 milyonu aşkın ziyaretçi ile 34 milyon ziyaret sayısına ulaştık. Mobil uygulamalarımız ise 1.5 milyon indirme rakamına ulaştı. Rakamlar böyle olunca 2001 yılından bugüne bu kadar büyüyen ve büyümeye de devam eden bir firmanın veri miktarının da hayli büyük olduğunu tahmin edersiniz. Bir örnek vermek gerekirse; 2007 yılında GittiGidiyor’da çalışmaya başladığımda aktif ürün sayısı 800 bin iken bugün bu rakam 5.5 milyon. Elbette eBay gibi bir dünya devinin veri boyutu ile kıyaslanamaz ancak yine de ilişkisel veritabanı teknolojileri ile bu verileri işlemek çok efektif olmayabiliyor. Bu yüzden GittiGidiyor bünyesinde ‘Big Data‘ teknolojileriyle yakından ilgileniyoruz.
Örneğin; ürün açıklamaları gibi ilişkisel olmayan verilerimizi daha esnek yapıya sahip olması ve ölçeklendirebilme yeteneklerinden dolayı MongoDB veritabanlarında tutuyoruz. Arama altyapımızda Solr projesini yoğun bir biçimde kullanıyoruz. Cassandra, ElasticSearch, Redis gibi teknolojileri de çeşitli projelerde kullanıyoruz ya da kullanmayı planlıyoruz.
Ancak Big Data teknolojileri denildiğinde özellikle son iki yıldır akla ilk olarak Hadoop geliyor. Hadoop, kısaca büyük miktardaki veriyi dağıtık bir dosya sistemi üzerinde saklamayı ve işlemeyi sağlayan bir platform. Hadoop teknolojisini ilk olarak 2011 yılında geliştirdiğimiz Akıllı Sıralama projesi kapsamında altyapımıza dahil ettik.
Akıllı Sıralama projesi sayesinde arama sonuçlarında kullanıcılara milyonlarca ürün içerisinde aradıkları ürüne en uygun sonuçları getirdik.
Akıllı Sıralama projesinin amacı milyonlarca ürün içerisinde yapılan arama sonucunda kullanıcıya en uygun sonucu sunmak. Bu işlevselliği sağlayabilmek için kullanıcıların yaptıkları aramalar üzerinden ihtiyacımız olan anlamlı verileri çıkartıp kullanmamız gerekiyordu. Sürekli büyüyen ve belirli bir yapısı olmayan (unstructured) bu verileri en rahat şekilde saklayıp analiz edebileceğimiz altyapı olduğu için Akıllı Sıralama projesini yaparken Hadoop’u tercih ettik. (Hadoop üzerindeki verileri analiz ederken MapReduce dışında Pig ve Hive projelerinden de faydalanıyoruz.)
Akıllı Sıralama nasıl akıllı?
Akıllı Sıralama birçok kriterden oluşuyor. Bu kriterlerden bir tanesi de ‘Baskın Kategori’. GittiGidiyor’da yapılan bir kelime araması sonucunda bulunan ürünleri kategorilerine göre gruplayarak arama sayfasının sol bölümünde gösteriyoruz. Burada daha iyi bir kullanıcı deneyimi sağlamak için o kelime ile en çok ilişkili kategoriyi en üstte göstermeyi amaçlıyoruz. Bunun için daha önceki arama verisini inceleyerek kullanıcıların yaptıkları kelime araması ardından hangi kategoriye tıkladığını inceleyerek en çok tıklanan kategoriyi baskın kategori olarak belirliyoruz ve sıralama yaparken de bu bilgiden faydalanıyoruz.
Bu sayede örneğin ‘nokia’ kelimesi cep telefonu kategorisinde çok fazla aksesuar olmasına rağmen aslında kullanıcılar tarafından cihazlarla ilişkilendirildiği için bu ürünlere arama sonucunda daha fazla skor vererek daha yukarı taşıyoruz. Bu sayede daha az tıklayarak kullanıcının aradığı ürüne daha kolay ulaşmasını amaçlıyoruz.
Arama ile ilgili diğer özelliğimiz de ‘ilgili aramalar‘. GittiGidiyor’da ürün başlıkları satıcılar tarafından girildiği için aynı ürüne ait birçok farklı başlık girilebiliyor. Bunun dışında arama yapan kullanıcılar çok fazla sonuç dönecek çok genel kelimelerle aramalar yapabiliyorlar. Her iki durumda da kullanıcıları aradıkları ürüne yönlendirmek için ilgili olabilecek aramaları öneriyoruz. Bunu yapabilmek için hangi kelimeleri birlikte arattıklarını arama geçmişinden çıkartıyoruz. Örneğin; “sony” kelimesi için “sony ericsson, sony kulaklık, sony ericsson xperia x10, sony xperia, sony xperia s” kelimelerini öneriyoruz.
Arama kutusuna kelimeler yazıldıkça otomatik tamamlanmasını sağlamak için yine arama geçmişindeki kelimelerden bir sözlük oluşturuyoruz. Bu sözlüğü elle oluşturmak isteseydik yeni çıkan ürünlere göre sürekli güncellememiz gerekecekti. Oysa ki kullanıcılarımız bizim yerimize bunu yapıyorlar.
Kullanıcılar arama yaparken bazen yazım hatası yapabiliyorlar. Bu durumda aradıkları ürün sitede bulunmasına rağmen ulaşamayabiliyorlar. Bu kullanıcılara ürün bulunamadı demek yerine yine arama geçmişinden de faydalanarak Google’dan alışık olduğumuz “Bunu mu demek istediniz?”özelliği ile doğru aramaya yönlendirmeye çalışıyoruz.
Arama ile ilgili olarak yapılacakların tabiki sonu yok, biz de bu konuda geliştirmeler yapmaya devamediyoruz.
Pazarlama kampanyalarında büyük veriyi nasıl kullanıyoruz?
Arama dışındaki bir başka konu ise özel pazarlama kampanyaları. Belirli bir tarih aralığında, belirli kategorileri ziyaret edip, belirli aramalar yapan kullanıcıları veri içerisinden çıkartıp, veritabanındaki alışveriş verileriyle birleştirip çok net bir hedef kitle belirleyebiliyoruz. Bu sayede e-posta veya SMS gönderimi maliyetlerini azaltmış hem de geri dönüşleri artırmış oluyoruz.
Hızlı sonuç alabilmek için ihtiyacımız olabilecek verileri özetleyerek düzenli olarak veritabanına aktarıyoruz. Örneğin; her kullanıcının siteye son girişve ziyaret bilgilerini, son gezdiği kategorileri veürünleri her gün güncelliyoruz. İşlenen veri çok olmasına rağmen Hadoop’un paralel çalışma özelliği sayesinde herhangi bir sıkıntı yaşamıyoruz. Bu verileri veritabanında saklayıp, sorgulamak istesek yüz milyonlarca satırdan oluşan tablolar tutmamız ve bu tablolarda asla sonucunu alamayacağomız sorgulamalar yapmamız gerekecekti. Tablolar hergün büyümeye devam edecek, bir süre sonra arşivleme yapmak zorunda kalacaktık. Oysa Hadoop üzerindeki verileri arşivleme bile yapmadan, üstelik sıkıştırılmış bir halde saklayıp işleyebiliyoruz.
Yine pazarlama ile ilgili olarak kullanıcıların segmentasyonunda da bu verileri kullanıyoruz. Alıcı ve satıcıları gruplayarak bu gruplara uygun promosyonlar düzenleyerek alışveriş hacmini ve hizmet kalitesini arttırmayı hedefliyoruz. Şimdilik elle belirlenen kriterlere göre gruplandırma yapılsa da ilerleyen zamanlarda veri içerisindeki örüntüleri ortaya çıkartarak segmente etmek amacıyla Kümeleme (Clustering) algoritmalarından faydalanabileceğiz.
Veriambarı amacıyla Hadoop kullanmasak da bazı verilerden özetlediğimiz bilgileri düzenli olarak aktararak mevcut veriambarımızı destekliyoruz. Bunun dışında veriambarında tutmadığımız ve ihtiyacımız olan bir rapor varsa Hive ya da Pig kullanarak kısa sürede bunları oluşturabiliyoruz. Verilerimiz yapılandırılmamış bir formatta olmasına rağmen Hive ve Pig için yazdığımız SerDe ve Loader metodlarını kullanarak sanki bir tabloymuş gibi istediğimiz şekilde filtreleme, sıralama ve join işlemleri yapabiliyoruz. Özellikle çok büyük verilerde join gerektiren operasyonlar yapabilmek büyük bir avantaj sağlıyor. Yakın zamanda Hive’ın ODBC arayüzünü de entegre ederek direkt olarak raporlama amacıyla kullanmayı planlıyoruz.
Kişiselleştirme de verilerden faydalanarak yapılıyor
SMS ve bazı email gönderimlerinde kişiselleştirme yaparken de bu verileri kullanıyoruz. Mobil uygulama ana sayfasında da kişiselleştirme yaparak kullanıcıların daha önce ziyaret ettikleri kategorilerden de faydalanarak ilgileniyor olabilecekler ürünleri gösteriyoruz. Henüz geliştirmesine devam ettiğimiz öneri sistemimizde Mahout projesini kullanıyoruz. Öneri sistemi sayesinde birbirini destekleyen, birbiriyle ilişkili ürünleri kullanıcılarımıza önerebileceğiz. Bunların dışında A/B testleri, özel analitik raporları ve bazı uygulamaları desteklemek için de yine Hadoop’dan faydalanıyoruz.
Önümüzdeki dönemde geliştireceğimiz projeler içerisinde büyük veriden faydalanmaya devam edeceğiz. Örneğin; güvenli e-ticaret hizmeti verebilmek için yaptığımız güvenlik kontrollerinde Yapay Öğrenme (Machine Learning) konularından Sınıflandırma (Classification) algoritmalarından faydalanabiliriz. Yine kullanıcıların listelediği ürünleri doğru kategoride listeleyip listelemediği anlamak için de aynı teknikleri kullanabiliriz. Bu algoritmaları hali hazırda da kullanabiliriz ancak Hadoop bunu ölçeklenebilir bir şekilde yapmamıza imkan sağlıyor.
Son günlerde oldukça popülerleşen Impala, Stinger, Presto gibi Dağıtık SQL Motorları (Distributed SQL Query Engine) sayesinde gerçek zamanlı raporlama yapma şansımız olacak. Bu sayede hiçbir üçüncü parti yazılımın bize sağlamadığı raporları anlık olarak alabilme olanağına kavuşacağız.
Hadoop, elbette bu konudaki tek çözüm değil. Big Data teknolojileri durmaksızın gelişmeye devam ediyor. Burada bize düşen bu teknolojileri yakından takip ederek projelerimizde hayata geçirmeye çalışmak.
Veriniz bol olsun! 🙂
24-03-2014 Teknoloji 1 Yorum 2
GittiGidiyor'da Yazılım Takım Lideri olarak çalışmaktadır.
← 13 yaşındaki GittiGidiyor 2013’te %69 büyüdü! Çocuk Olmak! →
One thought on “GittiGidiyor’da Big Data ve Hadoop Teknolojileri”
Anil 24 Mart 2014 at 21:24
Eline saglik hakan cok guzel yazi olmus.