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

Hiç yorum yok:

Yorum Gönder