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

Hiç yorum yok:

Yorum Gönder