Spark vs Hadoop: która jest najlepsza platforma Big Data?



Ten post na blogu mówi o Apache Spark vs Hadoop. Daje ci wyobrażenie o tym, który framework Big Data jest odpowiedni do wyboru w różnych scenariuszach.

Zacznę ten blog Apache Spark vs Hadoop, najpierw przedstawiając Hadoop i Spark, aby ustawić odpowiedni kontekst dla obu frameworków. Następnie, idąc naprzód, porównamy obie ramy Big Data pod kątem różnych parametrów, aby przeanalizować ich mocne i słabe strony.Ale niezależnie od wyniku naszego porównania, powinieneś wiedzieć, że zarówno Spark, jak i Hadoop są kluczowymi składnikami .

Apache Spark vs Hadoop: wprowadzenie do Hadoop

Hadoop to framework, który pozwala najpierw przechowywać Big Data w środowisku rozproszonym, aby można było je przetwarzać równolegle. W Hadoop są zasadniczo dwa komponenty:





HDFS

HDFS tworzy abstrakcję zasobów, pozwól mi to dla Ciebie uprościć. Podobnie jak w przypadku wirtualizacji, można logicznie postrzegać HDFS jako pojedynczą jednostkę do przechowywania dużych zbiorów danych, ale w rzeczywistości dane są przechowywane w wielu węzłach w sposób rozproszony. Tutaj masz architekturę master-slave. W HDFS Namenode jest węzłem głównym, a Datanodes to slave.

NameNode

Jest to główny demon, który utrzymuje i zarządza DataNodes (węzłami slave). Rejestruje metadane wszystkich plików przechowywanych w klastrze, np. lokalizacja przechowywanych bloków, rozmiar plików, uprawnienia, hierarchia, itp. Rejestruje każdą zmianę, która ma miejsce w metadanych systemu plików.



Na przykład, jeśli plik zostanie usunięty w HDFS, NameNode natychmiast zarejestruje to w EditLog. Regularnie otrzymuje Heartbeat i raport o blokach ze wszystkich DataNodes w klastrze, aby upewnić się, że DataNodes działa. Prowadzi rejestr wszystkich bloków w HDFS oraz w których węzłach te bloki są przechowywane.

DataNode

Są to demony slave, które działają na każdej maszynie slave. Rzeczywiste dane są przechowywane w DataNodes. Są odpowiedzialni za obsługę żądań odczytu i zapisu od klientów. Są również odpowiedzialni za tworzenie bloków, usuwanie bloków i ich replikację w oparciu o decyzje podjęte przez NameNode.

HDFS - Apache Spark vs Hadoop - EdurekaPRZĘDZA

YARN wykonuje wszystkie czynności związane z przetwarzaniem, przydzielając zasoby i planując zadania. Ma dwa główne demony, tj. ResourceManager i NodeManager .



ResourceManager

Jest to komponent na poziomie klastra (po jednym dla każdego klastra) i działa na komputerze głównym. Zarządza zasobami i planuje aplikacje działające w oparciu o YARN.

NodeManager

Jest to komponent na poziomie węzła (po jednym w każdym węźle) i działa na każdym komputerze podrzędnym. Odpowiada za zarządzanie kontenerami i monitorowanie wykorzystania zasobów w każdym kontenerze. Śledzi również stan węzła i zarządzanie dziennikami. Stale komunikuje się z ResourceManager, aby być na bieżąco. Możesz więc wykonywać równoległe przetwarzanie na HDFS przy użyciu MapReduce.

Aby dowiedzieć się więcej o Hadoop, możesz przejść przez to blog. Teraz, gdy jesteśmy już przygotowani na wprowadzenie do Hadoop, przejdźmy do wprowadzenia Spark.

Apache Spark vs Hadoop: wprowadzenie do Apache Spark

Apache Spark to platforma do analizy danych w czasie rzeczywistym w rozproszonym środowisku obliczeniowym. Wykonuje obliczenia w pamięci w celu zwiększenia szybkości przetwarzania danych. Jest szybszy do przetwarzania danych na dużą skalę, ponieważ wykorzystuje obliczenia w pamięci i inne optymalizacje. Dlatego wymaga dużej mocy obliczeniowej.

Resilient Distributed Dataset (RDD) to podstawowa struktura danych platformy Spark. Jest to niezmienny, rozproszony zbiór obiektów. Każdy zbiór danych w RDD jest podzielony na logiczne partycje, które mogą być obliczane na różnych węzłach klastra. RDD mogą zawierać dowolne typy obiektów Python, Java lub Scala, w tym klasy zdefiniowane przez użytkownika. Komponenty Spark sprawiają, że jest szybki i niezawodny. Apache Spark zawiera następujące składniki:

rozwijane menu w angularjs
  1. Spark Core - Spark Core to podstawowy silnik do równoległego i rozproszonego przetwarzania danych na dużą skalę. Co więcej, dodatkowe biblioteki, które są wbudowane w rdzeń, umożliwiają zróżnicowane obciążenia dla strumieniowania, SQL i uczenia maszynowego. Odpowiada za zarządzanie pamięcią i odzyskiwanie po awarii, planowanie, dystrybucję i monitorowanie zadań w klastrze oraz interakcję z systemami pamięci masowej
  2. Spark Streaming - Spark Streaming to składnik Spark, który służy do przetwarzania danych strumieniowych w czasie rzeczywistym. W związku z tym jest przydatnym dodatkiem do podstawowego interfejsu Spark API. Umożliwia wysokoprzepustowe i odporne na błędy przetwarzanie strumieni danych na żywo
  3. Spark SQL : Spark SQL to nowy moduł w Spark, który integruje przetwarzanie relacyjne z funkcjonalnym interfejsem API platformy Spark. Obsługuje zapytania o dane za pośrednictwem języka SQL lub języka zapytań Hive. Dla tych, którzy znają RDBMS, Spark SQL będzie łatwym przejściem z wcześniejszych narzędzi, które pozwolą poszerzyć granice tradycyjnego przetwarzania danych relacyjnych.
  4. GraphX : GraphX ​​to interfejs Spark API dla wykresów i obliczeń równoległych do wykresów. W ten sposób rozszerza Spark RDD o Resilient Distributed Property Graph. Na wysokim poziomie GraphX ​​rozszerza abstrakcję Spark RDD, wprowadzając Resilient Distributed Property Graph: skierowany multigraf z właściwościami dołączonymi do każdego wierzchołka i krawędzi.
  5. MLlib (Machine Learning): MLlib to skrót od Machine Learning Library. Spark MLlib służy do wykonywania uczenia maszynowego w Apache Spark.

Jak widać, Spark jest wyposażony w biblioteki wysokiego poziomu, w tym obsługę języków R, SQL, Python, Scala, Java itp. Te standardowe biblioteki zwiększają płynną integrację w złożonym przepływie pracy. Ponadto umożliwia integrację z nią różnych zestawów usług, takich jak MLlib, GraphX, SQL + Data Frames, usługi przesyłania strumieniowego itp. W celu zwiększenia jego możliwości.

Aby dowiedzieć się więcej o Apache Spark, możesz przejść przez to blog. Teraz wszystko jest gotowe dla Apache Spark vs Hadoop. Przejdźmy dalej i porównajmy Apache Spark z Hadoop pod względem różnych parametrów, aby zrozumieć ich mocne strony.

Apache Spark vs Hadoop: parametry do porównania

Występ

Spark jest szybki, ponieważ ma przetwarzanie w pamięci. Może również używać dysku do przechowywania danych, które nie mieszczą się w całej pamięci. Przetwarzanie w pamięci Spark zapewnia analizy niemal w czasie rzeczywistym. To sprawia, że ​​Spark nadaje się do systemu przetwarzania kart kredytowych, uczenia maszynowego, analityki bezpieczeństwa i czujników Internetu rzeczy.

Hadoop został pierwotnie skonfigurowany do ciągłego gromadzenia danych z wielu źródeł bez martwienia się o typ danych i przechowywania ich w rozproszonym środowisku. MapReduce używa przetwarzania wsadowego. MapReduce nigdy nie zostało zbudowane do przetwarzania w czasie rzeczywistym, główną ideą YARN jest przetwarzanie równoległe w rozproszonym zestawie danych.

Problem z porównywaniem tych dwóch polega na tym, że przetwarzają one inaczej.

Łatwość użycia

Spark jest wyposażony w przyjazne dla użytkownika interfejsy API dla Scala, Java, Python i Spark SQL. Spark SQL jest bardzo podobny do SQL, więc programiści SQL mogą się go łatwiej nauczyć. Spark zapewnia również interaktywną powłokę dla programistów do wykonywania zapytań i wykonywania innych czynności oraz natychmiastowego uzyskiwania opinii.

Możesz łatwo pozyskiwać dane w Hadoop, używając powłoki lub integrując je z wieloma narzędziami, takimi jak Sqoop, Flume itp. YARN to tylko struktura przetwarzania i może być zintegrowana z wieloma narzędziami, takimi jak Hive i Pig. HIVE to składnik hurtowni danych, który odczytuje, zapisuje i zarządza dużymi zbiorami danych w środowisku rozproszonym przy użyciu interfejsu podobnego do SQL. Możesz przez to przejść Ekosystem Hadoop blog, aby dowiedzieć się o różnych narzędziach, które można zintegrować z Hadoop.

Koszty

Hadoop i Spark są projektami open source Apache, więc oprogramowanie jest bezpłatne. Koszt jest związany tylko z infrastrukturą. Oba produkty są zaprojektowane w taki sposób, że mogą działać na standardowym sprzęcie o niskim TCO.

Teraz możesz się zastanawiać, w jaki sposób są różne. Przechowywanie i przetwarzanie w Hadoop jest oparte na dyskach, a Hadoop używa standardowych ilości pamięci. Tak więc z Hadoopem potrzebujemy dużo miejsca na dysku, a także szybszych dysków. Hadoop wymaga również wielu systemów do dystrybucji dysków we / wy.

Ze względu na przetwarzanie pamięci przez Apache Spark, wymaga on dużej ilości pamięci, ale radzi sobie ze standardową szybkością i ilością dysku. Ponieważ miejsce na dysku jest stosunkowo niedrogim towarem, a Spark nie używa operacji wejścia / wyjścia dysku do przetwarzania, zamiast tego wymaga dużej ilości pamięci RAM do wykonywania wszystkiego w pamięci. W związku z tym system Spark kosztuje więcej.

Ale tak, jedną ważną rzeczą, o której należy pamiętać, jest to, że technologia Sparka zmniejsza liczbę wymaganych systemów. Potrzebuje znacznie mniej systemów, które kosztują więcej. Będzie więc punkt, w którym Spark obniży koszty na jednostkę obliczeniową, nawet przy dodatkowym zapotrzebowaniu na pamięć RAM.

usługa teraz szkolenie w zakresie systemu biletowego

Przetwarzanie danych

Istnieją dwa rodzaje przetwarzania danych: przetwarzanie wsadowe i przetwarzanie strumieniowe.

Przetwarzanie wsadowe a przetwarzanie strumieniowe

Przetwarzanie wsadowe : Przetwarzanie wsadowe ma kluczowe znaczenie dla świata dużych zbiorów danych. Mówiąc najprościej, przetwarzanie wsadowe polega na pracy z dużą ilością danych gromadzonych przez pewien okres. W przetwarzaniu wsadowym dane są najpierw gromadzone, a następnie przetwarzane wyniki są generowane na późniejszym etapie.

Przetwarzanie wsadowe to skuteczny sposób przetwarzania dużych, statycznych zestawów danych. Generalnie wykonujemy przetwarzanie wsadowe dla zarchiwizowanych zestawów danych. Na przykład obliczenie średniego dochodu kraju lub ocena zmiany w handlu elektronicznym w ostatniej dekadzie.

Przetwarzanie strumieniowe : Przetwarzanie strumieniowe to aktualny trend w świecie dużych zbiorów danych. Potrzeba godziny to szybkość i informacja w czasie rzeczywistym, co robi obróbka pary. Przetwarzanie wsadowe nie pozwala firmom szybko reagować na zmieniające się potrzeby biznesowe w czasie rzeczywistym, a przetwarzanie strumieniowe odnotowuje szybki wzrost popytu.

Wracając teraz do Apache Spark vs Hadoop, YARN jest w zasadzie platformą przetwarzania wsadowego. Kiedy wysyłamy zadanie do YARN, odczytuje dane z klastra, wykonuje operację i zapisuje wyniki z powrotem do klastra. Następnie ponownie odczytuje zaktualizowane dane, wykonuje następną operację i zapisuje wyniki z powrotem do klastra i tak dalej.

Spark wykonuje podobne operacje, ale używa przetwarzania w pamięci i optymalizuje kroki. GraphX ​​umożliwia użytkownikom przeglądanie tych samych danych, co wykresy i kolekcje. Użytkownicy mogą również przekształcać i łączyć wykresy za pomocą Resilient Distributed Datasets (RDD).

Tolerancja błędów

Hadoop i Spark zapewniają odporność na awarie, ale obie mają inne podejście. Zarówno dla HDFS, jak i YARN, demony główne (tj. Odpowiednio NameNode i ResourceManager) sprawdzają pulsowanie demonów podrzędnych (tj. Odpowiednio DataNode i NodeManager). Jeśli jakikolwiek demon podrzędny zawiedzie, demony główne przełożą wszystkie oczekujące i trwające operacje na innego podrzędnego. Ta metoda jest skuteczna, ale może również znacznie wydłużyć czas ukończenia operacji z pojedynczą awarią. Ponieważ Hadoop używa zwykłego sprzętu, innym sposobem zapewniania odporności na uszkodzenia przez HDFS jest replikacja danych.

Jak omówiliśmy powyżej, RDD są elementami składowymi Apache Spark. RDD zapewniają Sparkowi odporność na uszkodzenia. Mogą odnosić się do dowolnego zestawu danych obecnego w zewnętrznym systemie pamięci masowej, takim jak HDFS, HBase, współdzielony system plików. Mogą pracować równolegle.

RDD mogą utrwalać zestaw danych w pamięci między operacjami, co znacznie przyspiesza przyszłe działania 10 razy. Jeśli RDD zostanie utracony, zostanie automatycznie przeliczony przy użyciu oryginalnych przekształceń. W ten sposób Spark zapewnia odporność na uszkodzenia.

Bezpieczeństwo

Hadoop obsługuje protokół Kerberos do uwierzytelniania, ale jest trudny w obsłudze. Niemniej jednak obsługuje również dostawców zewnętrznych, takich jak LDAP (Lightweight Directory Access Protocol) do uwierzytelniania. Oferują również szyfrowanie. HDFS obsługuje tradycyjne uprawnienia do plików, a także listy kontroli dostępu (ACL). Hadoop zapewnia autoryzację poziomu usług, która gwarantuje, że klienci mają odpowiednie uprawnienia do przesyłania zadań.

Spark obsługuje obecnie uwierzytelnianie za pośrednictwem wspólnego hasła. Spark może zintegrować się z HDFS i może używać list ACL HDFS i uprawnień na poziomie plików. Spark może również działać w YARN, wykorzystując możliwości protokołu Kerberos.

Przypadki użycia, w których Hadoop pasuje najlepiej:

  • Analiza danych archiwalnych. YARN umożliwia równoległe przetwarzanie ogromnych ilości danych. Części danych są przetwarzane równolegle i oddzielnie na różnych DataNodes i zbiera wyniki z każdego NodeManager.
  • Jeśli natychmiastowe wyniki nie są wymagane. Hadoop MapReduce to dobre i ekonomiczne rozwiązanie do przetwarzania wsadowego.

Przypadki użycia, w których Spark pasuje najlepiej:

Analiza Big Data w czasie rzeczywistym:

Analiza danych w czasie rzeczywistym oznacza przetwarzanie danych generowanych przez strumienie zdarzeń w czasie rzeczywistym napływające z prędkością milionów zdarzeń na sekundę, na przykład dane z Twittera. Siła Spark tkwi w możliwościach obsługi przesyłania strumieniowego danych wraz z przetwarzaniem rozproszonym. Jest to przydatne połączenie, które zapewnia przetwarzanie danych w czasie niemal rzeczywistym. MapReduce ma taką wadę, że został zaprojektowany do wykonywania rozproszonego przetwarzania wsadowego i dużej ilości danych. Dane w czasie rzeczywistym mogą być nadal przetwarzane w MapReduce, ale ich prędkość nie jest zbliżona do prędkości Spark.

java c ++ python

Spark twierdzi, że przetwarza dane 100 razy szybciej niż MapReduce, a 10 razy szybciej z dyskami.

Przetwarzanie wykresów:

Większość algorytmów przetwarzania wykresów, takich jak PageRank, wykonuje wiele iteracji na tych samych danych, co wymaga mechanizmu przekazywania komunikatów. Musimy jawnie zaprogramować MapReduce, aby obsługiwał takie wielokrotne iteracje tych samych danych. Z grubsza działa to w następujący sposób: Odczytaj dane z dysku i po określonej iteracji, zapisz wyniki do HDFS, a następnie odczytaj dane z HDFS do następnej iteracji. Jest to bardzo nieefektywne, ponieważ wymaga odczytywania i zapisywania danych na dysku, co wiąże się z dużymi operacjami we / wy i replikacją danych w całym klastrze w celu zapewnienia odporności na uszkodzenia. Ponadto każda iteracja MapReduce ma bardzo duże opóźnienie, a następna iteracja może rozpocząć się dopiero po całkowitym zakończeniu poprzedniego zadania.

Ponadto przekazywanie wiadomości wymaga oceny punktów sąsiednich węzłów w celu oceny wyniku określonego węzła. Te obliczenia wymagają wiadomości od sąsiadów (lub danych z wielu etapów pracy), mechanizmu, którego brakuje MapReduce. Różne narzędzia do przetwarzania wykresów, takie jak Pregel i GraphLab, zostały zaprojektowane w celu zaspokojenia zapotrzebowania na wydajną platformę dla algorytmów przetwarzania wykresów. Narzędzia te są szybkie i skalowalne, ale nie są wydajne do tworzenia i przetwarzania końcowego tych złożonych, wieloetapowych algorytmów.

Wprowadzenie Apache Spark w dużym stopniu rozwiązało te problemy. Spark zawiera bibliotekę obliczeń wykresów o nazwie GraphX, która upraszcza nasze życie. Obliczenia w pamięci wraz z wbudowaną obsługą wykresów poprawiają wydajność algorytmu o jeden lub dwa stopnie w porównaniu z tradycyjnymi programami MapReduce. Spark używa kombinacji Netty i Akka do dystrybucji wiadomości między wykonawcami. Przyjrzyjmy się niektórym statystykom przedstawiającym wydajność algorytmu PageRank przy użyciu Hadoop i Spark.

Algorytmy iteracyjnego uczenia maszynowego:

Prawie wszystkie algorytmy uczenia maszynowego działają iteracyjnie. Jak widzieliśmy wcześniej, algorytmy iteracyjne obejmują wąskie gardła we / wy w implementacjach MapReduce. MapReduce używa zadań gruboziarnistych (równoległość na poziomie zadań), które są zbyt ciężkie dla algorytmów iteracyjnych. Spark z pomocą Mesosa - jądra systemu rozproszonego, buforuje pośredni zestaw danych po każdej iteracji i uruchamia wiele iteracji na tym zbuforowanym zbiorze danych, co zmniejsza liczbę operacji we / wy i pomaga szybciej uruchomić algorytm w sposób odporny na błędy.

Spark ma wbudowaną skalowalną bibliotekę uczenia maszynowego o nazwie MLlib, która zawiera wysokiej jakości algorytmy, które wykorzystują iteracje i dają lepsze wyniki niż przybliżenia jednego przebiegu, czasami używane w MapReduce.

  • Szybkie przetwarzanie danych. Jak wiemy, Spark umożliwia przetwarzanie w pamięci. W rezultacie Spark jest do 100 razy szybszy w przypadku danych w pamięci RAM i do 10 razy w przypadku danych w pamięci.
  • Przetwarzanie iteracyjne. RDD Sparka pozwalają na wykonywanie kilku operacji na mapie w pamięci, bez konieczności zapisywania tymczasowych zestawów danych na dysku.
  • Przetwarzanie prawie w czasie rzeczywistym. Spark to doskonałe narzędzie zapewniające natychmiastowy wgląd w biznes. To jest powód, dla którego Spark jest używany w systemie przesyłania strumieniowego karty kredytowej.

„Apache Spark: zabójca czy wybawca Apache Hadoop?”

Odpowiedź na to pytanie - Hadoop MapReduce i Apache Spark nie konkurują ze sobą. W rzeczywistości dość dobrze się uzupełniają. Hadoop zapewnia kontrolę nad ogromnymi zbiorami danych przez systemy towarowe. Spark zapewnia przetwarzanie w pamięci w czasie rzeczywistym dla tych zestawów danych, które tego wymagają. Najlepsze wyniki uzyskuje się, gdy połączymy możliwości Apache Spark, tj. Dużą prędkość przetwarzania, zaawansowane analizy i obsługę wielu integracji z niskokosztową obsługą Hadoop na zwykłym sprzęcie. Hadoop uzupełnia możliwości Apache Spark. Spark nie może całkowicie zastąpić Hadoop, ale dobrą wiadomością jest to, że popyt na Spark jest obecnie najwyższy w historii! To właściwy moment, aby opanować Sparka i jak najlepiej wykorzystać pojawiające się możliwości kariery. Zacznij teraz!

Masz do nas pytanie? Wspomnij o tym w sekcji komentarzy, a my skontaktujemy się z Tobą najwcześniej.

Jeśli chcesz nauczyć się Sparka i zbudować karierę w domenie Spark, aby wykonywać przetwarzanie danych na dużą skalę za pomocą RDD, Spark Streaming, SparkSQL, MLlib, GraphX ​​i Scala z wykorzystaniem rzeczywistych przypadków użycia, sprawdź nasze interaktywne, online na żywo tutaj, który zapewnia wsparcie 24 * 7, które poprowadzi Cię przez cały okres nauki.