Úvod do Big Data v Azure

Data jsou fascinující. Dnes se chci zaměřit na situace, kdy je dat tolik, že se s nimi tradičními postupy nedá dělat nic užitečného (tak si definuji Big Data). Konkrétně dnes nesměřuji k těm "předžvíkávaným" ve formě datawarehouse s konkrétním schématem, ale k těm opravdu divokým. Jak uložit a analyzovat jakákoli data v Azure? Jak se dostat z infrastruktury přes platformu až do Big Data jako služba?

Data vs. Big Data

Představte si deset tisíc zákazníků. Jeden přijde do obchodu, představí se a vám by se teď hodilo se podívat, na jeho předchozí objednávky. Pokud je rok 1950, znamenalo by to, jít někam dozadu a tam se začít přehrabovat ve fakturách několik hodin - zákazník by mezitím odešel. Ani zaměstnáním několika vyhledávačů faktur nedostanete škálu co potřebujete. Běžnými prostředky nejste schopni z dat dostat to, co potřebuje váš byznys, protože jich je moc. Máte Big Data problém tak, jak si ho rád definuji já. V roce 2017 je ale taková situace spíše problém "normálních dat", který se snadno vyřeší SQL dotazem do Azure SQL databáze. Potřebujete pracovat se strukturovanými (například transakčními) daty? Použijte Azure SQL. Potřebujete větší flexibilitu ve formátu, volnější schéma, tedy schopnost uložit i políčka, o kterých zatím nevíte, že budou potřeba? Použijte Azure DocumentDB. Jsou ta data střeštěná, třeba obrázek, dokument nebo video? Dejte je do Azure Blob Storage a prohledávejte třeba s Azure Search. Jenže - pokud vám to funkčně, kapacitně nebo rychlostně nestačí, možná máte Big Data problém.

Big Data vs. Datawarehouse

Vraťme se k našemu obchodníkovi. Daří se mu, počet zákazníků a objednávek roste, byznys funguje dlouho a dobře (má už hlubokou historii). Své Azure SQL Database dáváme různé analytické dotazy (počítá nám součty, průměry za různá zboží, koreluje údaje o zákaznících, měsících, cenách apod.) a odpovědi (masivní násobné JOIN operace) trvají stále déle a déle. V nějaký okamžik už je to neúnosné. V našich dotazech je ale něco důležitého - struktura. Víme které oblasti dat nás obvykle zajímají a jsme tedy schopni vzít svoje relační obchodní záznamy a "předchroupat" je do stavu, který se netrápí se svou schopností rychlosti zápisu transakcí, ale zaměřuje se právě na analytické dotazy. To je OLAP, datawarehouse. Kategorie velkých dat, kdy tušíme, na co se v budoucnu budeme chtít ptát.

To co jsou pro mě ta "pravověrná" Big Data jsou situace, kdy mám vstupní zdroje v mnoha různých formátech a strukturách (nebo zcela bez struktur). Moc nevím, co v těch datech vlastně vězí a co budu v budoucnu potřebovat. Pokud bych je teď vzal a pokusil se okrájet do nějaké datové kostky, půjde to dost špatně a těch odřezků bude strašlivě moc (ztrácím data, která třeba jednou budu potřebovat). Rád bych tedy uložil cokoli - triliony souborů, neomezené velikosti souborů (klidně několik PB), neomezený prostor v hierarchicky uložené struktuře. Rád bych analyzoval cokoli - nestrukturovaný text, logy, JSON dokumenty nebo třeba obrázky. To jsou Big Data.

Jak uložit Big Data v Azure

Typická velká data jsou soubory v různých formátech, takže se zdá, že Azure Blob Storage je ideální kandidát. Pokud chcete uložit téměř cokoli a nemáte zatím potřebu to nějak výrazněji analyzovat, je to perfektní a hlavně nejlevnější řešení. Omezení velikosti souborů nebo celkové kapacity v jednom prostoru (storage accountu) je dnes pro běžné situace celkem jedno (nedávno totiž došlo ke zvýšení na 4,77 TB na soubor). Blob storage je levná a univerzální. Pokud jde ale o skutečná Big Data nabízí Azure i opravdového specialistu - Azure Data Lake Store.

Data Lake Store je postaven na souborovém systému Hadoop (HDFS) a přináší vyšší výkon optimalizovaný na Big Data (to se pozná zejména v okamžiku paralelních přístupů, což se při analýze stává často). Nemá žádné limity - libovolně velké soubory, neomezená velikost účtu.

Základní myšlenkou Big Data z hlediska ukládání je zaznamenat je v tom formátu, v jakém přijdou. Rozhodnout, co se s nimi dá nebo nedá dělat a jak je transformovat, se dá později. Třeba log soubory z web serveru, hromadu malých JSON souborů, emaly, PDFka nebo videa. Nutno ale říct, že je zásadní mít u souborů nějaká metadata, jinak se datové jezero rychle změní v nepřehlednou datovou žumpu.

Jak analyzovat data v Azure

Pokud zůstaneme u dávkového zpracování budeme hledata asi Hadoop, Spark a jejich rozšíření a nadstavby (problematiku streaming dat dnes nechme stranou). Máte v zásadě tři možnosti - IaaS, HDInsight nebo Data Lake Analytics.

Infrastruktura jako služba

IaaS volba spočívá v návštěvě Azure Marketplace, kde si vyberete šablony řešení Hortonworks, Cloudery a tak podobně. Pokud bych chtěl tuhle variantu připodobnit k provozu třeba API s mojí byznys logikou, pak by šlo třeba o Windows VM s IIS a mojí aplikací.

Platforma jako služba

Další varianta je Azure HDInsight, kdy jednoduše získáte cluster, který pro vás spravuje Microsoft společně s Hortonworks (postaveno na Hortonworks Data Platform). Azure pro vás zajistí instalaci, patchování OS, upgrade na vyšší verze Hadoop. Na dostupnost platformy dostanete SLA 99,9% a můžete integrovat enterprise-grade bezpečnost díky napojení na Azure Active Directory. HDInsight vám připraví nejen Hadoop, ale některé jeho nadstavby nebo alternativy - Hive, Hbase, Spark, R Server, Storm nebo Kafka. Stačí si vybrat. Pokud tedy chcete jednoduše a automatizovaně sestavit cluster s využitím znalostí a zkušeností lidí z Azure a Hortonworks, kde se vám o patchování OS i Hadoop postará tým Azure, je HDInsight ideální volba. Přesto stále jde o konkrétní plně open source implementaci třeba Hadoop, takže nad tím můžete běžet naprosto totéž, jako nad Hadoop on premise. Pokud bych zase připodobnil HDInsight k aplikační části Azure, tak by to byla Azure Container Service. Na kliknutí dostanete kompletní cluster s počtem nodů dle vaší volby s možností kdykoli přidat nebo ubrat. Ve finále ale jde o identickou platformu, jako můžete mít v on premise, můžete se připojit do každého nodu a něco tam upravit. S HDInsight nemusíte zkoumat složitosti instalace a správy Hadoop, získáte ho rychle a jednoduše.

Big Data jako služba

Chcete formulovat dotazy, ale nestarat se o použitou technologii? Nechcete přemýšlet kolik jakých VM v clusteru bude potřeba, kolik mají mít paměti a CPU? Pokud hledáte maximální produktivitu a chcete skočit rovnou na to důležité (a tím je dolování informací z dat), použijte Azure Data lake Analytics, tedy Big Data jako služba. Někde v Azure asi běží nějaký monstrózní cluster a vám je jedno jak vypadá. Vy formulujete dotazy v jazyce U-SQL, což je kombinace všem dobře známého SQL s možnostmi ho rozšířit o vlastní C# kód. Můžete začít snadno s SQL a přitom lze kdykoli přidat komplexní vlastní algoritmy. Jak se za to platí? Vytvoříte úlohu a té alokujete "analytické jednotky", tedy AU s tím, že jedno AU stojí 2 dolary za hodinu. To je všechno, jakmile úloha doběhne, neplatíte nic. Pokud byste měli dokonalý job (fantisticky paralelizovatelný), bude platit, že můžete použít 100 AU a dostat výsledek za hodinu (za cenu 200 USD) nebo použít 1 AU, ale na výsledek si počkat 100 hodin (zase za cenu 200 USD). Samozřejmě v praxi úlohy dokonale paralelizovatelné nejsou, ale v nějakém rozmezí se tomuto blíží (takže si třeba vyberte - výsledek za hodinu za 400 USD s 200 AU nebo za asi 2 dny za 200 USD s 4 AU ... nebo raději 6 hodin za 280 USD? - to jsou rozhodování, která v on-premise nezažijete, tam máte fixní zdroje). S Azure Data Lake Analytics získáte přesně to, co cloud slibuje. Nemusíte nakoupit zdroje, které obvykle vůbec neužíváte, a když už jich potřebujete opravdu hodně, protože máte důležitou náročnou úlohu, tak sice běží naplno, ale stejnak jich je málo. V Azure hoďte konkrétní úloze tolik zdrojů, kolik vám dává smysl. K čemu to připodobnit ve světě aplikací? Azure Functions. Někde tam běží nějaký monstrózní cluster, ale vy neřešíte jeho kapacitu - platíte za jednotlivá spuštění funkcí. Když je nápor, platíte víc, když nejsou žádné požadavky, neplatíte ani cent.
Azure je skvělé místo nejen pro vaše "normální data", ale i ta opravdu velká. Začněte ukládáním všeho do Azure Blobů (pokud zatím analytiku dělat nebudete, ale jednou to přijde) nebo rovnou do Azure Data Lake Store (když začnete s analýzou hned). Pak už můžete začít data chroupat ... osobně bych šel do Azure Data Lake Analytics, protože tomu moc nerozumím a chci cestu, kterou můžu zvládnout. Jestli ale chcete svoje vlastní nástroje nad klasický plně open source Hadoop nebo Spark, zjednodušte si život s Azure HDInsight.



Datové hřiště - zpracování proudu událostí s Azure Stream Analytics nakopnuté Terraformem Data Analytics
Datové hřiště - generátory fake dat do kontejneru zabalené Terraformem v Azure nahozené Data Analytics
Datové hřiště - jak si hrát s daty bez sebemenšího kliknutí s Terraform a Azure Data Analytics
Jak jsem přidal tlačítko search na statický web s Azure Cognitive Search Data Analytics
Azure IoT Edge: využívání Edge modulů na příkladu Azure Function a Stream Analytics Data Analytics