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.
Spark se často používá u distribuovaných datových uložišť, jako jsou:
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í.
- MapR XD,
- Hadoop HDFS,
- Amazon S3,
- s populárními databázemi NoSQL, jako je Vertica,
- MapR Database,
- Apache HBase,
- Apache Cassandra,
- MongoDB,
- 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í,
- 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.