Video: Apache Hadoop Tutorial | Hadoop Tutorial For Beginners | Big Data Hadoop | Hadoop Training | Edureka 2024
Hadoop Dağıtılmış Dosya Sisteminde (HDFS) çıkan bazı veriler, veritabanı yükleme işlemleri veya diğer toplu işlem türleri aracılığıyla oraya gidebilir ancak ne uygulama günlüğü verileri gibi yüksek verimli veri akışlarında akan verileri yakalamak istiyorsanız? Apache Flume bunu kolay, verimli ve güvenli bir şekilde yapmak için geçerli olan standart yöntemdir.
Apache Software Foundation'tan bir diğer üst düzey proje olan Apache Flume , büyük miktarda veri akışını farklı kaynaklardan merkezi bir veri deposuna toplayan ve taşıyan dağıtılmış bir sistemdir.
Başka bir deyişle, Flume, verilerin HDFS'ye sürekli girilmesi için tasarlanmıştır. Veriler her türlü veri olabilir, ancak Flume, web sunucularından gelen günlük verileri gibi günlük verilerini işlemek için özellikle uygundur. Flume'ın işlediği verilerin birimleri olaylar olarak adlandırılır; bir olaya bir örnek, bir günlük kaydıdır.
Flume'un bir Hadoop kümesinde nasıl çalıştığını anlamak için, Flume'ın bir veya daha fazla aracı olarak çalıştığını ve her aracığın üç takılabilir bileşeni olduğunu bilmeniz gerekir: kaynaklar, kanallar ve lavabolar:
-
Kaynaklar veri almak ve kanallara göndermek.
-
Kanallar , veri sıralarını tutar ve gelen akış hızı giden akış oranını aştığında yararlı olan kaynaklarla lavabolar arasında kanallar işlevi görür.
-
Lavabolar , kanallardan alınan verileri işler ve HDFS gibi bir hedefe teslim eder.
Bir aracın çalıştırmak için her bileşenden en az birinin olması gerekir ve her temsilci kendi kendi Java Sanal Makinesi (JVM) örneğinde bulunur.
Bir kanal tarafından bir kaynak tarafından yazılan bir olay, bir lavabo bir işlem yoluyla kaldırana kadar bu kanaldan kaldırılmaz. Bir ağ hatası oluşursa, kanallar lavabolar kümeye yazana kadar olaylarını sıraya koyurlar. Bir bellek içi kanal olayları hızlı bir şekilde işleyebilir, ancak geçici ve geri yüklenemez; buna karşın dosya tabanlı bir kanal kalıcılık sağlar ve başarısızlık durumunda kurtarılabilir.
Her bir aracı birkaç kaynak, kanal ve lavaboya sahip olabilir ve bir kaynak birçok kanala yazabilir, ancak bir lavabo yalnızca bir kanaldan veri alabilir.
Bir aracı sadece Flume çalıştıran bir JVM'dir ve Hadoop kümesindeki her temsilci düğümü için lavabolar, koleksiyoncu düğümlerine veri gönderir; bu veriler daha önce birçok ajandan veri toplar HDFS'ye yazarken, diğer Hadoop araçları tarafından analiz edilebilir.
Ajanlar birbirine zincirlenebilir, böylece bir ajandan gelen lavabo başka bir ajandan kaynaktan veri gönderir.Avro, Apache'nin uzaktan arama ve seri hale getirme çerçevesi, veriyi verimli seri hale getirme veya verilerin kompakt bir ikili biçimde dönüştürülmesi için yararlı bir araç olduğundan, Flume ile bir ağ üzerinden veri göndermenin olağan yoludur.
Flume bağlamında uyumluluk önemlidir: Bir Avro olayı, örneğin bir Avro kaynağı gerektirir ve bir lavabo, varış noktasına uygun olayları sunmalıdır.
Bu büyük kaynak zinciri, kanallar ve lavabo işlemlerini, bir Java özellik dosyası gibi yapılandırılmış yerel bir metin dosyasında saklanan Flume aracısı yapılandırması yapar. Aynı dosyada birden çok aracı yapılandırabilirsiniz. Flume-agent adlı bir örnek dosyaya bakın. conf - shaman adlı bir aracı yapılandırmak için ayarlanmıştır:
# Şamanın temsilcisi olan şamanın bileşenlerini belirleyin: Şaman. sources = netcat_s1 şaman. lavabolar = hdfs_w1 şaman. channels = in-mem_c1 # Kaynağı yapılandırın: Şaman. kaynaklar. netcat_s1. type = netcat şaman. kaynaklar. netcat_s1. bind = yerel şaman. kaynaklar. netcat_s1. port = 44444 # Lavaboyu açıkla: Şaman. lavabolar. hdfs_w1. yazın = hdfs şaman. lavabolar. hdfs_w1. HDF'ler. yol = hdfs: // şaman. lavabolar. hdfs_w1. HDF'ler. writeFormat = Metin Şaman. lavabolar. hdfs_w1. HDF'ler. fileType = DataStream # Bellekte olayları tamponlayan bir kanal yapılandırın: şaman. kanalları. in-mem_c1. type = Şaman Şaman. kanalları. in-mem_c1. kapasite = 20000 şaman. kanalları. in-mem_c1. transactionCapacity = 100 # Kaynağı bağlayın ve kanala gömülün: şaman. kaynaklar. netcat_s1. kanallar = mem_c1 şaman. lavabolar. hdfs_w1. channels = in-mem_c1
Yapılandırma dosyası, aracıdaki her kaynak, kanal ve lavabonun özelliklerini içerir ve bunların nasıl bağlı olduklarını belirtir. Bu örnekte, temsilci şamanın, 44444 numaralı bağlantı noktası üzerindeki verileri dinlemesi (netcat iletileri), olay verilerini bellekte tamponlayan bir kanal ve olay verilerini konsola günlüğe kaydettiği bir lavaboyu vardır.
Bu yapılandırma dosyası, çeşitli aracıları tanımlamak için kullanılabilirdi; Burada, işleri basitleştirmek için yalnızca birini yapılandırıyorsunuz.
Aracıyı başlatmak için Flume dağıtımının bin dizininde bulunan flume-ng adlı bir kabuk komut dosyası kullanın. Komut satırından, yapılandırma dosyasının ve temsilci adının yolunu belirten agent komutunu verin.
Aşağıdaki örnek komut Flume aracısını başlatır:
Flume-ng aracı -f / -n shaman
Flume aracısının günlüğü, kaynak, kanal ve lavabonun başarıyla başlatıldığını doğrulayan girişlere sahip olmalıdır.
Yapılandırmayı daha fazla test etmek için, başka bir terminalden 44444 numaralı bağlantı noktasına telnet atabilir ve rasgele bir metin dizesi girerek Flume'ye bir olay gönderebilirsiniz. Her şey iyi giderse, orijinal Flume terminali, etkinliği, acentenin günlüğünde görebileceğiniz bir günlük iletisinde gönderir.