2016-03-16 27 views
18

Obecnie studiuję frameworki Apache i Apache. Niektóre zasadnicze różnice między nimi opisano w tym artykule: ignite vs spark Ale zdałem sobie sprawę, że nadal nie rozumiem ich celów. Mam na myśli, dla których problemów iskrzenie bardziej preferowane niż zapalić i na odwrót?Apache Spark vs Apache Ignite

+2

Sieć [Ignite Propozycja] (https://wiki.apache.org/incubator/IgniteProposal) daje dobry przegląd nim vs Spark & ​​Hadoop. –

Odpowiedz

23

Powiedziałbym, że Spark to dobry produkt do interaktywnych analiz, podczas gdy Ignite jest lepszy do analityki w czasie rzeczywistym i wysokiej jakości przetwarzania transakcyjnego. Ignite osiąga to, zapewniając wydajne i skalowalne przechowywanie klucz-wartość w pamięci, a także bogate możliwości indeksowania, przeszukiwania danych i wykonywania obliczeń.

Innym częstym zastosowaniem Ignite jest rozproszone buforowanie, które jest często używane do poprawy wydajności aplikacji, które współdziałają z relacyjnymi bazami danych lub dowolnymi innymi źródłami danych.

+5

Dziękujemy za wyjaśnienia, ale jaka jest różnica między analityką interaktywną a analityką działającą w czasie rzeczywistym? – mfudi

+0

Natknąłem się na to pytanie i jestem również zainteresowany tym pytaniem. Myślę, że interaktywna analityka często oznacza wielokrotne analizowanie na stabilnych danych poprzez przeniesienie danych do pamięci (tak iskra jest bardzo odpowiednia do uczenia maszynowego). Analiza w czasie rzeczywistym oznacza zmienne dane w czasie rzeczywistym, które według mnie są bardziej odpowiednie w oparciu o pamięć podręczną. @ Valentin, jak myślisz? – Tom

+2

Cóż, prawdopodobnie OLAP i OLTP są tutaj bardziej poprawnymi terminami. Pierwsza z nich oznacza uruchamianie stosunkowo rzadkich, dużych i najczęściej tylko do odczytu kwerend, podczas gdy w drugiej jest wysoka przepustowość mniejszych zapytań. Ignite został pierwotnie zaprojektowany dla OLTP, ale obecnie jest również adresowany do OLAP. –

12

Apache Ignite to wysokowydajna, zintegrowana i rozproszona platforma pamięci masowej do przetwarzania i przetwarzania dużych zbiorów danych w czasie rzeczywistym. Iggnite jest platformą niezależną od źródła danych i może dystrybuować i buforować dane przez wiele serwerów w pamięci RAM, aby zapewnić niespotykaną szybkość przetwarzania i ogromną skalowalność aplikacji.

Apache Spark (framework computing) to szybki mechanizm przetwarzania danych w pamięci z ekspresyjnymi interfejsami programistycznymi, umożliwiający pracownikom przetwarzającym dane wydajne przesyłanie strumieniowe, uczenie maszynowe lub obciążenia SQL, które wymagają szybkiego iteracyjnego dostępu do zestawów danych. Dzięki zezwoleniu programom użytkownika na ładowanie danych do pamięci klastra i wielokrotne wysyłanie zapytań, Spark jest dobrze dostosowany do wysokowydajnych algorytmów obliczeniowych i uczenia maszynowego.

Niektóre różnice koncepcyjne:

Spark nie przechowuje danych, ładuje do przetwarzania danych z innych magazynów, zwykle oparte na dysku, a następnie odrzuca dane, gdy przetwarzanie jest zakończone. Z drugiej strony, Ignite dostarcza rozproszony magazyn kluczy i rozproszonych pamięci (rozproszona pamięć podręczna lub siatka danych) z transakcjami ACID i możliwościami zapytania SQL.

Spark jest dla nietransakcyjnych, tylko do odczytu danych (RDD nie obsługują mutację w miejscu), natomiast Ignite obsługuje zarówno non-transakcyjnych (OLAP) ładunki, a także w pełni zgodne transakcje ACID (OLTP)

Ignite w pełni obsługuje czyste ładunki obliczeniowe (HPC/MPP), które mogą być "bez danych". Spark jest oparty na RDD i działa tylko na ładunkach opartych na danych.

Wniosek:

zapalenie, iskrowym oba rozwiązania przetwarzania w pamięci, ale ponieważ są skierowane do różnych zastosowań.

W wielu przypadkach są one wykorzystywane w celu osiągnięcia lepszych wyników:

Ignite może dostarczyć pamięci współdzielonej, więc państwo może być przekazywana z jednej aplikacji iskra lub zadania do drugiego.

Ignite może dostarczyć SQL z indeksowaniem tak Spark SQL może być przyspieszone przez 1,000x (iskra nie Indeks dane)

Podczas pracy z plikami zamiast RDD, Apache Ignite w pamięci File System (IGF) może również współdzielić stan między zadaniami i aplikacjami Spark.

+0

Dziękuję za odpowiedź. Wciąż trochę zdezorientowany. Oprócz "siatki danych" apache ignite oferuje także "sieć obliczeniową", która wygląda podobnie do szkieletu obliczeniowego klastra. Jeśli już korzystałem z apache ignite jako pamięci dla moich danych, czy naprawdę potrzebuję iskry do przetwarzania w czasie rzeczywistym? – Normal

+2

Ignite jest bardziej odpowiedni do budowy rozwiązania OLTP (Online Transaction Processing), a mniej do Online Analytical Processing (OLAP) .Spark jest lepszy w przypadku analiz, w których Ignite byłby lepszy do zarządzania danymi i zapytaniami. –

2

Mimo że Apache Spark i Apache Ignite wykorzystują moc obliczeń w pamięci, adresują różne przypadki użycia. Sparuje procesy, ale nie przechowuje danych. Ładuje dane, przetwarza je, a następnie odrzuca. Z kolei Ignite może służyć do przetwarzania danych, a także zapewnia rozproszony magazyn klucz-wartość w pamięci z transakcjami zgodnymi z ACID i obsługą SQL. Spark jest również dla nietransakcyjnych danych tylko do odczytu, a Ignite obsługuje obciążenia nietransakcyjne i transakcyjne. Wreszcie, Apache Ignite obsługuje także ładunki obliczeniowe wyłącznie w przypadkach użycia HPC i MPP, podczas gdy Spark działa tylko na ładunkach opartych na danych.

Spark and Ignite mogą bardzo dobrze się uzupełniać. Ignite może udostępniać współdzieloną pamięć dla Sparka, więc stan można przekazywać z jednej aplikacji lub zadania Spark do drugiej. Ignite może również służyć do zapewnienia rozproszonego SQL z indeksowaniem, które przyspiesza Spark SQL nawet o 1000x.

Nikita Iwanow: http://www.odbms.org/blog/2017/06/on-apache-ignite-apache-spark-and-mysql-interview-with-nikita-ivanov/

-2

Chociaż zarówno Spark Apache Apache Ignite wykorzystać moc w pamięci komputerów, adres one nieco różne przypadki użycia i rzadko „konkurować” z tego samego zadania. Niektóre różnice koncepcyjne:

Spark doesn’t store data, it loads data for processing from other storages, usually disk-based, and then discards the data when the processing is finished. Ignite, on the other hand, provides a distributed in-memory key-value store (distributed cache or data grid) with ACID transactions and SQL querying capabilities. 
Spark is for non-transactional, read-only data (RDDs don’t support in-place mutation), while Ignite supports both non-transactional (OLAP) payloads as well as fully ACID compliant transactions (OLTP) 
Ignite fully supports pure computational payloads (HPC/MPP) that can be “dataless”. Spark is based on RDDs and works only on data-driven payloads.