Apache Spark vs Apache Ignite (Programare, Apache Spark, Ignite)

Normal a intrebat.

În prezent, studiez cadrele Apache Spark și Apache Ignite.

Unele diferențe de principiu între ele sunt descrise în acest articol ignite vs spark Dar mi-am dat seama că încă nu le înțeleg scopurile.

Adică pentru ce probleme spark mai preferabil decât ignite și viceversa?

Comentarii

  • Site-ul Propunerea Ignite oferă o bună prezentare generală a acestuia față de Spark & Hadoop. –  > Por Michael Lloyd Lee mlk.
7 răspunsuri
Valentin Kulichenko

Aș spune că Spark este un produs bun pentru analiza interactivă, în timp ce Ignite este mai bun pentru analiza în timp real și procesarea tranzacțională de înaltă performanță. Ignite reușește acest lucru oferind o stocare eficientă și scalabilă în memorie a valorilor-cheie, precum și capacități bogate de indexare, interogare a datelor și de executare a calculelor.

O altă utilizare obișnuită pentru Ignite este cachingul distribuit, care este adesea utilizat pentru a îmbunătăți performanța aplicațiilor care interacționează cu baze de date relaționale sau cu orice alte surse de date.

Comentarii

  • Vă mulțumim pentru explicații, însă care este diferența dintre analiza interactivă și analiza în timp real ? –  > Por mfudi.
  • Ei bine, probabil că OLAP și OLTP sunt termeni mai corecți aici. Primul presupune rularea unor interogări relativ rare, de mari dimensiuni și în mare parte doar de citire, în timp ce în cel de-al doilea există un randament ridicat al interogărilor mai mici. Ignite a fost proiectat inițial pentru OLTP, dar în prezent se adresează și OLAP. –  > Por Valentin Kulichenko.
Nayan Sharma

Apache Ignite este o platformă in-memory de înaltă performanță, integrată și distribuită pentru calcul și tranzacții pe seturi de date de mari dimensiuni în timp real. Ignite este o platformă agnostică față de sursele de date și poate distribui și pune în cache datele pe mai multe servere în RAM pentru a oferi o viteză de procesare fără precedent și o scalabilitate masivă a aplicațiilor.

Apache Spark(cadru de calcul în cluster) este un motor rapid de procesare a datelor în memorie, cu API-uri de dezvoltare expresive, care permite lucrătorilor din domeniul datelor să execute în mod eficient sarcini de lucru de tip streaming, machine learning sau SQL care necesită acces rapid și iterativ la seturi de date. permițând programelor utilizatorilor să încarce date în memoria unui cluster și să le interogheze în mod repetat, Spark este foarte potrivit pentru calculul de înaltă performanță și pentru algoritmii de machine learning.

Câteva diferențe conceptuale:

Spark nu stochează date, ci încarcă datele pentru procesare din alte spații de stocare, de obicei de pe discuri, și apoi le aruncă atunci când procesarea este finalizată. Ignite, pe de altă parte, oferă un magazin distribuit de valori-cheie în memorie (cache distribuit sau grilă de date) cu tranzacții ACID și capacități de interogare SQL.

Spark este destinat datelor netranzacționale, numai pentru citire (RDD-urile nu acceptă mutații pe loc), în timp ce Ignite acceptă atât sarcini utile netranzacționale (OLAP), cât și tranzacții complet conforme cu ACID (OLTP).

Ignite acceptă pe deplin sarcini utile pur computaționale (HPC/MPP) care pot fi „fără date”. Spark se bazează pe RDD-uri și funcționează numai pe sarcini utile bazate pe date.

Concluzie:

Ignite și Spark sunt ambele soluții de calcul în memorie, dar vizează cazuri de utilizare diferite.

În multe cazuri, ele sunt utilizate împreună pentru a obține rezultate superioare:

Ignite poate oferi stocare partajată, astfel încât starea poate fi transmisă de la o aplicație Spark sau de la un job la altul.

Ignite poate oferi SQL cu indexare, astfel încât Spark SQL poate fi accelerat de peste 1.000 de ori (Spark nu indexează datele)

Atunci când se lucrează cu fișiere în loc de RDD-uri, Apache Ignite In-Memory File System (IGFS) poate, de asemenea, să partajeze starea între aplicațiile și sarcinile Spark

Comentarii

  • Ignite este mai potrivit pentru construirea unei soluții de procesare a tranzacțiilor online (OLTP) și mai puțin pentru procesarea analitică online (OLAP). Spark este mai potrivit pentru analiză, în timp ce Ignite ar fi mai potrivit pentru gestionarea datelor și interogare. –  > Por Nayan Sharma.
mrsrinivas

Spark și Ignite funcționează împreună?

Da, Spark și Ignite funcționează împreună.

Pe scurt

Ignite vs. Spark

Ignite este o bază de date distribuită în memorie mai mult axată pe stocarea datelor și se ocupă de actualizările transnaționale ale datelor, apoi servește cererile clienților. Apache Spark este un motor de calcul MPP care este mai mult înclinat către sarcini utile specifice de analiză, ML, Graph și ETL.


În detaliu

Apache Spark este un OLAP tool

Apache Spark este un sistem de calcul cluster de uz general. Este un motor optimizat care suportă grafice de execuție generale. De asemenea, suportă un set bogat de instrumente de nivel superior, inclusiv Spark SQL pentru SQL și procesarea datelor structurate, MLlib pentru învățare automată, GraphX pentru procesarea grafurilor și Spark Streaming.

Spark cu alte componente

Topologie de implementare

Tipologia Spark pe YARN este discutată aici.


Apache Ignite este o OLTP instrument

Ignite este un instrument centrat pe memorie bază de date distribuită, cu memorie cache, și platformă de procesare pentru sarcini de lucru transnaționale, analitice și de streaming, care oferă viteze în memorie la scară de petabyte. Ignite include, de asemenea, suport de prim nivel pentru gestionarea și operarea clusterului, mesagerie conștientă de cluster și tehnologii de implementare zero. De asemenea, Ignite oferă suport pentru tranzacții ACID complete care se întinde pe memorie și pe surse de date opționale.

Prezentare generală SQL

Topologie de implementare

Mani Gandham

Apache Spark este un cadru de procesare. Îi spuneți de unde să obțină date, îi furnizați un cod despre cum să proceseze acele date și apoi îi spuneți unde să pună rezultatele. Este o modalitate de a rula cu ușurință și în mod fiabil o logică de calcul în mai multe noduri dintr-un cluster pe date din orice sursă (care sunt apoi păstrate în memorie în timpul procesării). Este destinat în primul rând analizei pe scară largă a datelor provenite din diverse surse (chiar și din mai multe baze de date simultan) sau din surse de streaming precum Kafka. De asemenea, poate fi utilizat pentru ETL, cum ar fi transformarea și îmbinarea datelor înainte de a pune rezultatele finale într-un alt sistem de baze de date.

Apache Ignite este mai degrabă o bază de date distribuită în memorie, cel puțin așa a început. Are un API de tip cheie/valoare și SQL, astfel încât puteți stoca și citi datele în diverse moduri și puteți rula interogări ca în orice altă bază de date SQL. De asemenea, suportă rularea propriului cod (similar cu Spark), astfel încât să puteți efectua prelucrări care nu ar funcționa cu adevărat cu SQL, în timp ce citiți și scrieți datele, toate în același sistem. De asemenea, poate citi/scrie date în alte sisteme de baze de date, acționând în același timp ca un strat de cache la mijloc. În cele din urmă, începând cu 2018, suportă și stocarea pe disc, astfel încât acum îl puteți utiliza ca un cadru de bază de date, cache și procesare distribuită all-in-one.


Apache Spark este în continuare mai bun pentru analize mai complexe și puteți face ca Spark să citească date din Apache Ignite, dar pentru multe scenarii este acum posibil să consolidați procesarea și stocarea într-un singur sistem cu Apache Ignite.

Siva Kumar

Deși Apache Spark și Apache Ignite utilizează puterea calculului în memorie, ele se adresează unor cazuri de utilizare diferite. Spark procesează, dar nu stochează date. Încarcă datele, le procesează, apoi le aruncă. Ignite, pe de altă parte, poate fi folosit pentru a procesa date și oferă, de asemenea, un magazin distribuit de valori-cheie în memorie cu tranzacții conforme cu ACID și suport SQL. Spark este, de asemenea, pentru date netranzacționale, doar de citire, în timp ce Ignite suportă sarcini de lucru netranzacționale și tranzacționale. În cele din urmă, Apache Ignite suportă, de asemenea, sarcini utile pur computaționale pentru cazurile de utilizare HPC și MPP, în timp ce Spark funcționează numai pe sarcini utile bazate pe date.

Spark și Ignite se pot completa reciproc foarte bine. Ignite poate oferi stocare partajată pentru Spark, astfel încât starea să poată fi transmisă de la o aplicație Spark sau de la o sarcină de lucru la alta. De asemenea, Ignite poate fi utilizat pentru a furniza SQL distribuit cu indexare care accelerează Spark SQL de până la 1.000 de ori.

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

Daneshkhan

Deși atât Apache Spark, cât și Apache Ignite utilizează puterea calculului în memorie, ele se adresează unor cazuri de utilizare oarecum diferite și rareori „concurează” pentru aceeași sarcină. Câteva diferențe conceptuale:

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.

GPopat

Am întârziat să răspund la această întrebare, dar permiteți-mi să încerc să vă împărtășesc punctul meu de vedere în această privință.

Este posibil ca Ignite să nu fie pregătit pentru a fi utilizat în producție pentru aplicații de întreprindere, deoarece unele caracteristici importante, cum ar fi securitatea, sunt disponibile numai în Gridgain (înveliș peste Ignite).

Lista completă a caracteristicilor poate fi găsită la link-ul de mai jos

https://www.gridgain.com/products/gridgain-vs-ignite