17 Nisan 2016 Pazar

FLUME – 3A


Merhaba,
Önceki FLUME-1 ve FLUME-2 blog yazımız ile flume’ a giriş yapmış, örnek gerçekleştirmiş ve planımızı sunmuştum.


Yazıya ulaşmak için : http://bigdatayazilari.blogspot.com.tr/2016/04/flume-2.html

Planım Aşağıdadır:

Flume – 1 Blog Yazımda :
·                Flume nedir?
·                Ne amaçla kullanılır?
·                Nasıl Kurulur?
·                Konfigürasyon – Yapılandırma işlemleri nasıl yapılır?

Flume – 2 Blog Yazımda:
·                  Birkaç örnek yapılacaktır.  (“vmstat -1” , “tail –f file” )

Flume – 3 Blog Yazımda:
·                Twitter dinleme kapsamlı şekilde anlatılıp yapılacaktır.

Flume – 4 Blog Yazımda:
·                Flume ve kafka entegrasyonu


Bu blog yazımda “Flume – 3A” kısmına devam etmek istiyorum.  
Ancak twitter işlemleri anlatımı uzun olacağından flume-3 kısmını A, B ve C olmak üzere üç ayrı blog yazısı ile tamamlayacağım.

Twitter dinleme ve bunları hadoop ortamına atma, buradan da işlemler yapma ile ilgili internette örnekler bulabilirsiniz.
Ben de bu örnekler üzerinden gideceğim.
Piyasada hadoop – big data sunumları ve anlatımları istendiğinde ülkemizde bu işi yapan firmaların ilk verdikleri örnek “twitter verilerini dinleyelim ve hadoop ortamlarınıza aktaralım” şeklindedir.
Ülkemizde sosyal medya, sosyal medya programı vs. adı altında oldukça fazla uygulama sunan firmalar bulunmaktadır.
Bu firmalardan da profesyonel bir sosyal medya uygulamaları vs. satın alabilirsiniz.

Twitter Verilerini Dinlemek Nedir?
Konuyla ilgili sunum ve anlatım yaptığımda aşağıdaki benzetmeyi çok kullanıyorum.
Twitter verileri bir okyanus gibi.
İçinde her türlü konunun – konuşmanın – bilginin – vs.  olduğu bir okyanus gibidir.
Sizler de kendi firmanız hakkında, rakip firma hakkında ya da istediğiniz bir konu hakkında vs. bilgileri almak için twitter okyanusuna bir ağ atıyorsunuz ve ihtiyacınız olan kısmı alıyorsunuz.
İşte bu ağ nasıl atılır ve veriler nasıl çekilir bu blog yazı dizisiyle anlatılacaktır.
Gelelim blog yazımıza: Twitter verileri nasıl dinlenir? Twittler hadoop ortamına nasıl aktarılır vs. ile ilgili etrafımdan da çok soru gelmektedir.
Aslında bunlar teknik olarak zor olmayan, internetten bulunacak birkaç örnek ile çok rahat kodlama yapabileceğiniz ortamlar bulunmaktadır.
Bence asıl soru şunlar olmalıdır? Twitter verisi ne işimi yarayacak? Twitter verisi ile neler yapabilirim? Ne tür analizler gerçekleştirebilirim?
Bu sorularımızı kategorize ederek çok detaya girmeden(sosyal medya nedir? Ne işe yarar? vs.vs. kısımlarına çok girmeden) aşağıda cevaplarını bulmaya çalışalım.
Teknik Arkadaşlarımızın Soruları:
·        Twitter verileri nasıl dinlenir?
·        Twitter verileri hadoop ortamına ya da kendi veritabanlarımıza nasıl aktarılır?
·        Twitter verilerini real time ya da near real time nasıl dinlenir ve aksiyon alınır?
Cevaplar:
      Twitter verilerini dinlemenin benim bildiğim 2 temel yolu vardır.
Birinci Yöntem:
Twitter firması ile anlaşmalı ve direkt olarak twitterdan geçmişe yönelik de veri çekebilen firmalar vardır.
Ben iki tanesini biliyorum. İnternetten search ederseniz bir çok firma bulabilirsiniz.
Bu firmalar sizin uygulama vs. yazmadan istediğiniz keywordlere göre yapacağınız anlaşma gereği twitter başına para alarak bu verileri sunmaktadır.
Ayrıca artı bir özelliği olarak geçmişe yönelik verilerede erişim sağlanmaktadır. Yani bir yıl öncesinden firmam ile ilgili çıkmış reklam ile ilgili twitleride istiyorum diyebilirsiniz.
Yani bu firmalar ile sözleşme imzalarsınız ve twitter verilerine erişirsiniz.
İkinci Yöntem:
Kendiniz bir uygulama yazarak, free şekilde twitter verilerine erişebilirsiniz.
Bunun için twitter firması tarafından sağlanan Twitter4J api kütüphanesini kullanırsınız.
Bu api free’ dir.
Peki paralı yöntem olan birinci yöntem ile farkları nedir?
Twitter4j ile geçmişe yönelik bir sorgulama yapamazsınız.
Ayrıca twitter dinleme sonucu gelen kayıt sayısı belirli bir süre için sınırlıdır.
Fakat bu sınırı geçmek güçtür.  
Hatırladığım kadarıyla 15 dk. 18 bin twit için twitter4j kullanılabiliyor.
Bu rakam belki değişmiş olabilir.
Fakat 15 dk. 18 bin twit gerçekten ciddi bir rakamdır.
Firmanızı ve hatta rakip firmaları, kampanyaları vs. dinlemeye başladığınızda belki günlük 2-3 bin twiti bile aşamayacaksınız.
İkinci yöntemde flume ile twitter4j api entegre ederek çalıştırabileceğiniz bir yapı da bulunmaktadır.
Biz örneğimizi basit anlamda bir flume ile dinleyerek yapacağız.
     
İş Birimlerin - Analizcilerin – Müdürlerimizin – Karar Alıcıların vs. Soruları:
            Twitter verisi ne işime yarayacak?
            Twitter verisi ile neler yapabilirim?
            Twitter verisi ile ne tür analizler yapabilirim?
Cevaplar:
Twitter verileri ile ya da sosyal medya verileri ile piyasada sizin firma hakkında neler düşünülüyor – tartışılıyor – konuşuluyor öğrenebilirsiniz.
Firmanızın imajı – kampanayalar – çıkan reklamların piyasadaki etkisini – beğenilmiş mi? öğrenebilirsiniz.
Rakip firmaları da dinleyerek firmanız ile çoğu konuyu mukayese edebilirsiniz.
Türkçe’ mizin zorluğundan da kaynaklansa sentiment analizlerini twitter verileri üzerinde yapabilirsiniz. Gelen twitlerin duygusu pozitif mi? negatif mi? ölçebilirsiniz.
(ayrı bir parantez açarak yüzde yüz, yüzde 90’ ın üzerinde sentiment analizlerini doğru yapıyorum diyenlere kuşku ile yaklaşınız.
Bir örnek verelim. Sizce aşağıdaki twit sizin adınıza pozitif mi negatif mi?
“”ABCD firması manyak bir ürün çıkarmış! Peh!”
 Burada sona konulan peh kelimesi ayrıca iki tane ünlemin olması ve “manyak” kelimesi olumlu mu? Olumsuz mu? İğneleme mi? Alay etme mi? kinaye mi? vs.vs. şeklinde tartışsak çok sonuç çıkacaktır. )

Twitter Verilerinin Big Data ile Ne İlgisi Var?
            Bigdata’ yı anlatırken 3V + 1V ’ den bahsetmiştik.
            Twitter bu 3V+1V ‘ ye uygun mu bakalım?
Volume – Hacim , Velocity – Hız , Variety - Çeşitlilik :
Twitter verilerin hacmi oldukça fazladır.
            Konuyla ilgili internette pek çok istatistik bulabilirsiniz.
Ülkemizde benim bildiğim kabaca: 12 milyonun üzerinde twitter kullanıcısı, 6 milyonu aktif şekilde kullanıyor, günlük 14 milyon twit gönderiliyor.  
Günlük sadece ülkemizde akan twit sayısı bile çok fazla. Yani hız bakımından da bigdata’ ya uygun bir konu.
Ayrıca twit verileri json data şeklinde tutmaktadır.
Alışık olduğumuz tablo yapısı şeklinde değildir.
Son V-Value –Değer kısmını ise “Twitter Verileri Ne İşimize Yarayacak?” sorularında cevap aramıştık.

Bir sonraki FLUME-3B yazısında twitter verilerini dinlemek için https://dev.twitter.com/apps/  adresinden twitter access token almayı ekran görüntüleri ile göstereceğim.
Flume – 3C yazısında bu access token’ ları flume ile kullanarak istediğiniz keywordleri hadoop hdfs ortamına aktaracağız.
  
Bugünkü blog yazımız bu kadar.
Bir sonraki blog yazımda görüşmek dileğiyle.
Lütfen, yorumlarınızı bekliyorum.
mmetin


6 Nisan 2016 Çarşamba

Teradata Aster Discovery Platform -2


Merhaba,
Bundan önceki ASTER  blog yazımda aşağıdaki sorulara cevap aramıştık.
·        Aster Nedir?
·        Aster’ de Storage Olmasının Anlamı Nedir?
·        Kendi Diski - Storage Olmasının Avantajı Nedir? 
·        Aster Virtual Machine
·        Aster’ de ”Kabul Etmemiz Gereken Bazı Ön Bilgiler
·        Discovery – Döngüsel Yapı Nedir?
·        Neden Ticari Bir Ürün Kullanayım?
·        Aster’ de Kullanabileceğim Fonksiyonlar Nelerdir? 
Önceki blog yazıma ulaşmak için:
Bu blog yazımda aster’ de kullanılan temel 4 grafikten- diyagramdan bahsetmek istiyorum.
Elbette aster’ de sadece 4 grafik yok. Bundan daha fazlası var. Fakat bu bloğumda en çok kullanacağız 4 tanesinden bahsedeceğim.

Yine ilk blog yazımda discovery – döngüsel yapıyı anlatırken “Çıktısını İncele…” şeklinde son maddeyi yazmıştım.
Bu adım aslında yapmış olduğunuz veri keşfi sırasında elde edeceğiniz çıktı – ürün – nihai sonuç – proje sonu çıktısı – veri keşfi pattern’ i, modeli’ dir.
Aster’ de yapmış olduğunuz çalışmanın sonucunu, iş birimlerine ve ya müdürlerinize sunağınız kısımdır.
Peki Aster’ de verebileceğiniz bu çıktılar nelerdir?
Yukarıda yazdığım gibi bu blog yazıma özel 4 tanesinden bahsedeceğim.

Önemli bir bilgi :
Grafikler etkileşimli, dril down, zoom in out şeklinde çalışmaktadır.

Sankey Grafiği - Diyagramı:
Aster için bir demo – tutorial – PoC istediğinizde ilk olarak sunulan çalışmalardan biridir sankey diyagramı.

Path analizleri için birebirdir ve oldukça başarılıdır. 

Aster’ ın başarılı olduğu path analizlerin çıktısını sankey diyagramları ile oluşturabilirsiniz.
Örnekler vererek grafiğin nasıl okunduğunu anlatmaya çalışalım.
·        Churn eden müşteri topluluğun, churn etmeden önceki N hareketi nedir ve nasıl bir dağılım göstermiş sorularına cevap bulursunuz.
Müşteriniz churn etmeden önceki izlemiş olduğu yolları – path’ leri görebilirsiniz. Böylece buradan bir pattern – desen elde edersiniz.
Yani müşteriler şu şu hareketleri ve ya izleri bıraktıktan sonra yüzde 80’ i churn etmektedir sonucunu iş birimlerine – müdürlerinizle paylaşırsınız.
·        Fraud analizleri için kullanılabilecek bir diyagram türüdür sankey yada path analizi.
Bu grafikte hep kalın çizgi path kısımları dikkat çekmektedir. Churn için bunu kullandık mesela.
Fakat ince çizgi path’ lere bakarak olması gerekenin dışına çıkmış yani anomali içeren path bilgisine yada pattern – desene ulaşabilirsiniz.  
Örneğin sağlık sektöründe hastalara verilen ilaçları tarihlerine göre sankey diyagramında gösterdiğinizde kalın çizgiler doktorların çoğunun takip ettiği genel kabul görmüş sıra olarak niteleyebilirsiniz.
Fakat ince çizgili desene baktığımızda ise anomali ile karşılaşma olanağı daha yüksektir. Tedaviye uygun verilmemesi gereken bir ilaç desenini path analizlerinden çıkarıp fraud tespit edebilirsiniz.
Örnekler sayısız olarak çoğaltabiliriz.
Her sektörün use case’ leri birbirinden farklıdır.
Churn bilgisi bankacılık – sigorta - telco vs. için çok değerli bir bilgi olmasına karşın devlette – bakanlıklarda – resmi kurumlarda müşteri kaybetme yani churn bir anlam ifade etmeyebilir.
Sankey – path analizleri aster’ in çok başarılı olduğu ve hızlıca sonuçlarını görebileceğiniz yapıyı sizlere sunmaktadır.
Chord Grafiği:
            Ben bu grafiği market basket analysis’ e daha çok yakıştırmaktayım.
            Standart mining derslerinde de verilen bebek bezi alanlar aslında birada almaktadır vs. örneği gibi.


Örneğin telco sektöründe bu grafiği cdr – telefon arama kayıtları için kullanılabilir. Yurtdışı aramaları hangi yönden hangi yöne daha çok yapılmış görebilirsiniz.


Sigma Grafiği:
            Bu grafik ile “A to B” analizlerini yapabilirsiniz.
 Alıntıdır: http://www.theregister.co.uk/2015/04/23/art_of_analytics_teradata/


Bu grafiği yine cdr için kim kimi aramış nerede yoğunluk olmuş ya da sosyal network analizi gibi bağlantıları vs.  analiz edebilirsiniz.

Node Link - Tree Grafiği:


Aster konusunda yazılarıma devam edeceğim.


Belki sonraki aster yazılarımda path analizi örneğini baştan aşağıya yapabiliriz.




Bugünkü blog yazımız bu kadar.


Bir sonraki blog yazımda görüşmek dileğiyle.

Lütfen, yorumlarınızı bekliyorum.

mmetin


4 Nisan 2016 Pazartesi

FLUME -2


Merhaba,
Önceki FLUME-1 blog yazımız ile flume’ a giriş yapmış ve planımızı sunmuştum.



Planım Aşağıdadır:

Flume – 1 Blog Yazımda :
·                Flume nedir?
·                Ne amaçla kullanılır?
·                Nasıl Kurulur?
·                Konfigürasyon – Yapılandırma işlemleri nasıl yapılır?

Flume – 2 Blog Yazımda:
·                  Birkaç örnek yapılacaktır.  (“vmstat -1” , “tail –f file” )

Flume – 3 Blog Yazımda:
·                Twitter dinleme kapsamlı şekilde anlatılıp yapılacaktır.

Flume – 4 Blog Yazımda:
·                Flume ve kafka entegrasyonu


Bu blog yazımda “Flume – 2” kısmına devam etmek istiyorum.  
Yani örneklere başlıyoruz.


Bu örneğimizde Linux komutu olan “vmstat 1”  in çıktısını bir log dosyasına yazıp tail –f komutu ile bu dosyada bir değişiklik olduğunda flume ile yakalayıp hdfs ortamına bu dosyayı yazmayı yapacağız. 


Birinci Terminalde: 
vmstat 1 > vmstat_log_dosyam kullanarak vmstat’ ın sonucunu vmstat_log_dosyam üzerine yazalım.

İkinci Terminalde: 
tail -f vmstat_log_dosyam kullanarak sürekli olarak bu dosyanın güncellendiğini göreceksiniz.

Amacımız ise: 
vmstat_log_dosyam dosyasını yine tail –f komutunu flume ile dinleyip hdfs ortamına bu dosyayı yazmak olsun.


Flume.conf Dosyası Konfigürasyon İşlemleri:
Aşağıdaki içeriği flume_egitim.conf  adında boş bir dosyaya kopyalayınız.

Not: önce örneği hızlıca yapıp, örnek içindeki tanımlamaların ne olduğunu? Niçin yazdığımızı? Amacının ne olduğunu blog’ un sonunda paylaşacağım.

flumum.sources = source_bilgi
flumum.sinks = sink_bilgi
flumum.channels = channel_bilgi
                       
# source kısmı ile ilgili tanımlama yapıyoruz.
flumum.sources.source_bilgi.type = exec
flumum.sources.source_bilgi.command = tail -f /home/cloudera/Desktop/islemler/vmstat_log_dosyam
                       
# sink kısmının tanımlamaları
flumum.sinks.sink_bilgi.type = hdfs
flumum.sinks.sink_bilgi.channel = MemChannel
flumum.sinks.sink_bilgi.hdfs.path = hdfs://localhost:8020/user/flume_vmstat_log_dosya/
flumum.sinks.sink_bilgi.hdfs.fileType = DataStream
flumum.sinks.sink_bilgi.hdfs.writeFormat = Text
                       
# channel kısmı tanımlamaları yapıyoruz. memory kullanıyoruz.
flumum.channels.channel_bilgi.type = memory
flumum.channels.channel_bilgi.capacity = 1000
flumum.channels.channel_bilgi.transactionCapacity = 100
                       
# sink ve channel bir birinden haberdar ediyoruz. Tanımlamaları yapıyoruz.
flumum.sources.source_bilgi.channels = channel_bilgi
flumum.sinks.sink_bilgi.channel = channel_bilgi


flume_egitim.conf  dosyasına yukarıdaki tanımlamaları yaptıktan sonra artık flume-agent çalıştırılmasını yapabiliriz.

Not: tanımlamalar içinde yer alan klasör isimlerini sizler kendi sisteminize göre değiştirebilirsiniz.

Örneğin sonucu yazdığım hdfs klasör lokasyonunu : 

hdfs://localhost:8020/user/flume_vmstat_log_dosya/  şeklinde vermişim.
Sizler kendi hdfs sistemininizde istediğiniz klasörü tanımlayarak yapabilirsiniz.


flume-ng Agent Çalıştırılması
Aşağıdaki satırı boş bir terminal üzerinde kopyalayıp çalıştırınız.

flume-ng agent --conf-file /home/cloudera/Desktop/islemler/flume_egitim.conf Dflume.root.logger=DEBUG,console -n flumum


Artık flume-ng agent verdiğiniz konfigürasyon bilgilerine göre çalışmaya başlayacaktır.

Hdfs ortamında /user/flume_vmstat_log_dosya/   adlı klasöre baktığımızda vmstat 1 ile dinlediğimiz bilgilerin hdfs ortamına yazıldığını görebilirsiniz. 

Yani amacımıza ulaşmış olduk. 


Ayrıca kontrol etmeniz için /user/flume_vmstat_log_dosya/     klasöründe dosyaların içeriği aşağıdaki şekilde göreceksiniz.

Buraya “vmstat 1” çalıştığı sürece ve flume-ng agent ayakta olduğu sürece yeni dosyaların sürekli /user/flume_vmstat_log_dosya/      hdfs klasöründe oluştuğunu göreceksiniz. 



Konfigürasyon Dosyası Detaylı Bilgi

flume_egitim.conf  dosyasını inceleyelim.

İlk üç satır flume-1 blog yazımda da bahsettiğim gibi flume’ un ihtiyaç duyduğu source-sink-channel bilgilerin alias’ larını içermektedir.

Burada istediğiniz ismi verebilirsiniz.

Ben aşağıdakileri tercih ettim.

Bundan sonra bu konfigürasyon için source’ u, source_bilgi, sinks’ i sink_bilgi ve son olarak channel’ ı channel_bilgi olarak çağıracağımı belirtmekteyim.

flumum.sources = source_bilgi
flumum.sinks = sink_bilgi
flumum.channels = channel_bilgi


Source Kısmı:

Bu kısımda source type exec kullandım.

Ve exec olarak tail –f Linux komutu ile ile dosyanın son bilgisini almaktayız.  
# source kısmı ile ilgili tanımlama yapıyoruz.
flumum.sources.source_bilgi.type = exec
flumum.sources.source_bilgi.command = tail -f /home/cloudera/Desktop/islemler/vmstat_log_dosyam


Sink Kısmı:

Sink kısmı source ve channel arasında bağlantıyı kuran kısımdı.

Burada hdfs’ e yazılacağını ve memChannel kullanılacağını belirttik.

# sink kısmının tanımlamaları
flumum.sinks.sink_bilgi.type = hdfs
flumum.sinks.sink_bilgi.channel = MemChannel
flumum.sinks.sink_bilgi.hdfs.path = hdfs://localhost:8020/user/flume_vmstat_log_dosya/
flumum.sinks.sink_bilgi.hdfs.fileType = DataStream
flumum.sinks.sink_bilgi.hdfs.writeFormat = Text


Channel Kısmı:

Channel olarak memory kullanıyoruz.

# channel kısmı tanımlamaları yapıyoruz. memory kullanıyoruz.
flumum.channels.channel_bilgi.type = memory
flumum.channels.channel_bilgi.capacity = 1000
flumum.channels.channel_bilgi.transactionCapacity = 100


Sink ve Channel ‘ ı Bir Biri İle Tanıştırıyoruz:

Kullandığımız alias’ lardan giderek sink ve channel bağlantısını kuruyoruz.

# sink ve channel bir birinden haberdar ediyoruz. Tanımlamaları yapıyoruz.
flumum.sources.source_bilgi.channels = channel_bilgi
flumum.sinks.sink_bilgi.channel = channel_bilgi



flume-ng agent Çalıştırmak İçin:

flume-ng agent --conf-file /home/cloudera/Desktop/islemler/flume_egitim.conf Dflume.root.logger=DEBUG,console -n flumum

flume_egitim.conf  dosyasında ilk flumum değişkeni ile başladık.
Sizde istediğiniz ismi verebilirsiniz.
Bu ismi flume-ng agent çalıştırmada kullanmaktayız.  


Aslında temel işlemlerimiz bu kadar.

Flume HelloWord tarzında bir örnek yapmış olduk.

Flume -1 blog yazımı okuduysanız source , channel ve sink olarak pek çok kaynak ve target kullanabilirsiniz.

Örneğin ftp ortamında olan dosyalarınızı okuyup hdfs ortamına yazabilirsiniz.

Bir sonraki Flume -3 blog yazımda Twitter verilerini istediğiniz bir keyword’ e göre dinleyip, gelen twitleri hdfs ortamına yazmayı ve bunlar üzerinde sorgulamalar yapmayı yazacağım.


Bugünkü blog yazımız bu kadar.

Bir sonraki blog yazımda görüşmek dileğiyle.
Lütfen, yorumlarınızı bekliyorum.
mmetin