Merhaba,
Önceki
FLUME-1 blog yazımız ile flume’ a giriş yapmış ve planımızı sunmuştum.
Yazıya
ulaşmak için : http://bigdatayazilari.blogspot.com.tr/2016/03/flume-1.html
Planım
Aşağıdadı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.
Bir sonraki blog yazımda görüşmek dileğiyle.
Lütfen, yorumlarınızı
bekliyorum.
mmetin



Hiç yorum yok:
Yorum Gönder