Apache Spark vs Akka

Czy mógłbyś mi powiedzieć jaka jest różnica między Apache Spark a AKKA, wiem, że oba frameworki miały programować obliczenia rozproszone i równoległe, ale nie widzę związku ani różnicy między nimi.

Ponadto chciałbym, aby przypadki użycia były odpowiednie dla każdego z nich.

Author: hveiga, 2015-03-17

3 answers

Apache Spark jest tak naprawdę zbudowany na akce.

Akka jest frameworkiem ogólnego przeznaczenia do tworzenia reaktywnych, rozproszonych, równoległych i odpornych aplikacji współbieżnych w Scali lub Javie. Akka wykorzystuje model Actor do ukrycia całego kodu związanego z wątkiem i zapewnia naprawdę proste i pomocne interfejsy, aby łatwo zaimplementować skalowalny i odporny na błędy system. Dobrym przykładem dla Akka jest aplikacja w czasie rzeczywistym, która zużywa i przetwarza dane pochodzące z telefonów komórkowych i wysyła je do niektórych rodzaj przechowywania.

Apache Spark (Nie Spark Streaming) jest frameworkiem do przetwarzania danych wsadowych przy użyciu uogólnionej wersji algorytmu Map-reduce. Dobrym przykładem Apache Spark jest obliczenie niektórych wskaźników przechowywanych danych, aby uzyskać lepszy wgląd w dane. Dane są ładowane i przetwarzane na żądanie.

Apache Spark Streaming jest w stanie wykonywać podobne działania i funkcje na małych partiach danych w czasie niemal rzeczywistym tak samo, jak byś to zrobił, gdyby dane były już przechowywane.

AKTUALIZACJA KWIECIEŃ 2016

Od Apache Spark 1.6.0, Apache Spark nie polega już na Akka do komunikacji między węzłami. Dzięki @ EugeneMi za komentarz.

 82
Author: hveiga,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-04-15 14:36:06

Spark służy do przetwarzania danych, czym Akka jest do zarządzania przepływem danych i instrukcji w aplikacji.

TL; DR

Spark i Akka to dwa różne frameworki o różnych zastosowaniach i zastosowaniach.

Podczas tworzenia aplikacji, rozproszonych lub innych, może być konieczne zaplanowanie i zarządzanie zadaniami za pomocą podejścia równoległego, takiego jak użycie wątków. Wyobraź sobie ogromną aplikację z dużą ilością wątków. Jak skomplikowane byłoby to?

TypeSafe ' s Akka toolkit pozwala na użycie systemów Actor (pierwotnie wywodzących się z Erlanga), które dają warstwę abstrakcji nad wątkami. Aktorzy ci są w stanie komunikować się ze sobą, przekazując wszystko i wszystko jako wiadomości, i robić rzeczy równolegle i bez blokowania innego kodu.

Akka daje Ci wisienkę na torcie, zapewniając Ci sposoby prowadzenia aktorów w rozproszonym środowisku.

Apache Spark, z drugiej strony, jest frameworkiem przetwarzania danych dla ogromnych zbiorów danych, które nie mogą być obsługiwane ręcznie. Spark wykorzystuje to, co nazywamy RDD (lub Resilient Distributed Datasets), który jest rozproszoną listą jak warstwa abstrakcji nad tradycyjnymi strukturami danych, dzięki czemu operacje mogą być wykonywane na różnych węzłach równolegle do siebie.

Spark wykorzystuje zestaw narzędzi Akka do planowania zadań między różnymi węzłami.

 25
Author: Chetan Bhasin,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-03-17 14:17:03

Apache Spark:

Apache Spark™ to szybki i ogólny silnik do przetwarzania danych na dużą skalę.

Spark uruchamia programy do 100x szybciej niż Hadoop MapReduce w pamięci lub 10x szybciej na dysku.

Spark daje nam kompleksowy, Ujednolicony framework do zarządzania wymaganiami przetwarzania dużych danych za pomocą różnych zestawów danych, które mają zróżnicowany charakter (dane tekstowe, dane wykresowe itp.), a także źródła danych (batch v. dane strumieniowe w czasie rzeczywistym).

  1. Dobrze integruje się z ekosystemem Hadoop i źródłami danych (HDFS, Amazon S3, Hive, HBase, Cassandra, itp.)

  2. Może działać na klastrach zarządzanych przez Hadoop YARN lub Apache Mesos, a także może działać w trybie Standalone

  3. Zapewnia API w Scala, Java i Python , z obsługą innych języków (takich jak R) w drodze

  4. W oprócz mapowania i zmniejszania operacji obsługuje zapytania SQL, strumieniowanie danych, uczenie maszynowe i przetwarzanie danych Wykresów.

Powinniśmy spojrzeć na Spark jako alternatywę dla Hadoop MapReduce, a nie zamiennik Hadoop.

Aby lepiej zrozumieć, zapoznaj się z artykułami infoQ i toptal .

główne przypadki użycia Spark:

  1. algorytmy uczenia maszynowego
  2. Interactive analityka
  3. Streaming danych

Akka: from Letitcrash

Akka to oparty na zdarzeniach framework middleware, do tworzenia wydajnych i niezawodnych aplikacji rozproszonych w Javie i Scali. Akka oddziela logikę biznesową od mechanizmów niskopoziomowych, takich jak wątki, zamki i nieblokujące IO. Dzięki akce możesz łatwo skonfigurować sposób tworzenia, niszczenia, planowania i ponownego uruchamiania aktorów w przypadku awarii.

Zobacz ten typuje artykuł dla lepszego zrozumienia RAM aktorskich.

Akka zapewnia tolerancję błędów na podstawie hierarchii przełożonych. Każdy aktor może stworzyć innych aktorów, których następnie będzie nadzorował, podejmując decyzje, czy powinny zostać wznowione, wznowione, wycofane lub czy problem powinien zostać eskalowany.

Zobacz Akka artykuł & więc pytania

Główne przypadki użycia:

  1. przetwarzanie transakcji
  2. współbieżność / paralelizm
  3. Symulacja
  4. przetwarzanie wsadowe
  5. Gry i zakłady
  6. Złożone Przetwarzanie Strumienia Zdarzeń
 12
Author: Ravindra babu,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-10-25 05:18:10