Merhaba,
Daha önceki bloglarımda bahsettiğim gibi sohbet babındaki
yazılarıma ek olarak eski yazılarımda olduğu gibi teknik konular hakkında da
yazılarıma devam edeceğimi yazmıştım.
Bu blog yazımda FLUME hakkında bahsedeceğim. Aşağıdaki
soruların cevaplarını vermeye çalışacağım.
Sanırım flume-1,2,3,4 şeklinde, flume ile ilgili yazılarımı
bitirebilirim.
Planım aşağıdadır.
4. Flume yazımda kafka ile entegrasyon kısmı anlatılacaktır.
Ama
öncesinde Kafka nedir? Nasıl kurulur? Kullanımı? Örnekleri? vs.vs. şeklinde bir
yazı dizisi için de vereceğim.
Aslında kafka ile message queue işlemleri oldukça önemli ve uzun bir yazı
dizisi şeklinde olacaktır.
Kafka’ da message queue işlemleri ile spark streaming ve cep
projelerini de kapsamlı örnekleri ile anlatacağım.
Planım Aşağıdadır :
·
Flume – 1 Blog Yazımda :
o Flume
nedir?
o Ne amaçla
kullanılır?
o Nasıl
Kurulur?
o Konfigürasyon
– Yapılandırma işlemleri nasıl yapılır?
·
Flume – 2 Blog Yazımda :
o Birkaç örnek
yapılacaktır. (“vmstat -1” , “tail –f file”
)
·
Flume – 3 Blog Yazımda :
o Twitter
dinleme kapsamlı şekilde anlatılıp yapılacaktır.
·
Flume – 4 Blog Yazımda :
o Flume ve
kafka entegrasyonu
Flume
Nedir?
Flume: Flume
is a framework for populating Hadoop with data. Agents are populated throughout
ones IT infrastructure – inside web servers, application servers and mobile
devices, for example – to collect data and integrate it into Hadoop.
Flume:
Hadoop’ a aktarılacak dosyaların (log datası, ftp dataları, twitter datası
vs.vs. ) toplanması, aggregate edilmesi ve taşınmasını sağlayan bir
uygulamadır.
Flume bir java uygulaması olarak çalışır. Zaten
hadoop’ un etrafındaki hemen hemen tüm uygulamalar java uygulamasıdır.
Bu java uygulamasına agent denilmektedir. Bu agent kelimesini flume içinde çok
kullanacağız.
Aşağıdaki resim flume’ un
mimarisini anlatmaktadır.
Alıntıdır : resim flume apache org
sitesinden alıntıdır.
Burada source olarak log
dosyalarınız, twitter verisi vs.vs. alıp kendi hdfs sisteminize, source tarafta
yeni bir dosya vs. geldiğinde hdfs sistemine yazmak isterseniz flume
kullanabilirsiniz.
Aslında tüm bu işlemleri custom kendinizin yazacağı bir uygulama ile de
yapabilirsiniz tabi ki.
Ben de custom – manuel script – uygulama yazma vs. şekilde çalışıyorum.
Source taraftan aktarılacak dosyaların hdfs ortamına düzenli şekilde
aktarımı için kendi yazdığım custom uygulama-sh script vs.vs. kullanmaktayım.
Fakat kendiniz yazmak yerine hadoop’ un tool’ larıdan olan flume
kullanabilirsiniz tabi ki. Tercih sizin.
Neden kendin yazıp, flume gibi bir tool kullanmıyorsun denilebilir?
Production ortamlarım da flume kullanmamamı
kötü anlamında yorumlamayın.
Kendimin yazdığı koda ve uygulamaya hakim olmam ve bugüne kadar hep kod
tarafta kendi işimi kendim gördüğümden benim de tercihim bu şekilde olmaktadır.
Aslında pek çok neden var. Ama asıl konumuzun dışına çıkmak istemiyorum. Tek
neden kendi yazdığım kod olması değil yani.
Büyük bir firmada, kendi çapında büyük sayılabilecek csv dosyalarını ftp ortamından
hdfs ortamına flume kullanarak aktarma işlemini yapanları biliyorum. Flume
agent’ ları düzenli şekilde çalışmakta yani işlerini görmektedir.
Kullanıp
kullanmama konusunda kendi ortamlarınızda birkaç PoC yaparak karar vermenizi
tavsiye ederim. Pek çok yerde flume çok kolay ve işinizi görmektedir. Eğer
basit-hızlıca geliştirebileceğiniz bir şey arıyorsanız flume pek çok yerde
işinizi görmektedir.
Flume içinde agent ifadesini çok
kullanacağımızı belirtmiştim.
Resimde görüleceği üzere agent =
source + channel + sink şeklinde ifadelerin tanımlanması ve ya bütününe denir.
Yani bir flume agent’ ı create
etmek istediğinizde source + channel + sink tanımlamalısınız.
Source adı üstünde kaynak tarafı
tanımlıyorsunuz.
Sink ise verinizin yazılacağı yer yani target.
Channel ise source ve sink arasında bağlantı kuran bir yapıdır.
Bu ara bağlantıda verilerinizin nerede tutulacağını belirtirsiniz.
Genelde memory seçilmektedir.
Aşağıdaki resimde agent = source + channel + sink ‘ i daha iyi anlatan bir resim bulunmaktadır.
Resim de aslında source – sink –
channel nedir daha iyi anlaşılmaktadır.
Bu kadar teorik bilgiden sonra
artık ellerimizi kirletmenin vakti geldi. Teorik bilgi bitmez biliyorsunuz.
Flume
Kurulumu :
Daha önceki blog yazılarımı takip edenler bilirler.
Kurulumlarda hep aynı sıra vardır.
Kurulumlar sizleri korkutmasın.
Öncelikle apache sitesinden flume indirilir.
Ben bu kurulumda Flume 1.3.1 versiyonunu kurulmasını anlatacağım.
Tüm versiyonların kurulumu ve konfigürasyonu aynıdır.
En son 1.6.0 kurmuştum. Ama eski eğitim notlarında 1.3.1
olduğundan ve eğitim notlarını güncellemek zor geldiğinden 1.3.1 kurulumu anlatacağım.
Apache sitesinden flume tar dosyası download edilir : http://flume.apache.org/download.html
Aşağıdaki komutu terminal üzerinden çalıştırıp flume dosyasını
siteden kopyalamış oluyoruz.
[hadoop@mmetincentosos flume]$
wget http://ftp.itu.edu.tr/Mirror/Apache/flume/1.3.1/apache-flume-1.3.1-bin.tar.gz
Böylelikle flume klasörüne apache-flume-1.3.1-bin.tar.gz
dosyası kopyalanmış oldu.
[hadoop@mmetincentosos
flume]$ ls
apache-flume-1.3.1-bin.tar.gz
apache-flume-1.3.1-bin.tar.gz
dosyası tar komutu ile aynı yere açılır. Aşağıdaki komutu terminal
üzerinden çalıştırınız.
[hadoop@mmetincentosos
flume]$ tar zxpf apache-flume-1.3.1-bin.tar.gz
apache-flume-1.3.1-bin adında
klasör oluşturulmuş olacaktır.
Klasörde yer alan isimlendirmede
versiyon’ dan kurtulmak için mv apache-flume-1.3.1-bin flume yazmanız yeterlidir.
Flume Konfigürasyon
- Yapılandırma İşlemleri:
Yine eski blog
yazılarımı takip edenler bilirler. Kurulum işleminden sonra yapılandırma - konfigürasyon
işlemi yapılacaktır.
Burada kurulumu
yapılan flume klasöründe conf adında bir klasör yer almaktadır.
Flume conf klasöründe konfigürasyon dosyaları yer almaktadır.
[hadoop@mmetincentosos conf]$ pwd
/home/hadoop-1.2.0/flume/conf
conf klasöründe aşağıdaki iki dosya yer almaktadır. Bunları
silmeden bu iki dosyadan kopyalama işlemi yapılır.
flume-conf.properties.template conf =
flume.conf
flume-env.sh.template conf = flume-env.sh
[hadoop@mmetincentosos conf]$ cp
flume-conf.properties.template flume.conf
[hadoop@mmetincentosos conf]$ cp
flume-env.sh.template flume-env.sh
Buradaki en önemli dosyamız flume.conf dosyasıdır.
Yukarıda bahsettiğim gibi flume agent tanımlama bu dosya üzerinde
gerçekleştirilecektir.
Yani source tanımlama – sink tanımlama ve channel tanımlama
işlemlerini flume.conf dosyası üzerinde yapacağız.
Bir sonraki blog yazılarımda “vmstat 1” ve “tail –f dosya” linux komutlarının
çıktılarını flume ile dinleyip hdfs ortamına sürekli aktarılmasını sağlayan
blog yazımı paylaşacağı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
http://tr.linkedin.com/in/muratmetin


Hiç yorum yok:
Yorum Gönder