Apache Spark jest jednym z najbardziej aktywnych projektów open-source w ekosystemie Hadoop i jedną z najgorętszych obecnie technologii w analizie dużych danych. Zarówno MapReduce, jak i Spark są frameworkami open source do przetwarzania dużych danych. Jednak Spark jest znany z przetwarzania in-memory i jest idealny dla instancji, w których dane mieszczą się w pamięci, szczególnie na dedykowanych klastrach. Porównujemy dwa wiodące frameworki programistyczne, aby pomóc Ci zdecydować, który z nich jest dla Ciebie odpowiedni.

Czym jest Hadoop MapReduce?

MapReduce to model programowania w ramach Hadoop dla rozproszonych obliczeń opartych na Javie. Służy do uzyskania dostępu do dużych danych w systemie plików Hadoop (HDFS). Jest to sposób strukturyzacji obliczeń, który pozwala na ich łatwe uruchomienie na wielu maszynach. Umożliwia masową skalowalność na setki lub tysiące serwerów w klastrze Hadoop. Pozwala na pisanie rozproszonych, skalowalnych zadań przy niewielkim wysiłku. Spełnia dwie zasadnicze funkcje: filtruje i dystrybuuje pracę do różnych węzłów w ramach klastra lub mapy. Jest używany do analizy danych na dużą skalę przy użyciu wielu maszyn w klastrze. Ramy MapReduce to zazwyczaj trzyetapowy proces: Map, Shuffle i Reduce.

Czym jest Apache Spark?





Spark to open source, super szybki framework big data powszechnie uważany za następcę frameworka MapReduce do przetwarzania dużych danych. Spark jest rozszerzeniem Hadoop do MapReduce używanym do dużych obciążeń danych. Dla organizacji, która ma ogromne ilości danych do przeanalizowania, Spark oferuje szybki i łatwy sposób analizy tych danych w całym klastrze komputerów. Jest to wielojęzyczny zunifikowany silnik analityczny dla big data i uczenia maszynowego. Jego ujednolicony model programowania czyni go najlepszym wyborem dla programistów budujących bogate w dane aplikacje analityczne. Zaczęło się w 2009 roku jako projekt badawczy w UC Berkley’s AMPLab, wspólne działanie obejmujące studentów, naukowców i wydziały.

Różnica między MapReduce a Spark

Przetwarzanie danych

– Hadoop przetwarza dane w partiach, a MapReduce działa sekwencyjnie, odczytując dane z klastra i wykonując na nich swoje operacje. Wyniki są następnie zapisywane z powrotem do klastra. Jest to efektywny sposób przetwarzania dużych, statycznych zbiorów danych. Z kolei Spark jest silnikiem rozproszonego przetwarzania danych ogólnego przeznaczenia, który przetwarza dane równolegle w całym klastrze. Wykonuje on przetwarzanie danych w czasie rzeczywistym oraz przetwarzanie grafów.

Performance



– Hadoop MapReduce jest stosunkowo wolniejszy, ponieważ wykonuje operacje na dysku i nie jest w stanie dostarczyć analityki w czasie zbliżonym do rzeczywistego z danych. Spark natomiast jest zaprojektowany w taki sposób, że przekształca dane w pamięci, a nie w I/O na dysku, co z kolei skraca czas przetwarzania. Spark jest w rzeczywistości 100 razy szybszy w pamięci i 10 razy szybszy na dysku. W przeciwieństwie do MapReduce, może poradzić sobie z przetwarzaniem w czasie rzeczywistym.

Koszt

– Hadoop działa po niższych kosztach, ponieważ jest to oprogramowanie open-source i wymaga więcej pamięci na dysku, która jest stosunkowo niedrogim towarem. Spark wymaga więcej pamięci RAM, co oznacza, że zakładanie klastrów Spark może być droższe. Ponadto Spark jest stosunkowo nowy, więc eksperci w Sparku są rzadkimi znaleziskami i bardziej kosztownymi.



Tolerancja błędów

– MapReduce jest ściśle dyskowy oznacza, że używa trwałej pamięci masowej. Podczas gdy oba zapewniają pewien poziom obsługi awarii, odporność na błędy Sparka opiera się głównie na jego operacjach RDD (Resilient Distributed Datasets). RDD jest elementem składowym Apache Spark. Hadoop jest naturalnie odporny na awarie, ponieważ został zaprojektowany do replikacji danych w kilku węzłach.

Łatwość użycia

– MapReduce nie posiada trybu interaktywnego i jest dość skomplikowany. Musi obsługiwać niskopoziomowe API do przetwarzania danych, co wymaga dużo kodowania, a kodowanie wymaga znajomości zaangażowanych struktur danych. Spark jest zaprojektowany od dołu do góry dla wydajności i łatwości użycia, co pochodzi z jego ogólnego modelu programowania. Również programy równoległe wyglądają bardzo podobnie do programów sekwencyjnych, co ułatwia ich opracowanie.

Podsumowanie



Główną różnicą pomiędzy tymi dwoma frameworkami jest to, że MapReduce przetwarza dane na dysku, podczas gdy Spark przetwarza i zachowuje dane w pamięci dla kolejnych kroków. W rezultacie Spark jest 100 razy szybszy w pamięci i 10 razy szybszy na dysku niż MapReduce. Hadoop używa MapReduce do przetwarzania danych, podczas gdy Spark używa odpornych rozproszonych zbiorów danych (RDD). Spark jest Hadoopowym udoskonaleniem MapReduce do przetwarzania dużych danych. Podczas gdy MapReduce jest nadal używany do analizy danych na dużą skalę, Spark stał się ramą przetwarzania go-to w środowiskach Hadoop.

Dlaczego Spark jest szybszy niż MapReduce?

Spark przetwarza i zachowuje dane w pamięci dla kolejnych kroków, dzięki czemu jest 100 razy szybszy dla danych w pamięci RAM i do 10 razy szybszy dla danych w pamięci masowej. Jego RDD umożliwiają wykonywanie wielu operacji mapowych w pamięci, podczas gdy MapReduce musi zapisywać wyniki pośrednie na dysku.

Czy Spark potrzebuje MapReduce?

Spark nie używa ani nie potrzebuje MapReduce, a jedynie jego idei, a nie dokładnej implementacji.