Nie można rozmawiać o Big Data przez dłuższy czas bez zahaczenia o tematy związane ze słoniem czyli Hadoop’em. Hadoop jest platformą oprogramowania typu open source zarządzaną przez Apache Software Foundation. Jest ona bardzo pomocna w magazynowaniu i zarządzaniu ogromnymi ilościami danych w sposób tani i wydajny. W dalszej części artykułu przybliżymy temat Hadoop’a, a dokładnie czym jest? Z czego się składa? oraz do czego go używać.
Biblioteka oprogramowania Apache Hadoop to framework, który pozwala na rozproszone przetwarzanie dużych zbiorów danych w klastrach komputerów przy użyciu prostych modeli programowania. Został zaprojektowany do skalowania z pojedynczych serwerów do tysięcy komputerów, z których każdy oferuje lokalne obliczenia i pamięć masową. Zamiast polegać na sprzęcie zapewniającym wysoką dostępność, sama biblioteka jest zaprojektowana do wykrywania i radzenia sobie z awariami w warstwie aplikacji, dostarczając wysoce dostępną usługę na klastrze komputerów, z których każdy może być podatny na awarie.
Formalnie znany jako Apache Hadoop, technologia ta została opracowana w ramach projektu open source w ramach Apache Software Foundation (ASF). Komercyjne dystrybucje Hadoop są obecnie oferowane przez czterech głównych dostawców dużych platform danych: Amazon Web Services (AWS), Cloudera, Hortonworks i MapR Technologies. Ponadto Google, Microsoft i inni dostawcy oferują usługi zarządzane w chmurze oparte na Hadoop i powiązanych technologiach.
Hadoop został stworzony przez informatyków Douga Cuttinga i Mike’a Cafarellę, początkowo w celu wsparcia przetwarzania w wyszukiwarce open source Nutch i robocie sieciowym. Po opublikowaniu przez Google artykułów technicznych opisujących odpowiednio system plików Google (GFS) i MapReduceprogramming w latach 2003 i 2004, dwójka informatyków zmodyfikowała wcześniejsze plany technologiczne i opracowała implementację MapReduce opartą na Javie oraz system plików oparty na modelach Google. Na początku 2006 roku elementy te zostały oderwane od Nutch i stały się oddzielnym podprojektem Apache, który Cutting nazwał Hadoop po wypchanym słoniu swojego syna. W tym samym czasie firma Cuttinga została zatrudniona przez Yahoo, firmę internetową zajmującą się usługami internetowymi, która stała się pierwszym użytkownikiem produkcyjnym Hadoop w 2006 roku. (Cafarella, wówczas absolwent, został profesorem uniwersyteckim).
W ciągu następnych kilku lat nastąpił wzrost wykorzystania platformy, a także trzech niezależnych dostawców Hadoop: Cloudera w 2008 r., MapR rok później i Hortonworks jako spinoff Yahoo w 2011 r. Ponadto AWS uruchomił usługę chmurową Hadoop o nazwie Elastic MapReduce w 2009 r. To wszystko zanim Apache wydał Hadoop 1.0.0, który stał się dostępny w grudniu 2011 roku po serii wydań 0.x.
Apache Hadoop składa się z następujących modułów:
Hadoop oparte na technologii Java, wdrożenie klastrowego systemu plików o nazwie HDFS, który pozwala na opłacalne, niezawodne i skalowalne przetwarzanie rozproszone. Architektura HDFS jest wysoce odporna na awarie i została zaprojektowana do wdrożenia na niedrogim sprzęcie. W przeciwieństwie do relacyjnych baz danych, klaster Hadoop umożliwia przechowywanie dowolnych danych pliku, a następnie określenie, w jaki sposób chcesz go użyć bez konieczności wcześniejszego reformowania tych danych. Wiele kopii danych jest automatycznie replikowanych w klastrze. Ilość replikacji może być skonfigurowana dla każdego pliku i może być zmieniona w dowolnym momencie
Struktura Hadoop YARN umożliwia planowanie zadań i zarządzanie zasobami klastra, co oznacza, że użytkownicy mogą przesyłać i kasować aplikacje za pomocą interfejsu API REST Hadoop. Istnieją także interfejsy internetowe do monitorowania klastra Hadoop. Połączenie wszystkich plików JAR i klas potrzebnych do uruchomienia programu MapReduce nazywa się zadaniem. Możesz przesłać zadania do JobTrackera z wiersza poleceń lub przez HTTP wysyłając je do REST API. Te zadania zawierają „zadania”, które wykonują indywidualną mapę i zmniejszają liczbę kroków. Istnieją również sposoby włączania kodu innego niż Java podczas pisania tych zadań. Jeśli z jakiegoś powodu węzeł klastra Hadoop zostanie wyłączony, odpowiednie zadania przetwarzania zostaną automatycznie przeniesione do innych węzłów klastra.
Hadoop koncentruje się na przechowywaniu i rozproszonym przetwarzaniu dużych zbiorów danych w klastrach komputerów przy użyciu modelu programowania MapReduce: Hadoop MapReduce. W przypadku MapReduce zestaw plików wejściowych jest dzielony na mniejsze części, które są przetwarzane niezależnie od siebie. Wyniki tych niezależnych procesów są następnie zbierane i przetwarzane jako grupy do czasu wykonania zadania. Jeśli pojedynczy plik jest tak duży, że wpłynie na czas wyszukiwania, może zostać podzielony na kilka mniejszych.
Hadoop ma oczywiście jeszcze wiele dodatkowych narzędzi m.in. Ambari, Avro, Cassandra, Chukwa, HBase, Hive, Pig, Spark, ZooKepper.
Hadoop doskonale nadaje się do analizy danych MapReduce na ogromnych ilościach danych. Jego specyficzne zastosowania obejmują: wyszukiwanie danych, analizę danych, raportowanie danych, indeksowanie plików na dużą skalę (np. Pliki dziennika lub dane z robotów sieciowych) oraz inne zadania przetwarzania danych z wykorzystaniem kolokwialnie znanych w świecie programowania jako „Big Data” . ”
Należy pamiętać, że infrastruktura Hadoop i oparte na Javie programowanie zadań MapReduce wymaga specjalistycznej wiedzy technicznej w zakresie prawidłowej konfiguracji i konserwacji. Jeśli te umiejętności są zbyt kosztowne, aby można je było wynająć lub obsługiwać, możesz rozważyć inne opcje przetwarzania danych dla Big Data.