Apache Flume Nedir? Çalışma Prensibi Nasıldır?

APACHE FLUME NEDİR?

Daha önce HDFS(Hadoop Distributed File System) kavramından bahsetmiştim. HDFS, büyük verilerin kaydedildiği dosya sistemidir.

Şimdi bu dağıtık dosya sistemine, bir websitesinden büyük ölçekli verileri çekip kaydetmek istiyorsunuz. Peki bu verileri çekip, dosya sistemine kaydetme işlemini nasıl gerçekleştireceksiniz?

Apache Flume, işte tam da burada devreye gidiyor.

Flume yardımı ile web sunucularından alınan accesslog’lar, HDFS’e kaydedilir.

Büyük miktarda günlük verileri verimli bir şekilde toplamak, bir araya getirmek ve taşımak için yazılmış, güvenilir ve kullanılabilir bir Apache tool’dur(araç). Yani bir ‘veri aktarma sistemi’dir.

Flume dışında farklı yöntemler kullanarakta veri çekip dosya sistemine aktarabilirsiniz ancak bu çok kullanılan bir yöntem değildir. Onun yerine, Flume aracı gibi Hadoop tarafından da desteklenen Splunk, SumoLogic gibi araçları tercih etmek akıllıca olacaktır.

Apache Flume, real-time(gerçek zamanlı) veriler için tasarlanmış basit, esnek ve güvenli bir mimariye sahiptir. Ayarları değiştirilerek, uygulamanıza göre uyarlanarak çalıştırılabilir, sağlam ve hataya dayanıklıdır.

Flume Çalışma Prensibi

Source(Kaynak) :

Harici kaynaktan alınan accesslog’ların ilk karşılandığı bölümdür.
Bir Source, belirli bir biçime sahip Event(Olay/Veri seti)’ları, web sunucusu gibi harici bir kaynaktan tüketir/alır ve bu eventlar, Channel(Kanal)’a teslim edilir.

Channel(Kanal) :

Accesslog’ların depolandığı alan. Bir Source, bir event aldığında, bir veya daha fazla Channel içine depolar. Channel’dan alınan event, bir Sink(Hedef) tarafından tüketilene kadar Channel’da depolanır.

Sink(Hedef) :

Accesslog’ların yazılacağı yer. Bir Sink, bir eventı Channel’dan kaldırmak ve HDFS gibi harici dosya sistemine koymaktan veya akışın bir sonraki eventa geçmesi için  Source’a yönlendirme yapmaktan sorumludur.

Agent(Temsilci) :

Eventların yani verisetlerinin kaynaktan-hedefe(Source’dan Sink’e) kadar akma işleminde geçtiği tüm işlemleri barındıran süreçtir. Java uygulaması ile çalışır.

 

Bu anlattıklarımı bir görselle pekiştirelim:

Burada da gördünüğünüz üzere Web Server, yani büyük veriyi elde edeceğiniz kaynak önce Source ile iletişime geçiyor. Source verisetinin bir bölümüne erişip başka bir deyişle consume(tüketim) edip bir Channel’a aktarılmasını sağlıyor.

Channel, Kaynaktan aldığı Event’ı, Sink, consume edenene kadar depo ediyor.

Sink’te Channel tarafından gelen Event’ı HDFS’e gönderiyor. Ve akış bu şekilde devam ediyor.

Bu sayede veri kaynağından, verilerini verimli bir şekilde toplama, taşımak ve kullanılabilir hale getirmek için güvenli bir hizmet sağlıyor.

1 Source, 1 Channel ve 1 Sink ile ayarlanan bir Agent, logları tek bir noktadan alıp, tek bir yere yazacak biçimde çalışıyor. Birden fazla Channel/Sink ve/veya birden fazla Agent çalıştırarak karmaşık modeller kurmakta mümkün.

Apache Flume mantığı bu kadardı. Bir sonraki yazımda nasıl kurulduğunu ve konfigürasyon ayarlarının nasıl yapıldığını bir örnek ile açıklayacağım.

İyi çalışmalar.

Bir Cevap Yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir