GNU/Linux >> Znalost Linux >  >> Ubuntu

Apache Storm vs. Spark:Srovnání vedle sebe

Úvod

Apache Storm a Spark jsou platformy pro zpracování velkých dat, které pracují s datovými toky v reálném čase. Základní rozdíl mezi těmito dvěma technologiemi je ve způsobu zpracování dat. Storm paralelizuje výpočty úloh, zatímco Spark paralelizuje výpočty dat. Mezi rozhraními API však existují další základní rozdíly.

Tento článek poskytuje podrobné srovnání Apache Storm vs. Spark Streaming.

Storm vs. Spark:Definice

Apache Storm je rámec pro zpracování streamů v reálném čase. Trident abstrakční vrstva poskytuje Stormu alternativní rozhraní a přidává analytické operace v reálném čase.

Na druhou stranu Apache Spark je obecný analytický rámec pro rozsáhlá data. Spark Streaming API je k dispozici pro streamování dat téměř v reálném čase spolu s dalšími analytickými nástroji v rámci.

Storm vs. Spark:Srovnání

Storm i Spark jsou volně použitelné a open-source projekty Apache s podobným záměrem. Níže uvedená tabulka nastiňuje hlavní rozdíl mezi těmito dvěma technologiemi:

Bouř Spark
Programovací jazyky Vícejazyčná integrace Podpora pro Python, R, Java, Scala
Model zpracování Zpracování streamu s mikrodávkováním dostupným prostřednictvím Trident Dávkové zpracování s mikrodávkováním dostupné prostřednictvím streamování
Primitiva Tuple stream
Tuple várka
Oddíl
DSstream
Spolehlivost Přesně jednou (Trident)
Alespoň jednou
Maximálně jednou
Přesně jednou
Tolerance chyb Automatické restartování procesem supervizora Restartování pracovníka prostřednictvím správců zdrojů
Správa státu Podporováno prostřednictvím Trident Podporováno prostřednictvím streamování
Snadné použití Těžší provoz a nasazení Snazší správa a nasazení

Programovací jazyky

Dostupnost integrace s jinými programovacími jazyky je jedním z hlavních faktorů při výběru mezi Storm a Spark a jedním z klíčových rozdílů mezi těmito dvěma technologiemi.

Bouř

Storm má více jazyků Díky tomu je dostupný prakticky pro jakýkoli programovací jazyk. Trident API pro streamování a zpracování je kompatibilní s:

  • Java
  • Clojure
  • Scala

Spark

Spark poskytuje rozhraní API pro streamování na vysoké úrovni pro následující jazyky:

  • Java
  • Scala
  • Python

Některé pokročilé funkce, jako je streamování z vlastních zdrojů, nejsou pro Python dostupné. Streamování z pokročilých externích zdrojů, jako je Kafka nebo Kinesis, je však dostupné pro všechny tři jazyky.

Model zpracování

Model zpracování definuje, jak je streamování dat aktualizováno. Informace jsou zpracovávány jedním z následujících způsobů:

  • Jeden záznam po druhém.
  • V diskretizovaných dávkách.

Bouř

Model zpracování jádra Storm funguje přímo na n-ticových proudech, jeden záznam po druhém , což z něj dělá správnou technologii streamování v reálném čase. Trident API přidává možnost používat mikrodávky .

Spark

Model zpracování Spark rozděluje data do dávek , seskupování záznamů před dalším zpracováním. Spark Streaming API poskytuje možnost rozdělit data do mikrodávek .

Primitiva

Primitiva představují základní stavební kameny obou technologií a způsob, jakým se transformační operace provádějí na datech.

Bouř

Core Storm funguje na několika streamech , zatímco Trident pracuje na násobku dávek a oddíly . Trident API funguje na kolekcích podobným způsobem srovnatelným s abstrakcemi na vysoké úrovni pro Hadoop. Hlavní primitivové Stormu jsou:

  • Výtok které generují stream v reálném čase ze zdroje.
  • Šrouby které provádějí zpracování dat a uchovávají perzistenci.

V topologii Trident se operace seskupují do šroubů. Seskupit podle, spojení, agregace, spouštěcí funkce a filtry jsou k dispozici v izolovaných dávkách a napříč různými kolekcemi. Agregace trvale ukládá v paměti podporovanou HDFS nebo v nějakém jiném obchodě, jako je Cassandra.

Spark

Díky Spark Streaming se nepřetržitý tok dat rozdělí na diskretizované toky (DStreams), sekvence Odolných distribuovaných databází (RDD).

Spark umožňuje dva obecné typy operátorů na primitivech:

1. Operátory transformace streamu kde se jeden DSstream transformuje na jiný DSstream.

2. Operátory výstupu pomáhá zapisovat informace do externích systémů.

Spolehlivost

Spolehlivost se týká zajištění doručení dat. Jsou tři možné záruky při řešení spolehlivosti datového toku:

  • Alespoň jednou . Data se doručují jednou, přičemž je možné i více doručení.
  • Maximálně jednou . Data se doručují pouze jednou a všechny duplikáty zaniknou. Existuje možnost, že data nedorazí.
  • Přesně jednou . Data se doručují jednou, bez jakýchkoli ztrát nebo duplicit. Možnost záruky je optimální pro streamování dat, i když je obtížné ji dosáhnout.

Bouř

Storm je flexibilní, pokud jde o spolehlivost streamování dat. V jádru alespoň jednou a nejvýše jednou možnosti jsou možné. Společně s Trident API jsou k dispozici všechny tři konfigurace .

Spark

Spark se snaží zvolit optimální trasu tím, že se zaměří na přesně-jednou konfigurace streamování dat. Pokud pracovník nebo řidič selže, alespoň jednou platí sémantika.

Tolerance chyb

Tolerance chyb definuje chování streamovacích technologií v případě selhání. Spark i Storm jsou odolné vůči chybám na podobné úrovni.

Spark

V případě selhání pracovníka Spark restartuje pracovníky prostřednictvím správce zdrojů, jako je YARN. Selhání ovladače používá k obnově kontrolní bod dat.

Bouř

Pokud proces ve Storm nebo Trident selže, dohlížející proces se o restart postará automaticky. ZooKeeper hraje klíčovou roli při obnově a správě státu.

Správa státu

Spark Streaming i Storm Trident mají vestavěné technologie správy stavu. Sledování stavů pomáhá dosáhnout odolnosti proti chybám a také záruky přesně na jedno doručení.

Snadné použití a vývoj

Snadné použití a vývoj závisí na tom, jak dobře je technologie zdokumentována a jak snadné je provozovat streamy.

Spark

Spark se snadněji nasazuje a vyvíjí z těchto dvou technologií. Streamování je dobře zdokumentováno a nasazuje se na clustery Spark. Streamové úlohy jsou zaměnitelné s dávkovými úlohami.

Bouř

Storm je trochu složitější na konfiguraci a vývoj, protože obsahuje závislost na clusteru ZooKeeper. Výhoda při používání Storm je způsobena vícejazyčnou funkcí.

Storm vs. Spark:Jak si vybrat?

Volba mezi Storm a Spark závisí na projektu a dostupných technologiích. Jedním z hlavních faktorů je programovací jazyk a záruky spolehlivosti doručování dat.

I když existují rozdíly mezi streamováním a zpracováním dat, nejlepší cestou je otestovat obě technologie, abyste zjistili, co vám nejlépe vyhovuje, a jaký datový tok máte po ruce.


Ubuntu
  1. PostgreSQL vs MySQL:Podrobné srovnání

  2. Nainstalujte a nakonfigurujte Apache Spark na Ubuntu 20.04

  3. Restartujte Apache

  1. Hadoop vs Spark – podrobné srovnání

  2. Apache vs Nginx - podrobné srovnání

  3. Jak nainstalovat Apache Spark na Windows 10

  1. Jak nainstalovat Apache Spark Cluster Computing Framework na Debian 10

  2. Jak nainstalovat Apache Spark na Ubuntu 20.04

  3. Jak nainstalovat Apache Spark na Debian 11