Apache Spark kontra Hadoop Mapreduce – co musisz wiedzieć
Opublikowany: 2019-09-05Big Data jest jak wszechobecny Wielki Brat we współczesnym świecie. Stale rosnące przypadki użycia Big Data w różnych branżach doprowadziły do powstania wielu technologii Big Data, z których najpopularniejsze są Hadoop MapReduce i Apache Spark. Chociaż zarówno MapReduce, jak i Spark są flagowymi projektami open source opracowanymi przez Apache Software Foundation, są również najsilniejszymi rywalami między sobą.
W tym poście najpierw omówimy frameworki MapReduce i Spark, a następnie przejdziemy do omówienia kluczowych różnic między nimi.
Co to są Spark i MapReduce?
Spark to platforma Big Data zaprojektowana specjalnie w celu umożliwienia szybkich obliczeń. Służy jako silnik przetwarzania danych ogólnego przeznaczenia, który może obsługiwać różne obciążenia, w tym wsadowe, interaktywne, iteracyjne i strumieniowe. Kluczową cechą Sparka jest szybkość — wykonuje obliczenia w pamięci w celu zwiększenia szybkości przetwarzania danych. Dzięki temu dobrze działa na klastrze węzłów komputerowych i umożliwia szybsze przetwarzanie dużych zbiorów danych.
Resilient Distributed Dataset (RDD) to podstawowa struktura danych platformy Spark. RDD to niezmienna, rozproszona kolekcja obiektów, w której każdy węzeł jest podzielony na mniejsze porcje, które można obliczyć na różnych węzłach klastra. Ułatwia to niezależne przetwarzanie danych w ramach klastra.
MapReduce to platforma typu open source przeznaczona do przetwarzania ogromnych ilości danych w środowisku równoległym i rozproszonym. Może przetwarzać dane tylko w trybie wsadowym. Istnieją dwa główne składniki Hadoop MapReduce — HDFS i YARN.

Programowanie MapReduce składa się z dwóch części – Mappera i Reduktora. Podczas gdy Mapper obsługuje zadanie sortowania danych, Reduktor łączy posortowane dane i konwertuje je na mniejsze fragmenty.
Jeśli chodzi o podstawową różnicę między tymi dwoma frameworkami, jest to ich wrodzone podejście do przetwarzania danych. Podczas gdy MapReduce przetwarza dane przez odczytywanie i zapisywanie na dysku, Spark może wykonywać operacje w pamięci. W ten sposób Spark uzyskuje przewagę nad MapReduce – szybkością przetwarzania.
Ale czy to oznacza, że Spark jest lepszy niż MapReduce? Niestety debata nie jest taka prosta. Aby rzucić więcej światła na tę kwestię, przeanalizujemy różnice między nimi punkt po punkcie.
Przetwarzanie danych
Spark : jak wspomnieliśmy wcześniej, Spark jest bardziej hybrydowym i uniwersalnym frameworkiem przetwarzania. Dzięki obliczeniom w pamięci i optymalizacji przetwarzania przyspiesza przetwarzanie danych w czasie rzeczywistym. Doskonale nadaje się do przesyłania strumieniowego obciążeń, uruchamiania interaktywnych zapytań i algorytmów ML. Jednak RDD pozwala tylko Spark na tymczasowe przechowywanie danych na dysku, zapisując tylko kluczowe dane na dysku. Tak więc ładuje proces w pamięci i zachowuje go w pamięci podręcznej. To sprawia, że Spark wymaga dużej ilości pamięci.
MapReduce : MapReduce to natywny aparat przetwarzania wsadowego platformy Hadoop. Jego komponenty (HDFS i YARN) umożliwiają płynniejsze przetwarzanie danych wsadowych. Ponieważ jednak przetwarzanie danych odbywa się w kilku kolejnych krokach, proces ten przebiega dość wolno. Zaletą MapReduce jest to, że pozwala na trwałe przechowywanie – przechowuje dane na dysku. Dzięki temu nadaje się do obsługi ogromnych zbiorów danych. Gdy tylko zadanie zostanie zakończone, MapReduce zabija swoje procesy, dzięki czemu może działać jednocześnie z innymi usługami.
Łatwość użycia
Spark : Jeśli chodzi o łatwość użytkowania, to Spark zajmuje pierwsze miejsce. Zawiera wiele przyjaznych dla użytkownika interfejsów API dla Scala (język ojczysty), Java, Python i Spark SQL. Ponieważ Spark umożliwia przesyłanie strumieniowe, przetwarzanie wsadowe i uczenie maszynowe w tym samym klastrze, możesz łatwo uprościć infrastrukturę przetwarzania danych zgodnie ze swoimi potrzebami. Ponadto Spark zawiera interaktywny tryb REPL (odczyt-ocena-drukowanie) do uruchamiania poleceń, który zapewnia szybką informację zwrotną dla użytkowników.
MapReduce : ponieważ Hadoop MapReduce jest napisany w Javie, nauczenie się składni zajmuje trochę czasu. Dlatego początkowo programowanie może być dla wielu trudne. Chociaż MapReduce nie ma trybu interaktywnego, narzędzia takie jak Pig i Hive ułatwiają pracę z nim. Istnieją również inne narzędzia (na przykład Xplenty), które mogą uruchamiać zadania MapReduce bez konieczności programowania.

Tolerancja błędów
Spark : Spark wykorzystuje RDD i różne modele przechowywania danych w celu zapewnienia odporności na awarie, zmniejszając liczbę operacji we/wy w sieci. W przypadku utraty partycji w RDD, RDD odbuduje tę partycję z informacji przechowywanych w pamięci. W związku z tym, jeśli proces ulegnie awarii w połowie, Spark będzie musiał rozpocząć przetwarzanie od samego początku.
MapReduce : w przeciwieństwie do Spark, MapReduce wykorzystuje koncepcję replikacji w celu zapewnienia odporności na awarie za pośrednictwem Menedżera węzłów i Menedżera zasobów. Tutaj, jeśli proces nie zostanie wykonany w połowie, MapReduce będzie kontynuował od miejsca, w którym został przerwany, oszczędzając w ten sposób czas.
Bezpieczeństwo
Spark : Ponieważ Spark jest wciąż w powijakach, jego współczynnik bezpieczeństwa nie jest wysoko rozwinięty. Obsługuje uwierzytelnianie za pomocą wspólnego tajnego arkusza (uwierzytelnianie hasłem). Jeśli chodzi o webowy interfejs użytkownika, można go chronić za pomocą filtrów serwletów javax. Funkcje YARN i HDFS platformy Spark umożliwiają uwierzytelnianie Kerberos, uprawnienia na poziomie plików HDFS i szyfrowanie między węzłami.
MapReduce : MapReduce jest znacznie bardziej rozwinięty i dlatego ma lepsze funkcje bezpieczeństwa niż Spark. Posiada wszystkie zalety bezpieczeństwa Hadoop i może być zintegrowany z projektami bezpieczeństwa Hadoop, w tym Knox Gateway i Sentry. Dzięki poprawnym dostawcom zewnętrznym organizacje mogą nawet używać Active Directory Kerberos i LDAP do uwierzytelniania.
Koszt
Chociaż zarówno Spark, jak i MapReduce są projektami typu open source, istnieją pewne koszty, które należy ponieść w obu przypadkach. Na przykład Spark wymagał dużej ilości pamięci RAM do uruchamiania zadań w pamięci, a pamięć RAM jest droższa niż dyski twarde. Wręcz przeciwnie, Hadoop jest zorientowany na dysk — chociaż nie będziesz musiał kupować drogiej pamięci RAM, będziesz musiał zainwestować więcej w systemy do dystrybucji we/wy dysku w wielu systemach.
Tak więc pod względem kosztów w dużej mierze zależy to od wymagań organizacji. Jeśli organizacja musi przetwarzać ogromne ilości dużych ilości danych, Hadoop będzie opłacalną opcją, ponieważ zakup miejsca na dysku twardym jest znacznie tańszy niż zakup rozległej pamięci. Co więcej, MapReduce zawiera wiele ofert Hadoop jako usługi i usług opartych na Hadoop, które pozwalają pominąć wymagania sprzętowe i kadrowe. W porównaniu z tym istnieje tylko kilka opcji Spark-as-a-service.

Zgodność
Jeśli chodzi o kompatybilność, zarówno Spark, jak i MapReduce są ze sobą kompatybilne. Spark można bezproblemowo zintegrować ze wszystkimi źródłami danych i formatami plików obsługiwanymi przez Hadoop. Ponadto oba są skalowalne. Tak więc zgodność Sparka z typami danych i źródłami danych jest prawie taka sama jak Hadoop MapReduce.
Jak widać, zarówno Spark, jak i MapReduce mają unikalne funkcje, które odróżniają je od siebie. Na przykład Spark oferuje analitykę w czasie rzeczywistym, której brakuje w MapReduce, podczas gdy MapReduce zawiera system plików, którego brakuje Sparkowi. Oba frameworki są doskonałe na swój sposób i oba mają swój unikalny zestaw zalet i wad. Ostatecznie debata między Sparkiem a MapReduce sprowadza się do Twoich konkretnych potrzeb biznesowych i rodzaju zadań, które chcesz wykonać.
Jeśli chcesz dowiedzieć się więcej o Big Data, sprawdź nasz program PG Diploma in Software Development Specialization in Big Data, który jest przeznaczony dla pracujących profesjonalistów i zawiera ponad 7 studiów przypadków i projektów, obejmuje 14 języków programowania i narzędzi, praktyczne praktyczne warsztaty, ponad 400 godzin rygorystycznej pomocy w nauce i pośrednictwie pracy w najlepszych firmach.
Ucz się kursów rozwoju oprogramowania online z najlepszych światowych uniwersytetów. Zdobywaj programy Executive PG, Advanced Certificate Programs lub Masters Programs, aby przyspieszyć swoją karierę.
