24 Mayıs 2016 Salı

FLUME-3C


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




Bu blog yazımda “Flume – 3C” kısmına devam etmek istiyorum.  
Bir önceki blog yazımda https://apps.twitter.com/
Adresinden  4 adet guid numarasına benzer bilgileri almayı görmüştük.
Bunlar:  Consumer key: *   Consumer secret: *    Access token: *    Access token secret: *
Bu adresten istediğiniz kadar application oluşturup istediğiniz kadar token alabilirsiniz.
Şimdi bu token’ ları kullanarak nihai amacımız olan twitter okyanusundan kendi belirlediğimiz keyword – filter ile dinleme işine bakalım.
Yine adım adım nasıl işlemler yaptığımızı aşağıda anlatmaya çalıştım.
Twitter Dinlemek için  Gerekli Jar Dosyası Download Edilir:

flume-sources-1.0-SNAPSHOT.jar
jar dosyasını internetten bulup download edilir.

Bulacağınız bu jar dosyası sorunlu olabilir.

Bunun için aşağıdaki link bakmanızı tavsiye ederim.


cd cdh-twitter-example
cd flume-sources
mvn package


Burada son src dosyası download edilir ve mvn package ile tekrar deploy edilip …/cdh-twitter-example/flume-sources/target  klasöründe bulunan
flume-sources-1.0-SNAPSHOT.jar dosyası  /usr/lib/flume-ng/lib   klasörüne atılmalıdır.

Peki bu jar dosyası nedir?
Bu jar dosyası Twitter4j kütüphanesini kullanan flume ile entegre edebileceğiniz bir jar dosyasıdır.

Twitter Verilerinin Atılacağı Dizinler ve Haklar yapılır:
[cloudera@quickstart target]$ hadoop dfs -mkdir /user/twitterdinle
[cloudera@quickstart target]$ hadoop dfs -chmod 777 /user/twitterdinle

flume.conf  Dosyası Düzenlenir:

Flume-1 ve Flume-2 yazılarımı okuyanlar hatırlayacaklardır. Flume.conf dosyası nedir? Nasıl düzenlenir bloglarımda bahsetmiştim.

Benim sistemde aşağıdaki klasörleri kullanmıştım.
flume.conf dosyası düzenlenir yada yeniden create edilir.

/home/cloudera/Desktop/islemler/flume.conf

Bu dosya düzenlenir.

Twitter’ dan Dinlemek İstediğimiz Kelime Seçilir:

Ben ‘murat’ kelimesini seçtim mesela.
Bunu aşağıdaki satır ile belirtiyoruz.

TwitterAgent.sources.Twitter.keywords = murat

Twitter sayfasından aldığınız token bilgileri ilgili satırlara girilmelidir.
Bu token bilgilerini kimse ile paylaşmayınız.
Sonuçta sizin kullanıcınız ile alınan token ile twitter dinleme işi yapılabilir.

TwitterAgent.sources.Twitter.consumerKey=xxxxxxxxxxxx
TwitterAgent.sources.Twitter.consumerSecret=xxxxxxxxxxxxx
TwitterAgent.sources.Twitter.accessToken=xxxxxxxxxx
TwitterAgent.sources.Twitter.accessTokenSecret=xxxxxxxxxxxx


Dinlenen twitter bilgisi hdfs sisteminde nereye yazılacak?
TwitterAgent.sinks.HDFS.hdfs.path = hdfs://localhost:8020/user/twitterdinle


flume.conf  dosyasının tamamı aşağıdadır.


TwitterAgent.sources = Twitter
TwitterAgent.channels = MemChannel
TwitterAgent.sinks = HDFS

TwitterAgent.sources.Twitter.type = com.cloudera.flume.source.TwitterSource
TwitterAgent.sources.Twitter.channels = MemChannel
TwitterAgent.sources.Twitter.consumerKey=xxxxxxxxxxxx
TwitterAgent.sources.Twitter.consumerSecret=xxxxxxxxxxxxx
TwitterAgent.sources.Twitter.accessToken=xxxxxxxxxx
TwitterAgent.sources.Twitter.accessTokenSecret=xxxxxxxxxxxx

TwitterAgent.sources.Twitter.keywords = murat

TwitterAgent.sinks.HDFS.channel = MemChannel
TwitterAgent.sinks.HDFS.type = hdfs
TwitterAgent.sinks.HDFS.hdfs.path = hdfs://localhost:8020/user/twitterdinle
TwitterAgent.sinks.HDFS.hdfs.fileType = DataStream
TwitterAgent.sinks.HDFS.hdfs.writeFormat = Text
TwitterAgent.sinks.HDFS.hdfs.batchSize = 1000
TwitterAgent.sinks.HDFS.hdfs.rollSize = 0
TwitterAgent.sinks.HDFS.hdfs.rollCount = 10000

TwitterAgent.channels.MemChannel.type = memory
TwitterAgent.channels.MemChannel.capacity = 10000
TwitterAgent.channels.MemChannel.transactionCapacity = 100

Tanımlamaları aslında bitirdik.
Bundan sonra flume agent’ ı çalıştırmak işi kalıyor.
Çalıştırma işinde bir hata almazsanız hdfs sisteminde hdfs://localhost:8020/user/twitterdinle klasörüne bakarak twitlerin akmaya başladığını görmelisiniz.
Flume Agent Çalıştırılması ve Artık Twitter Dinlemeye Başlıyoruz:
Aşağıdaki satırı aynen terminal üzerinden çalıştırınız.
Burada TwitterAgent ifadesini flume.conf dosyasından geldiğini tekrar hatırlatırım. Bir alias gibidir. İsmini istediğiniz gibi verebilirsiniz.

[cloudera@quickstart islemler]$ flume-ng agent --conf-file /home/cloudera/Desktop/islemler/flume.conf Dflume.root.logger=DEBUG,console -n TwitterAgent

Eğer bir sorun olmazsa aşağıdaki ekran görüntüsünü almanız gerekiyor.

Yani “Establishing connection" ifadesini görmemiz lazım.

Twitter account’nuz ile twit girebilirsiniz ve hdfs sistemine bu twitlerin hatta sadece sizin değil tüm twitter okyanusunda yer alan içinde “murat” geçen tüm twittleri toplamaya başladınız.

Hue filebrowser dan baktığınızda twitler düşmeye başladı mı?



Dosya tıklanarak json datası ve içinde "murat" geçen twitleri görebilirsiniz.
Twitter bilgisini nasıl kullanmak istediğinize göre değişerek: Bundan sonrası bu json formatındaki dosyadan sorgulamalar vs. yapabilirsiniz.
Bir web uygulaması yaparak hdfs sistemine düşen ve dinlediğiniz twitleri gösterir bir uygulama yazabilirsiniz.
Gelen twittleri kategorize ederek acil eylem yapmanız gereken twittleri belirleyebilirsiniz. Hatta buradan near real time bir uygulama yada cep – complex event processing vs. kullanarak güzel uygulamalar gerçekleştirebilirsiniz.
Hive ile twitter json datası üzerinde sorgu çekebilirsiniz.
  
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

2 Mayıs 2016 Pazartesi

FLUME – 3B


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




Bu blog yazımda “Flume – 3B” kısmına devam etmek istiyorum.  
Twitter verilerini belirlediğiniz filter-keyword’ lere göre dinlemek için: twitter’ ın aşağıdaki sitesinden kendi twitter account’ ile access token tanımlamaları almanız gerekir.
Bu “access token” bilgilerini bir sonraki FLUME-3C blog yazısında flume içinde kullanıp istediğiniz filter-keyword’ leri twitter sisteminden alıp kendi hdfs sistemine yazmayı paylaşacağım.

Adım adım ekran görüntüleri ile devam edelim.

https://dev.twitter.com/apps/  adresinden tweet hesabı ile girilir.


Kullanıcı adı ve şifre ile girdikten sonra Create a new application butonuna basılır.


Aşağıda kırmızı ile işaretli kısımlar doldurulur.

Bir sonraki ekranda yer alan Consumer Key ve Consumer Secret değerlerinin yani kırmızı ile işaretli kısımlarda guid numarasına benzer bilgi olmalıdır. Bu bilgileri not ediniz.


Aslında ihtiyacımız olan 4 bilgiyi twitter’ dan almış olduk.
Bunlar:
Consumer key: *
Consumer secret: *
Access token: *
Access token secret: *

Bu 4 bilgiyi flume içinde kullanıp, belirleyeceğiniz filter-keywordleri twitterdan dinleme işini FLUME-3C blog yazısında paylaşacağı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