2016-03-16 17 views
18

Attualmente sto studiando la struttura di apache spark e apache ignite. Alcune differenze principali tra di loro sono descritte in questo articolo ignite vs spark Ma mi sono reso conto che ancora non capisco i loro scopi. Intendo per quali problemi scintilla di più preferibile di accendere e viceversa?Apache Spark vs Apache Ignite

+2

Il [Ignite proposta] (https://wiki.apache.org/incubator/IgniteProposal) offre una buona panoramica di esso vs Spark e Hadoop. –

risposta

23

Direi che Spark è un buon prodotto per l'analisi interattiva, mentre Ignite è migliore per l'analisi in tempo reale e l'elaborazione transazionale ad alte prestazioni. Ignite raggiunge questo obiettivo fornendo un'archiviazione dei valori-chiave in-memory efficiente e scalabile, oltre a funzionalità avanzate per l'indicizzazione, l'interrogazione dei dati e l'esecuzione dei calcoli.

Un altro uso comune di Ignite è il caching distribuito, che viene spesso utilizzato per migliorare le prestazioni delle applicazioni che interagiscono con i database relazionali o qualsiasi altra origine dati.

+5

Grazie per la spiegazione, tuttavia qual è la differenza tra l'analisi interattiva e l'analisi in tempo reale? – mfudi

+0

Mi sono imbattuto nella domanda e anch'io sono interessato a questa domanda. Penso che l'analisi interattiva spesso significhi analizzare su dati stabili molte volte portando i dati in memoria (quindi la scintilla è molto adatta all'apprendimento automatico). analisi in tempo reale significa dati intercambiabili in tempo reale che penso che Ignite sia più adatto in base alla sua cache. @ Valentin, come pensi? – Tom

+2

Bene, probabilmente OLAP e OLTP sono termini più corretti qui. Il primo implica l'esecuzione di query relativamente rari, di grandi dimensioni e per lo più di sola lettura, mentre nel secondo vi è un elevato throughput di query più piccole. Ignite è stato inizialmente progettato per OLTP, ma attualmente si occupa anche di OLAP. –

12

Apache Ignite è una piattaforma in-memory ad alte prestazioni, integrata e distribuita per l'elaborazione e la trasmissione su set di dati su larga scala in tempo reale. Ignix è una piattaforma agnostica di origine dati e può distribuire e memorizzare i dati tra più server nella RAM per offrire una velocità di elaborazione senza precedenti e una massiccia scalabilità delle applicazioni.

Apache Spark (quadro di calcolo cluster) è una, in-memory veloce motore di elaborazione dei dati con le API di sviluppo espressivi per consentire ai lavoratori di dati per eseguire in modo efficiente lo streaming, l'apprendimento automatico o carichi di lavoro di SQL che richiedono un veloce accesso iterativo a set di dati. Consentendo ai programmi utente di caricare i dati nella memoria di un cluster e interrogarli ripetutamente, Spark è adatto per algoritmi di calcolo e apprendimento macchina ad alte prestazioni.

Alcune differenze concettuali:

Spark non memorizza dati, carica i dati per l'elaborazione da altri depositi, generalmente basato su disco, e quindi scarta i dati quando il trattamento è terminato. Ignite, d'altra parte, fornisce un archivio di valori-chiave distribuiti in memoria (cache distribuita o griglia di dati) con transazioni ACID e funzionalità di query SQL.

Spark è per non transazionale, di sola lettura dei dati (RDDs non supportano la mutazione sul posto), mentre Ignite supporta sia carichi utili non transazionali (OLAP), così come le transazioni conformi pienamente ACID (OLTP)

Ignite supporta completamente payload computazionali puri (HPC/MPP) che possono essere "dataless". Spark è basato su RDD e funziona solo su payload basati sui dati.

Conclusione:

Ignite e Spark sono entrambi soluzioni di elaborazione in memoria, ma hanno come bersaglio diversi casi d'uso.

In molti casi, vengono utilizzati insieme per raggiungere risultati migliori:

Ignite può fornire storage condiviso, quindi lo stato possono essere passati dall'applicazione una scintilla o lavoro all'altro.

Ignite può fornire SQL con indicizzazione in modo Spark SQL può essere accelerato nel corso 1,000x (scintilla non indicizza i dati)

Quando si lavora con i file invece di RDDs, Apache Ignite In-Memory File System (IGFS) può anche condividere lo stato tra i lavori Spark e le applicazioni

+0

Grazie per la risposta. Sono ancora un po 'confuso. Oltre alla "griglia di dati", apache ignite offre anche una "griglia di calcolo" che sembra molto simile al framework di calcolo del cluster. Se ho già utilizzato apache come memoria per i miei dati, ho davvero bisogno di una scintilla per l'elaborazione in tempo reale? – Normal

+2

Ignite è più adatto per la creazione di una soluzione OLTP (Online Transaction Processing) e meno per OLAP (Online Analytical Processing) .Spark è migliore per le analisi in cui Ignite potrebbe essere meglio servito per la gestione e la query dei dati. –

2

Sebbene Apache Spark e Apache Ignite utilizzino la potenza del calcolo in memoria, si rivolgono a diversi casi d'uso. Spark elabora ma non memorizza i dati. Carica i dati, li elabora, quindi li elimina. Ignite, d'altra parte, può essere utilizzato per elaborare i dati e fornisce anche un archivio di valori chiave distribuito in memoria con transazioni conformi a ACID e supporto SQL. Spark è anche per dati non transazionali e di sola lettura mentre Ignite supporta carichi di lavoro non transazionali e transazionali. Infine, Apache Ignite supporta anche payload puramente computazionali per casi di utilizzo di HPC e MPP mentre Spark funziona solo su payload basati sui dati.

Spark e Ignite possono completarsi molto bene. Ignite può fornire storage condiviso per Spark in modo che lo stato possa essere passato da un'applicazione Spark o da un lavoro a un altro. Ignite può anche essere utilizzato per fornire SQL distribuito con indicizzazione che accelera Spark SQL fino a 1.000 volte.

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

-2

Sebbene sia Spark Apache e Apache Ignite utilizzano la potenza di calcolo in memoria, si rivolgono un po 'diverse casi d'uso e raramente “competere” per lo stesso compito. Alcune differenze concettuali:

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.