Zrozumienie dogłębnie
Hadoop
Hadoop
jest projektem Apache
fundacji typu open source . Jest to framework napisany w Java
, pierwotnie opracowany przez Douga Cuttinga w 2005 roku. Został stworzony w celu obsługi dystrybucji dla Nutch
wyszukiwarki tekstów. Hadoop
wykorzystuje technologie Google Map Reduce
i Google File System jako podstawę.
Funkcje Hadoop
- Jest zoptymalizowany do obsługi ogromnych ilości ustrukturyzowanych, częściowo ustrukturyzowanych i nieustrukturyzowanych danych przy użyciu sprzętu towarowego.
- Nie ma nic wspólnego z architekturą.
- Replikuje swoje dane na wielu komputerach, więc jeśli jeden z nich ulegnie awarii, dane mogą być przetwarzane z innego komputera, na którym przechowywana jest jego replika.
Hadoop
służy raczej do dużej przepustowości niż do małych opóźnień. Jest to operacja wsadowa obsługująca ogromne ilości danych; dlatego czas reakcji nie jest natychmiastowy.
- Uzupełnia przetwarzanie transakcji online i przetwarzanie analityczne online. Jednak nie zastępuje on
RDBMS
.
- Nie jest dobrze, gdy praca nie może być zrównoleglona lub gdy w danych występują zależności.
- Nie nadaje się do przetwarzania małych plików. Działa najlepiej z dużymi plikami danych i zestawami danych.
Wersje Hadoop
Dostępne są dwie wersje Hadoop
:
- Hadoop 1.0
- Hadoop 2.0
Hadoop 1.0
Składa się z dwóch głównych części:
1. Struktura przechowywania danych
Jest to system plików ogólnego przeznaczenia o nazwie Hadoop Distributed File System ( HDFS
).
HDFS
jest bez schematu
Po prostu przechowuje pliki danych, które mogą mieć dowolny format.
Chodzi o to, aby przechowywać pliki tak blisko ich oryginalnej formy, jak to możliwe.
To z kolei zapewnia jednostkom biznesowym i organizacji bardzo potrzebną elastyczność i sprawność, nie martwiąc się zbytnio tym, co może wdrożyć.
2. Ramy przetwarzania danych
Jest to prosty model programowania funkcjonalnego, spopularyzowany początkowo przez Google jako MapReduce
.
Zasadniczo wykorzystuje dwie funkcje: MAP
i REDUCE
do przetwarzania danych.
„Mapujący” przyjmują zestaw par klucz-wartość i generują dane pośrednie (czyli kolejną listę par klucz-wartość).
„Reduktory” działają następnie na to wejście w celu wygenerowania danych wyjściowych.
Te dwie funkcje pozornie działają w oderwaniu od siebie, umożliwiając w ten sposób wysoce rozproszone przetwarzanie w bardzo równoległy, odporny na uszkodzenia i skalowalny sposób.
Ograniczenia Hadoop 1.0
Pierwszym ograniczeniem był wymóg MapReduce
znajomości programowania.
Obsługiwane było tylko przetwarzanie wsadowe, które wprawdzie nadaje się do zadań takich jak analiza logów, projekty eksploracji danych na dużą skalę, ale prawie nie nadaje się do innych rodzajów projektów.
Jednym z głównych ograniczeń było Hadoop 1.0
ścisłe powiązanie obliczeniowe MapReduce
, co oznaczało, że uznani dostawcy zarządzania danymi pozostawili dwie opinie:
Albo przepisz ich funkcjonalność, MapReduce
aby można je było wykonać w Hadoop
lub
Wyodrębnij dane HDFS
lub przetwarzaj je poza Hadoop
.
Żadna z opcji nie była wykonalna, ponieważ doprowadziła do nieefektywności procesu spowodowanej przenoszeniem danych do i z Hadoop
klastra.
Hadoop 2.0
W Hadoop 2.0
, HDFS
nadal ramy przechowywania danych.
Jednakże nowe i indywidualne struktury zarządzania zasobami nazwie Y i kolizyjnego R esource N egotiater ( przędzy ), został dodany.
Każda aplikacja zdolna do dzielenia się na zadania równoległe jest obsługiwana przez YARN.
YARN koordynuje przydział podzadań złożonego wniosku, zwiększając w ten sposób elastyczność, skalowalność i wydajność aplikacji.
Działa poprzez zastosowanie Master aplikacji zamiast Job Tracker , uruchamianie aplikacji na zasobach zarządzanych przez nowy Node Manager .
ApplicationMaster jest w stanie uruchomić dowolną aplikację, a nie tylko MapReduce
.
Oznacza to, że obsługuje nie tylko przetwarzanie wsadowe, ale także przetwarzanie w czasie rzeczywistym. MapReduce
nie jest już jedyną opcją przetwarzania danych.
Zalety Hadoop
Przechowuje dane w swojej natywnej postaci. Nie ma narzuconej struktury podczas wprowadzania danych lub przechowywania danych. HDFS
jest mniej schematu. Dopiero później, gdy dane muszą zostać przetworzone, struktura zostaje nałożona na surowe dane.
Jest skalowalny. Hadoop
może przechowywać i rozpowszechniać bardzo duże zbiory danych na setkach niedrogich serwerów, które działają równolegle.
Jest odporny na awarie. Hadoop
to odporność na awarie. Pilnie ćwiczy replikację danych, co oznacza, że za każdym razem, gdy dane są wysyłane do dowolnego węzła, te same dane są replikowane również do innych węzłów w klastrze, zapewniając w ten sposób, że w przypadku awarii węzła zawsze będzie dostępna kolejna kopia danych do użycia.
Jest elastyczny. Jedną z kluczowych zalet Hadoop
jest to, że może pracować z dowolnym rodzajem danych: ustrukturyzowanym, nieustrukturyzowanym lub częściowo ustrukturyzowanym. Ponadto przetwarzanie jest niezwykle szybkie Hadoop
ze względu na paradygmat „przenieś kod do danych”.
Ekosystem Hadoop
Oto elementy Hadoop
ekosystemu:
HDFS : Hadoop
Rozproszony system plików. Po prostu przechowuje pliki danych możliwie najbliżej oryginalnej formy.
HBase : Jest to baza danych Hadoop i dobrze się porównuje z RDBMS
. Obsługuje uporządkowane przechowywanie danych dla dużych tabel.
Hive : Umożliwia analizę dużych zestawów danych przy użyciu języka bardzo podobnego do standardu ANSI SQL
, co oznacza, że każda osoba z rodziną SQL
powinna mieć dostęp do danych w Hadoop
klastrze.
Świnia : Jest to łatwy do zrozumienia język przepływu danych. Pomaga w analizie dużych zestawów danych, co jest dość porządne Hadoop
. Pig
Skrypty są automatycznie konwertowane na MapReduce
zadania przez Pig
tłumacza.
ZooKeeper : Jest to usługa koordynująca aplikacje rozproszone.
Oozie : Jest to schedular
system przepływu pracy do zarządzania Hadoop
zadaniami Apache .
Mahout : Jest to skalowalna biblioteka do uczenia maszynowego i eksploracji danych.
Chukwa : Jest to system gromadzenia danych do zarządzania dużym systemem rozproszonym.
Sqoop : Służy do przesyłania danych zbiorczych między Hadoop
ustrukturyzowanymi magazynami danych, takimi jak relacyjne bazy danych.
Ambari : Jest to internetowe narzędzie do udostępniania, zarządzania i monitorowania Hadoop
klastrów.
Ul
Hive
jest narzędziem infrastruktury hurtowni danych do przetwarzania danych strukturalnych Hadoop
. Opiera się on Hadoop
na podsumowaniu Big Data i ułatwia wyszukiwanie i analizę zapytań.
Rój nie jest
Relacyjna baza danych
Projekt do przetwarzania transakcji online ( OLTP
).
Język zapytań w czasie rzeczywistym i aktualizacji na poziomie wiersza.
Funkcje ula
Przechowuje schemat w bazie danych i przetwarza dane w HDFS
.
Jest przeznaczony do OLAP
.
Zapewnia SQL
język typów dla zapytań o nazwie HiveQL
lub HQL
.
Jest bardziej rodzinny, szybki, skalowalny i rozszerzalny.
Architektura ula
Architektura Hive zawiera następujące komponenty:
Interfejs użytkownika : Hive
jest data warehouse
infrastrukturą, która może tworzyć interakcje między użytkownikiem a HDFS
. Obsługiwane interfejsy użytkownika Hive
to Hive Web UI, Hive Command Line i Hive HD Insight (w systemie Windows Server).
MetaStore : Hive
wybiera odpowiedni database
servers
do przechowywania schematu lub Metadata
tabel, baz danych, kolumn w tabeli, ich typów danych i HDFS
mapowania.
HiveQL Process Engine : HiveQL
jest podobny do SQL
zapytania o informacje o schemacie w Metastore
. Jest to jeden z zamienników tradycyjnego podejścia do MapReduce
programu. Zamiast pisać MapReduce
w Java
, możemy napisać zapytanie do MapReduce
i przetwarza je.
Exceution Silnik : Część koniunkcja HiveQL
silniku procesowym i MapReduce
jest Hive
Execution Engine. Silnik wykonawczy przetwarza zapytanie i generuje wyniki tak samo jak MapReduce results
. Wykorzystuje smak MapReduce
.
HDFS lub HBase : Hadoop
rozproszony system plików lub HBase
techniki przechowywania danych służące do przechowywania danych w systemie plików.