Apache Flume - Hadoop'ta Veri Aktarımı
Big Data,bildiğimiz gibi, geleneksel hesaplama teknikleri kullanılarak işlenemeyen büyük veri kümelerinin bir koleksiyonudur. Büyük Veri analiz edildiğinde değerli sonuçlar verir.Hadoop basit programlama modelleri kullanarak bilgisayar kümeleri arasında dağıtılmış bir ortamda Büyük Verileri depolamaya ve işlemeye olanak tanıyan açık kaynaklı bir çerçevedir.
Akış / Günlük Verileri
Genel olarak, analiz edilecek verilerin çoğu, uygulama sunucuları, sosyal ağ siteleri, bulut sunucuları ve kurumsal sunucular gibi çeşitli veri kaynakları tarafından üretilecektir. Bu veriler şu şekilde olacaktırlog files ve events.
Log file - Genel olarak, bir günlük dosyası bir filebir işletim sisteminde meydana gelen olayları / eylemleri listeleyen. Örneğin, web sunucuları, sunucuya yapılan her isteği günlük dosyalarında listeler.
Bu tür günlük verilerini toplarken aşağıdakiler hakkında bilgi alabiliriz:
- uygulama performansını ve çeşitli yazılım ve donanım arızalarını tespit edin.
- kullanıcı davranışı ve daha iyi iş içgörüleri elde etme.
Verileri HDFS sistemine aktarmanın geleneksel yöntemi, putkomut. Nasıl kullanılacağını görelimput komut.
HDFS komutu koydu
Günlük verilerini işlemedeki ana zorluk, birden çok sunucu tarafından üretilen bu günlükleri Hadoop ortamına taşımaktır.
Hadoop File System ShellHadoop'a veri eklemek ve ondan okumak için komutlar sağlar. Şunu kullanarak Hadoop'a veri ekleyebilirsiniz.put komutu aşağıda gösterildiği gibi.
$ Hadoop fs –put /path of the required file /path in HDFS where to save the file
Put Komutu ile ilgili sorun
Kullanabiliriz putHadoop'un bu kaynaklardan HDFS'ye veri aktarma komutu. Ancak, aşağıdaki dezavantajlardan muzdariptir -
Kullanma put komut aktarabiliriz only one file at a timeveri üreticileri ise çok daha yüksek hızda veri üretir. Eski veriler üzerinde yapılan analizler daha az doğru olduğu için, verileri gerçek zamanlı olarak aktarmak için bir çözüme ihtiyacımız var.
Eğer kullanırsak putkomutu, verilerin paketlenmesi ve yükleme için hazır olması gerekir. Web sunucuları sürekli veri ürettikleri için bu çok zor bir iştir.
Burada ihtiyacımız olan şey, aşağıdaki olumsuzlukların üstesinden gelebilecek bir çözümdür. put "veri akışı" komutunu veri üreticilerinden merkezi depolara (özellikle HDFS) daha az gecikmeyle aktarın.
HDFS ile ilgili sorun
HDFS'de dosya bir dizin girişi olarak bulunur ve dosyanın uzunluğu kapanana kadar sıfır olarak kabul edilir. Örneğin, bir kaynak HDFS'ye veri yazıyorsa ve işlemin ortasında ağ kesintiye uğradıysa (dosya kapatılmadan), dosyaya yazılan veriler kaybolacaktır.
Bu nedenle, günlük verilerini HDFS'ye aktarmak için güvenilir, yapılandırılabilir ve bakımı yapılabilir bir sisteme ihtiyacımız var.
Note- POSIX dosya sisteminde, bir dosyaya eriştiğimizde (örneğin yazma işlemini gerçekleştirirken), diğer programlar bu dosyayı (en azından dosyanın kaydedilen kısmını) hala okuyabilir. Bunun nedeni, dosyanın kapatılmadan önce diskte bulunmasıdır.
Mevcut Çözümler
Çeşitli kaynaklardan HDFS'ye akış verilerini (günlük dosyaları, olaylar vb.) Göndermek için, aşağıdaki araçlara sahibiz -
Facebook'un Katibi
Scribe, günlük verilerini toplamak ve yayınlamak için kullanılan son derece popüler bir araçtır. Çok fazla sayıda düğüme ölçeklenecek ve ağ ve düğüm hatalarına karşı dayanıklı olacak şekilde tasarlanmıştır.
Apache Kafka
Kafka, Apache Software Foundation tarafından geliştirilmiştir. Açık kaynaklı bir mesaj komisyoncusudur. Kafka'yı kullanarak, yüksek verimli ve düşük gecikmeli yayınların üstesinden gelebiliriz.
Apache Flume
Apache Flume, çeşitli web sunucularından günlük verileri, olaylar (vb.) Gibi büyük miktarlarda akış verisini toplamak ve merkezi bir veri deposuna taşımak için bir araç / hizmet / veri alma mekanizmasıdır.
Temelde akış verilerini çeşitli kaynaklardan HDFS'ye aktarmak için tasarlanmış, oldukça güvenilir, dağıtılmış ve yapılandırılabilir bir araçtır.
Bu eğitimde, Flume'un nasıl kullanılacağını bazı örneklerle ayrıntılı olarak tartışacağız.