Apache Flume - transfer danych w Hadoop
Big Data,jak wiemy, to zbiór dużych zbiorów danych, których nie można przetwarzać przy użyciu tradycyjnych technik obliczeniowych. Analiza Big Data daje cenne wyniki.Hadoop to platforma typu open source, która umożliwia przechowywanie i przetwarzanie Big Data w środowisku rozproszonym na klastrach komputerów przy użyciu prostych modeli programowania.
Przesyłanie strumieniowe / dane dziennika
Ogólnie rzecz biorąc, większość danych, które mają być analizowane, będzie generowana przez różne źródła danych, takie jak serwery aplikacji, serwisy społecznościowe, serwery w chmurze i serwery przedsiębiorstwa. Dane te będą miały postaćlog files i events.
Log file - Ogólnie plik dziennika to plik filektóry zawiera listę zdarzeń / działań, które mają miejsce w systemie operacyjnym. Na przykład serwery WWW wymieniają każde żądanie skierowane do serwera w plikach dziennika.
Gromadząc takie dane z dziennika, możemy uzyskać informacje o -
- wydajność aplikacji i zlokalizuj różne awarie oprogramowania i sprzętu.
- zachowanie użytkowników i uzyskać lepsze spostrzeżenia biznesowe.
Tradycyjną metodą przesyłania danych do systemu HDFS jest użycie rozszerzenia putKomenda. Zobaczmy, jak używaćput Komenda.
HDFS umieścić polecenie
Głównym wyzwaniem związanym z obsługą danych dziennika jest przeniesienie tych dzienników tworzonych przez wiele serwerów do środowiska Hadoop.
Hadoop File System Shelludostępnia polecenia do wstawiania danych do Hadoop i odczytywania z niego. Możesz wstawiać dane do Hadoop przy użyciuput polecenie, jak pokazano poniżej.
$ Hadoop fs –put /path of the required file /path in HDFS where to save the file
Problem z poleceniem put
Możemy użyć putpolecenie Hadoop do przesyłania danych z tych źródeł do HDFS. Ale ma następujące wady -
Za pomocą put polecenie, możemy przenieść only one file at a timepodczas gdy generatory danych generują dane z dużo większą szybkością. Ponieważ analiza przeprowadzona na starszych danych jest mniej dokładna, musimy mieć rozwiązanie do przesyłania danych w czasie rzeczywistym.
Jeśli używamy putpolecenie, dane są potrzebne do spakowania i powinny być gotowe do przesłania. Ponieważ serwery sieciowe generują dane w sposób ciągły, jest to bardzo trudne zadanie.
Potrzebujemy tutaj rozwiązań, które mogą przezwyciężyć wady programu put wydawać polecenia i przesyłać „strumieniowe dane” z generatorów danych do scentralizowanych magazynów (zwłaszcza HDFS) z mniejszym opóźnieniem.
Problem z HDFS
W HDFS plik istnieje jako pozycja katalogu, a długość pliku będzie traktowana jako zero, dopóki nie zostanie zamknięty. Na przykład, jeśli źródło zapisuje dane do HDFS, a sieć została przerwana w połowie operacji (bez zamykania pliku), to dane zapisane w pliku zostaną utracone.
Dlatego potrzebujemy niezawodnego, konfigurowalnego i łatwego w utrzymaniu systemu do przesyłania danych dziennika do HDFS.
Note- W systemie plików POSIX, ilekroć uzyskujemy dostęp do pliku (powiedzmy wykonując operację zapisu), inne programy nadal mogą odczytać ten plik (przynajmniej zapisaną część pliku). Dzieje się tak, ponieważ plik istnieje na dysku przed jego zamknięciem.
Dostępne rozwiązania
Aby przesyłać dane strumieniowe (pliki dziennika, zdarzenia itp.) Z różnych źródeł do HDFS, mamy do dyspozycji następujące narzędzia -
Skryba Facebooka
Scribe to niezwykle popularne narzędzie, które służy do agregowania i przesyłania strumieniowego danych dziennika. Został zaprojektowany do skalowania do bardzo dużej liczby węzłów i jest odporny na awarie sieci i węzłów.
Apache Kafka
Kafka została stworzona przez Apache Software Foundation. Jest to broker komunikatów typu open source. Korzystając z platformy Kafka, możemy obsługiwać kanały o dużej przepustowości i małych opóźnieniach.
Apache Flume
Apache Flume to narzędzie / usługa / mechanizm pozyskiwania danych do gromadzenia, agregacji i transportu dużych ilości danych strumieniowych, takich jak dane dziennika, zdarzenia (itp.) Z różnych usług internetowych do scentralizowanego magazynu danych.
Jest to wysoce niezawodne, rozproszone i konfigurowalne narzędzie, które zostało zaprojektowane głównie do przesyłania strumieniowych danych z różnych źródeł do HDFS.
W tym samouczku omówimy szczegółowo, jak używać Flume z kilkoma przykładami.