Architektura velkých objemů dat je navržená tak, aby umožňovala příjem, zpracování a analýzu dat, která jsou pro tradiční databázové systémy příliš rozsáhlá nebo složitá.
Řešení pro velká data obvykle zahrnují jeden nebo více z následujících typů úloh:
- Dávkové zpracování zdrojů velkých objemů dat v klidovém stavu.
- Zpracování velkých objemů dat v reálném čase za provozu.
- Interaktivní zkoumání velkých objemů dat.
- Prediktivní analýza a strojové učení.
Většina architektur s velkými objemy dat zahrnuje některé nebo všechny z následujících součástí:
Zdroje dat: Všechna řešení pro velké objemy dat začínají s jedním nebo více zdroji dat. Příkladem může být:
- Úložiště dat aplikací, například relační databáze.
- Statické soubory vytvořené aplikacemi, například soubory protokolu webového serveru.
- Zdroje dat v reálném čase, například zařízení IoT.
Úložiště dat: Data pro operace dávkového zpracování jsou obvykle uložená v distribuovaném úložišti souborů, které může obsahovat velké objemy rozsáhlých souborů v různých formátech. Tomuto druhu úložiště se často říká data lake. Mezi možnosti implementace tohoto úložiště patří služba Azure Data Lake Store nebo kontejnery objektů blob ve službě Azure Storage.
Dávkové zpracování: Jelikož jsou sady dat velmi velké, řešení pro velké objemy dat musí často zpracovávat datové soubory pomocí dlouhotrvajících dávkových úloh filtrování, agregace a další přípravy dat pro analýzu. Tyto úlohy obvykle zahrnují čtení zdrojových souborů, jejich zpracování a zápis výstupu do nových souborů. Mezi možnosti patří spouštění úloh U-SQL ve službě Azure Data Lake Analytics, použití Hive, Pig nebo vlastních úloh mapování/zmenšování v clusteru HDInsight Hadoop, případně použití programů v jazycích Java, Python nebo Scala v clusteru HDInsight Spark.
Přijímání zpráv v reálném čase: Pokud řešení obsahuje zdroje v reálném čase, architektura musí obsahovat způsob, jak zprávy v reálném čase zachycovat a ukládat pro zpracování streamů. Může se jednat o jednoduché úložiště dat, ve kterém se příchozí zprávy zařazují do složky ke zpracování. Mnoho řešení však potřebuje úložiště pro příjem zpráv, které by mělo funkci vyrovnávací paměti pro zprávy a podporovalo zpracování škálování na více instancí, spolehlivé doručování a další sémantiku řízení front zpráv. Mezi možnosti patří Azure Event Hubs, Azure IoT Hubs a Kafka.
Zpracování streamů: Po zachycení zpráv v reálném čase je řešení musí zpracovat provedením filtrování, agregace a další přípravy dat pro analýzu. Zpracovaná data streamu se poté zapíšou do výstupní jímky. Azure Stream Analytics poskytuje spravovanou službu zpracování streamů založenou na soustavném zadávání dotazů SQL, které pracují se streamy bez vazby. Můžete také použít opensourcové technologie streamování Apache, jako je Streamování Sparku v clusteru HDInsight.
Úložiště analytických dat: Mnoho řešení pro velké objemy dat připravuje data pro analýzu a pak zpracovaná data předává ve strukturovaném formátu, na který je možné zadávat dotazy pomocí analytických nástrojů. Úložištěm analytických dat používaným k předávání těchto dotazů může být datový sklad relačních dat typu Kimball, jak je vidět ve většině tradičních řešení business intelligence. Alternativně se data můžou předávat prostřednictvím technologie NoSQL s nízkou latencí, jako je například HBase, nebo přes interaktivní databázi Hive, která poskytuje abstrakci metadat pro datové soubory v distribuovaném úložišti dat. Azure Synapse Analytics nabízí spravované služby pro rozsáhlé datové sklady cloudového typu. HDInsight podporuje technologie Interactive Hive, HBase a Spark SQL, které je možné použít i pro předávání dat k analýze.
Analýza a vytváření sestav: Cílem většiny řešení pro velké objemy dat je poskytnout přehled o datech prostřednictvím analýzy a vytváření sestav. Architektura může obsahovat vrstvu modelování dat, například krychli v multidimenzionálním režimu OLAP nebo tabulkový datový model v Azure Analysis Services, aby uživatelům umožnila analýzu dat. Může podporovat i samoobslužné funkce business intelligence s použitím technologií modelování a vizualizace v Microsoft Power BI nebo Microsoft Excelu. Analýza a vytváření sestav může mít také podobu interaktivního zkoumání dat odborníky přes data nebo datovými analytiky. V případě těchto scénářů mnoho služeb Azure podporuje analytické poznámkové bloky, například Jupyter, které těmto uživatelům umožňují využívat stávající znalosti Pythonu nebo R. Při zkoumání velkých objemů dat můžete použít Microsoft R Server buď samostatně, nebo se Sparkem.
Orchestrace: Většina řešení pro velké objemy dat sestává z operací opakovaného zpracování dat zapouzdřených v pracovních postupech, které transformují zdrojová data, přesouvají data mezi více zdroji a jímkami, načítají zpracovaná data do úložiště analytických dat nebo předávají výsledky přímo do sestavy nebo na řídicí panel. K automatizaci těchto pracovních postupů můžete použít technologii orchestrace, například Azure Data Factory nebo Apache Oozie a Sqoop.
Azure obsahuje mnoho služeb, které je možné používat v architektuře s velkými objemy dat. Zjednodušeně je lze rozdělit do dvou kategorií:
- Spravované služby, včetně Azure Data Lake Store, Azure Data Lake Analytics, Azure Synapse Analytics, Azure Stream Analytics, Azure Event Hubs, Azure IoT Hub a Azure Data Factory.
- Opensourcové technologie založené na platformě Apache Hadoop, včetně HDFS, HBase, Hive, Sparku, Oozie, Sqoopu a Kafka. Tyto technologie jsou k dispozici v Azure v rámci služby Azure HDInsight.
Tyto možnosti se navzájem nevylučují a mnoho řešení využívá kombinaci technologií s otevřeným zdrojovým kódem a služeb Azure.
Kdy použít tuto architekturu
Použití tohoto stylu architektury zvažte v následujících situacích:
- Ukládání a zpracování dat v objemech, které jsou pro tradiční databázi příliš velké.
- Transformace nestrukturovaných dat pro analýzu a vytváření sestav.
- Zachycování, zpracování a analýza streamů dat bez vazby v reálném čase nebo s nízkou latencí.
- Použijte Azure Machine Učení nebo Azure Cognitive Services.
Zaměstnanecké výhody
- Výběr technologií. Spravované služby Azure můžete kombinovat a párovat s technologiemi Apache v clusterech HDInsight, abyste vytěžili maximum ze stávajících dovedností nebo investic do technologií.
- Výkon díky paralelismu. Řešení pro velké objemy dat využívají paralelismus a umožňují použití vysoce výkonných řešení, která provádějí škálování na velké objemy dat.
- Elastické škálování. Všechny součásti v architektuře s velkými objemy dat podporují zřizování škálování na více instancí, takže své řešení můžete upravovat pro malé nebo velké úlohy a platit jen za prostředky, které využíváte.
- Interoperabilita se stávajícími řešeními. Komponenty architektury s velkými objemy dat se používají i pro zpracování IoT a podniková řešení business intelligence, což vám umožní vytvořit integrované řešení pro různé úlohy zpracování dat.
Problémy
- Složitost: Řešení pro velké objemy dat mohou být extrémně složitá, pokud mnoho součástí zpracovává příjem dat z několika zdrojů dat. Sestavování, testování a odstraňování problémů s procesy pro velké objemy dat může být náročné. Kromě toho může existovat velké množství nastavení mezi různými systémy, která je nutné použít k optimalizaci výkonu.
- Dovednosti. Mnohé z technologií pro velké objemy dat jsou vysoce specializované a používají struktury a jazyky, které pro obecnější architektury aplikace nejsou typické. Na druhé straně se v rámci technologií pro velké objemy dat vyvíjejí nová rozhraní API, která vycházejí z rozšířenějších jazyků. Jazyk U-SQL v Azure Data Lake Analytics je například založen na kombinaci jazyků Transact-SQL a C#. Podobně jsou pro Hive, HBase a Spark k dispozici rozhraní API založená na jazyku SQL.
- Vyspělost technologií. Mnohé z technologií používaných pro velké objemy dat se vyvíjejí. I když se základní technologie Hadoop, jako například Hive a Pig, stabilizovaly, s rozvíjejícími se technologiemi, jako je Spark, přicházejí rozsáhlé změny a vylepšení v každé nové verzi. Spravované služby, jako je například Azure Data Lake Analytics a Azure Data Factory, jsou ve srovnání s jinými službami Azure relativně mladé a pravděpodobně se budou dále vyvíjet.
- Zabezpečení. Řešení pro velké objemy dat jsou obvykle založená na ukládání všech statických dat do centralizovaného data lake. Zabezpečení přístupu k těmto datům může být náročné, zejména v případě, že data musí být přijímána a používána více aplikacemi a platformami.
Osvědčené postupy
Využití paralelismu. Většina technologií zpracování velkých objemů dat distribuuje úlohy mezi víc jednotek zpracování. Proto je třeba, aby se statické datové soubory vytvářely a ukládaly ve formátu umožňujícím rozdělení. Distribuované systémy souborů, jako je HDFS, můžou optimalizovat výkon při čtení a zápisech a vlastní zpracování se provádí ve více uzlech clusteru současně, což snižuje celkovou dobu zpracování úloh.
Dělení dat. Dávkové zpracování obvykle probíhá v opakujícím se plánu – například týdně nebo měsíčně. Datové soubory a datové struktury oddílů, jako jsou tabulky, jsou založené na časových obdobích, která odpovídají plánu zpracování. Tím se zjednodušuje přijímání dat a plánování úloh a usnadňuje se řešení problémů v případě selhání. Tabulky oddílu používané v Hive, U-SQL nebo dotazech SQL navíc můžou výrazně zvýšit výkon při zpracování dotazů.
Použití sémantiky schématu při čtení. Použití datového jezera umožňuje kombinovat úložiště pro soubory ve více formátech, ať už strukturované, částečně strukturované nebo nestrukturované. Můžete využívat sémantiku schéma při čtení, která projektuje schéma na data při zpracování dat, a ne při jejich ukládání. Řešení tím získává flexibilitu a brání se vzniku kritických bodů během přijímání dat v důsledku ověřování dat a kontroly typu.
Místní zpracování dat. Tradiční řešení business intelligence často používají k přesouvání dat do datového skladu proces extrakce, transformace a načítání (ETL). V případě větších objemů dat a více formátů obecně řešení pro velké objemy dat používají variace procesu ETL, například proces transformace, extrakce a načítání (TEL). Při tímto přístupu se data zpracují v distribuovaném úložišti dat a transformují se do požadované struktury, než se přesunou do úložiště analytických dat.
Vyrovnávání nákladů na využití a časových nákladů. V případě úloh dávkového zpracování je důležité vzít v úvahu dva faktory: náklady na jednotku výpočetních uzlů a náklady na minutu používání těchto uzlů během zpracování úlohy. Zpracování dávkové úlohy ve čtyřech uzlech clusteru může například trvat osm hodin. Může se však ukázat, že úloha využívá všechny čtyři uzly jen během prvních dvou hodin a pak už jsou potřebné jenom dva uzly. V takovém případě by se zpracováním celé úlohy ve dvou uzlech prodloužila celková doba zpracování úlohy, ale nezdvojnásobila by se, takže by celkové náklady byly nižší. V některých obchodních scénářích může být delší doba zpracování vhodnější než vyšší náklady na používání nevyužitých prostředků clusteru.
Samostatné prostředky clusteru. Při nasazování clusterů HDInsight je obvykle možné dosáhnout vyššího výkonu, pokud pro každý typ úloh zřídíte samostatné prostředky clusteru. Příklad: Clustery Spark sice zahrnují Hive, ale pokud potřebujete provádět rozsáhlé zpracování s použitím Hive i Sparku, měli byste zvážit nasazení samostatných vyhrazených clusterů Spark a Hadoop. Podobně platí, že pokud používáte HBase a Storm pro zpracování streamů s nízkou latencí a Hive pro dávkové zpracování, je vhodné zvážit samostatné clustery pro Storm, HBase a Hadoop.
Orchestrace přijímání dat. V některých případech mohou existující podnikové aplikace zapisovat datové soubory pro dávkové zpracování přímo do kontejnerů objektů blob úložiště Azure, kde mohou být využívány službou HDInsight nebo Azure Data Lake Analytics. Často je ale třeba provádět orchestraci příjmu dat z místních nebo externích zdrojů do data lake. Provedením pracovního postupu orchestrace nebo kanálu podporovaného například službou Azure Data Factory nebo Oozie toho můžete docílit předvídatelným a centrálně spravovatelným způsobem.
Procházení citlivých dat už v rané fázi. V rámci pracovního postupu příjmu dat by se citlivá data měla procházet už v rané fázi procesu, aby nedocházelo k jejich ukládání do data lake.
Architektura IoT
Internet věcí (IoT) je specializovaná podmnožina řešení pro velké objemy dat. Následující diagram znázorňuje možnou logickou architekturu pro IoT. Diagram zvýrazňuje komponenty streamování událostí v rámci architektury.
Cloudová brána ingestuje události zařízení na hranici cloudu pomocí spolehlivého systému zasílání zpráv s nízkou latencí.
Zařízení můžou odesílat události přímo do cloudové brány, nebo prostřednictvím hraniční brány. Hraniční brána je specializované zařízení nebo software, je obvykle umístěná společně se zařízeními, přijímá události a předává je cloudové bráně. Hraniční brána může také události předběžně zpracovávat a provádět funkce, jako je například filtrování, agregace nebo transformace protokolu.
Po ingestování události procházejí jedním nebo více procesory streamu, které můžou směrovat data (například do úložiště) nebo provádět analýzy a další zpracování.
Toto jsou některé běžné typy zpracování. (Tento seznam určitě není vyčerpávající.)
Zápis dat událostí do studeného úložiště pro archivaci nebo dávkovou analýzu
Analýza kritické cesty, analyzující stream událostí v (téměř) reálném čase, slouží k detekci anomálií, rozpoznávání vzorů v klouzavých časových oknech nebo aktivaci upozornění, pokud dojde ve streamu k určitým podmínkám
Zpracování speciálních typů zpráv bez telemetrie ze zařízení, jako jsou oznámení a výstrahy
Strojové učení
Pole, která jsou šedá, zobrazují komponenty systému IoT, které přímo nesouvisejí se streamováním událostí, ale jsou zde uvedené pro úplnost.
Registr zařízení je databáze obsahující zřízená zařízení včetně ID zařízení a obvykle metadat zařízení, jako je například umístění.
Rozhraní API zřizování je běžné externí rozhraní pro zřizování a registraci nových zařízení.
Některá řešení IoT umožňují posílat zařízením příkazy a řídicí zprávy.
Tato část obsahuje velmi široký pohled na IoT a existuje mnoho odlišností a problémů, které je potřeba vzít v úvahu. Podrobnější referenční architekturu a diskusi najdete v článku Referenční architektura IoT v systému Microsoft Azure (soubor PDF ke stažení).
Další kroky
- Přečtěte si další informace o architekturách velkých objemů dat.
- Přečtěte si další informace o návrhu architektury Internetu věcí (IoT).