Spark na cluster chytře

Apache Spark je open-source distribuovaný univerzální framework určený k provádění výpočtů na úrovni clusteru. Největší výhodou je právě možnost paralelizace na vysoké úrovni a dostupnosti v tzv. módu „High Availability“ (HA), neboli vysoká dostupnost. Díky těmto vlastnostem je Apache Spark naprosto ideální pro nasazení v prostředí pro zpracování velkého množství dat bez možnosti výpadku. Vysoké množství úloh lze spravovat současně na jedné platformě s minimálním úsilím právě díky centralizaci všech výpočetních úkonů či nástrojů v Apache Spark.

Apache Spark pracuje tzv. „in-memory“, neboli v paměti. Díky tomu mohou aplikace pracovat s daty až 100x rychleji, a to zmenšením množství operací čtení a zápisu na disk. Další výhodou je možnost využití více programovacích jazyků. Apache Spark umí nativně pracovat s jazyky Java, Scala anebo Python. Zároveň lze využít analytické možnosti Apache Spark, jedná se o SQL dotazy, Machine Learning, Stream Data a práci s nástroji a algoritmy grafických nástrojů.

Spark a jeho účel

Spark je schopen zpracovat několik petabajtů dat najednou, distribuovaných do shluku tisíců spolupracujících fyzických nebo virtuálních serverů. Má rozsáhlou sadu vývojových knihoven a API a podporuje jazyky jako Java, Python, R a Scala. Díky své flexibilitě se dobře hodí pro řadu případů použití. Spark se často používá u distribuovaných datových uložišť, jako jsou MapR XD, Hadoop HDFS a Amazon S3, s populárními databázemi NoSQL, jako je Vertica, MapR Database, Apache HBase, Apache Cassandra a MongoDB, a s distribuovanými streamovacími platformami pro zasílání zpráv, jako je MapR Event Store a Apache Kafka.

Zpracování datových toků: Od souborů protokolu k datům senzorů se vývojáři aplikací stále více potýkají s „datovými proudy“ dat. Tato data přicházejí ve stálém proudu, často z více zdrojů současně. I když je jistě možné tyto datové toky ukládat na disk a analyzovat je zpětně, někdy může být rozumné nebo důležité zpracovávat a jednat s daty, jakmile dorazí. Například toky dat vztahující se k finančním transakcím mohou být zpracovány v reálném čase pro identifikaci – a odmítnutí – potenciálně podvodných transakcí.

Strojové učení: S rostoucím objemem dat se přístupy strojového učení (Machine Learning) stávají reálnějšími a stále přesnějšími. Software může být vyškolen tak, aby identifikoval a jednal dle eventů v dobře srozumitelných souborech dat a působil před použitím stejných řešení na nová a neznámá data. Schopnost Sparku ukládat data do paměti a rychle spouštět opakované dotazy z něj činí dobrou volbu pro tréninkové algoritmy strojového učení. Spouštění podobných dotazů znovu a znovu v distribuovaném prostředí významně zkracuje čas potřebný k procházení sadou možných řešení za účelem nalezení nejúčinnějších algoritmů.

Interaktivní analytika: Obchodní analytici a vědci s údaji chtějí spíš než předdefinované dotazy vytvářet statické řídicí panely produktivity prodejních nebo výrobních linek nebo cen akcií, zkoumat svá data položením otázky, prohlížením výsledku a následným změněním počáteční otázky nebo hlouběji analyzovat výsledky. Tento proces interaktivního dotazování vyžaduje systémy, jako je Spark, které jsou schopné rychle reagovat a přizpůsobit se.

Integrace dat: Data vytvářená různými systémy v rámci podniku jsou zřídka čistá nebo konzistentní natolik, že je lze snadno a lehce kombinovat pro reporting nebo analýzu. Procesy extrakce, transformace a načtení (ETL) se často používají k získávání dat z různých systémů, k jejich čištění a standardizaci a poté k načtení do samostatného systému pro analýzu. Spark (a Hadoop) se stále více používají ke snižování nákladů a času potřebného pro tento proces ETL.