Porównanie rozproszonych aparatów analitycznych
W tym miejscu zakończymy omówienie rozproszonych aparatów analitycznych dla chmury, w którym prezentowane są usługi Hadoop MapReduce, Spark i GraphLab jako efektywne i popularne platformy do programowania rozproszonego. Każdy z tych trzech aparatów wyręcza użytkownika w następujących kwestiach związanych z obliczaniem rozproszonym:
- Projektowanie i wdrażanie odpowiedniego modelu programowania (przekazywanie komunikatów lub pamięć współdzielona) oraz rozwiązywanie wszystkich powiązanych problemów z synchronizacją i spójnością
- Opracowywanie modelu obliczeniowego (synchronicznego lub asynchronicznego)
- Określanie modelu równoległości (równoległość grafów, równoległość danych, iteracyjny) oraz kodowanie niezbędnych algorytmów partycjonowania i mapowania
- Projektowanie podstawowej struktury architektonicznej (nadrzędno-podrzędnej lub równorzędnej)
- Wdrożenie efektywnej strategii planowania zadań/wierzchołków (opartej na wypychaniu lub ściąganiu)
W poniższej tabeli porównano trzy aparaty pod względem tych zagadnień. W usługach MapReduce i Spark stosowany jest model danych równoległych, a programy GraphLab są wykonywane w modelu grafów równoległych. Usługi MapReduce i Spark sugerują synchroniczne modele obliczeniowe, a narzędzie GraphLab udostępnia użytkownikowi aparaty zarówno synchroniczne, jak i asynchroniczne. Usługa MapReduce jest odpowiednia dla aplikacji, które są względnie luźno połączone lub zaskakująco równoległe (z małą liczbą zależności/komunikatów między równoległymi zadaniami lub bez nich) i obejmują nieiteracyjne obliczenia z dużymi woluminami danych. Usługa Spark optymalizuje model usługi MapReduce dla aplikacji wymagających iteracyjnego stosowania mapowania i ograniczenia funkcji do danych. Z kolei narzędzie GraphLab jest bardziej odpowiednie w przypadku silnie połączonych aplikacji (o wysokim stopniu zależności między równoległymi zadaniami/wierzchołkami) i aplikacji obejmującymi iteracyjne obliczenia z małą ilością danych na zadanie/wierzchołek. Narzędzie GraphLab obejmuje również konkretne optymalizacje, które umożliwiają zrównoważoną i wydajną dystrybucję zadań między węzłami przetwarzania grafów z rozkładem wykładniczym, takich jak grafy społecznościowe i sieci Web.
Oto porównanie rozproszonych aparatów analitycznych:
MapReduce | platforma Spark | GraphLab | |
---|---|---|---|
Model programowania | Przekazywanie komunikatów | Przekazywanie komunikatów | Przekazywanie komunikatów |
Model obliczeniowy | Synchronous | Synchronous | Synchroniczny i asynchroniczny |
Model równoległości | Dane równoległe | Iteracyjny z danymi równoległymi | Grafy równoległe |
Model architektoniczny | Nadrzędno-podrzędny | Nadrzędno-podrzędny | Równorzędny |
Model planowania zadań lub wierzchołków | Oparty na ściąganiu | Oparty na ściąganiu | Oparty na wypychaniu |