Tento příspěvek na blogu napsal: Sahaj Saini, PM v týmu Microsoft Analytics Platform System (APS).

V tomto příspěvku na blogu poskytneme stručný přehled o symetrickém víceprocesorovém zpracování (SMP) vs. MPP. Systémy s masivně paralelním zpracováním (MPP), jak identifikovat podněty pro přechod ze SMP na MPP, klíčové úvahy při přechodu na Microsoft Analytics Platform System (APS) a diskusi o tom, jak využít výkon řešení MPP, jako je APS.

Začneme scénářem. Emma je správcem databáze ve společnosti Adventure Works Cycles, která vyrábí jízdní kola. Ve společnosti Adventure Works používá Emma a její tým jako řešení datového skladu tradiční SQL Server SMP. Společnost rychle roste a s rostoucí konkurencí v odvětví výroby jízdních kol by obchodní analytici společnosti Adventure Works Cycles chtěli mít rychlejší přehled o svých datech. Emma nyní v souvislosti s nasazením SMP čelí následujícím výzvám –

  • Vysoký objem dat a jejich růst: S rostoucím prodejem a rozšiřující se zákaznickou základnou objem dat rychle vzrostl a překročil 10 TB.
  • Delší doba načítání dat/ETL:
  • Pomalé provádění dotazů: Vzhledem k potřebě vytvářet denní reporty pro vedení společnosti Emma považuje současnou rychlost ETL za nedostatečnou pro příjem a zpracování rostoucího množství dat proudících z jiných OLTP a nerelačních systémů:
  • Dlouhá doba zpracování kostek: Při současné době zpracování kostek je obtížné uspokojit potřeby společnosti v oblasti reportingu v reálném čase.

V zájmu překonání těchto problémů Emma a její tým vyhodnocují nákup větší, dražší a výkonnější sady serverů a úložného hardwaru do svého datového centra. Tento přístup by jejich problém vyřešil, ale pouze krátkodobě, protože v příštích 12 měsících se očekává prudký nárůst dat. Při nárůstu dat, který společnost Adventure Works očekává, by i větší a výkonnější řešení SMP velmi rychle narazila do zdi. Společnost Emma by ráda viděla řešení, které se bude škálovat s růstem jejich datových potřeb.

Než se vrhneme na řešení problémů společnosti Emma, pojďme si rychle definovat, co jsou SMP a MPP. Symetrický víceprocesorový systém (SMP) je úzce propojený víceprocesorový systém, kde procesory sdílejí zdroje – jednotlivé instance operačního systému (OS), paměť, vstupně-výstupní zařízení a jsou propojeny pomocí společné sběrnice. SMP je primární paralelní architektura používaná v serverech a je znázorněna na následujícím obrázku.

Masivně paralelní zpracování (MPP) je koordinované zpracování jedné úlohy více procesory, přičemž každý procesor používá svůj vlastní operační systém a paměť a komunikuje spolu pomocí určité formy rozhraní pro zasílání zpráv. MPP lze nastavit s architekturou sdíleného ničeho nebo s architekturou sdíleného disku.

V architektuře sdíleného ničeho neexistuje jediný sporný bod v celém systému a uzly nesdílejí paměť ani diskové úložiště. Data jsou horizontálně rozdělena mezi uzly tak, že každý uzel má podmnožinu řádků z každé tabulky v databázi. Každý uzel pak zpracovává pouze řádky na svých vlastních discích. Systémy založené na této architektuře mohou dosáhnout obrovského rozsahu, protože neexistuje jediné úzké místo, které by systém zpomalovalo. Právě o to se Emma snaží.

MPP s architekturou shared-nothing je znázorněn na následujícím obrázku.

Microsoft Parallel Data Warehouse (PDW) běžící na zařízení Microsoft Analytics Platform System je implementován jako architektura MPP shared-nothing. Skládá se z jednoho řídicího uzlu a výpočetních uzlů připojených k úložišti propojených sítěmi Ethernet a Infiniband. V řídicím uzlu je umístěn engine PDW – mozek systému MPP – který vytváří paralelní plány dotazů, koordinuje provádění dotazů na výpočetních uzlech a agregaci dat v celém zařízení. Všechny uzly, včetně řídicího a výpočetního, hostují službu DMS (Data Movement Service), která slouží k přenosu dat mezi uzly.

Podrobnější informace o architektuře PDW najdete v příspěvku Architektura systému Microsoft Analytics Platform.

Přechod na MPP

Chce-li Emma se svým týmem realizovat hodnotu, kterou nabízí MPP, zakoupí zařízení Microsoft APS a zahájí přechod na MPP. Podívejme se, jak své řešení přizpůsobují, aby plně využili výhod architektury MPP se sdíleným ničím.

Návrh tabulky

Jak již bylo zmíněno, APS je založeno na architektuře MPP se sdíleným ničím, což znamená, že uzly jsou soběstačné a nesdílejí paměť ani disky. Architektura proto vyžaduje, abyste své velké tabulky rozdělili mezi uzly a získali tak výhody masivně paralelního zpracování. APS umožňuje definovat tabulku jako distribuovanou nebo replikovanou. Rozhodnutí, zda zvolit jedno nebo druhé, závisí na objemu dat a potřebě přístupu ke všem datům v jednom uzlu.

Distribuované tabulky

Distribuovaná tabulka je taková, kde jsou data řádků v tabulce rozdělena mezi uzly v rámci zařízení, což umožňuje masivní škálování. Každý řádek skončí v jedné distribuci v jednom výpočetním uzlu, jak znázorňuje obrázek níže.

Aby bylo možné využít distribuované povahy APS, upraví Emma velké tabulky, typicky tabulky faktů a velkých rozměrů, tak, aby byly v APS distribuovány, a to následujícím způsobem:

CREATE TABLE .( NOT NULL, NOT NULL, . . NULL) WITH( DISTRIBUTION = HASH(ProductKey),CLUSTERED COLUMNSTORE INDEX);

Jak vidíte, jedná se o typický příkaz DDL pro vytvoření tabulky s drobným doplňkem pro distribuované tabulky. Tabulky jsou distribuovány pomocí deterministické hashovací funkce aplikované na distribuční sloupec zvolený pro danou tabulku. V tabulce FactInternetSales Emma zvolila jako distribuční sloupec Product Key kvůli vysoké kardinalitě a absenci zkreslení, a proto distribuuje tabulku rovnoměrně mezi uzly.

Replikované tabulky

Pokud by však byly všechny tabulky distribuované, vyžadovalo by to velké množství přesunů dat mezi uzly před provedením operací spojení pro všechny operace. Proto má u menších dimenzionálních tabulek, jako je jazyk, země atd. smysl replikovat celou tabulku v každém výpočetním uzlu. To znamená, že výhody umožnění lokálních operací spojování s těmito tabulkami převažují nad náklady na dodatečně spotřebované úložiště. Replikovaná tabulka je taková, která je replikována ve všech výpočetních uzlech, jak je znázorněno níže.

Emma navrhuje replikaci malých tabulek, typicky dimenzionálních tabulek, takto:

 CREATE TABLE .( NOT NULL, . . (10) NOT NULL,)WITH(CLUSTERED COLUMNSTORE INDEX);

Vhodným návrhem distribuovaných a replikovaných tabulek Emma slaďuje své řešení s běžnými osvědčenými postupy návrhu MPP a umožňuje efektivní zpracování velkých objemů dat. Například dotaz proti 100 miliardám řádků v prostředí SQL Server SMP by vyžadoval zpracování všech dat v jediném exekučním prostoru. S MPP je práce rozložena do mnoha uzlů, aby se problém rozdělil na lépe zvládnutelné a jednodušší způsoby provádění úloh. V zařízení se čtyřmi uzly (viz obrázek výše) je každý uzel požádán pouze o zpracování zhruba 25 miliard řádků – což je mnohem rychlejší úkol. Výsledkem je, že Emma pozoruje výrazné zlepšení doby provádění dotazů a její firma nyní může činit lepší a rychlejší rozhodnutí. Navíc může Emma přidáním „scale units“ do APS rozšířit datový sklad na libovolné množství od několika terabajtů až po více než 6 petabajtů dat.

Načítání dat

S SQL Serverem SMP používala Emma a její tým k načítání dat do datového skladu procesy ETL prostřednictvím sady balíčků SSIS – (1) extrakce dat z OLTP a dalších systémů; (2) transformace dat do dimenzionálního formátu a (3) načítání dat do cílových dimenzionálních nebo faktografických tabulek v datovém skladu. S rostoucím objemem dat se SSIS sever uprostřed stává úzkým hrdlem při provádění transformací, což vede k pomalému načítání dat.

S APS může Emma a její tým místo toho použít ELT, který data extrahuje z OLTP a dalších systémů a načítá je do odkládacího místa v APS. Poté lze data transformovat do dimenzionálního formátu nikoli pomocí SSIS, ale pomocí APS Engine s využitím distribuované povahy zařízení a výkonu paralelního zpracování. Ve čtyřuzlovém zařízení budou transformace na podmnožinách dat provádět čtyři servery oproti serveru SSIS s jedním uzlem.

Toto paralelní zpracování vede k výraznému zvýšení výkonu při načítání dat. Emma pak může použít příkaz Create Table As Select (CTAS) k vytvoření tabulky ze staging tabulky následujícím způsobem.

CREATE TABLE . WITH( CLUSTERED COLUMN INDEX, DISTRIBUTION = HASH (CustomerKey))ASSELECT * FROM .;

Přepnutím na proces ELT využívá Emma výkon paralelního zpracování APS a zaznamenává nárůst výkonu při načítání dat.

Na závěr Emma a její tým našli odpověď na své potíže s SMP pomocí MPP. Nyní mohou s jistotou zvládat objem dat a jejich růst ve společnosti Adventure Works s možností škálovat datový sklad podle potřeby. Díky ELT a výkonu paralelního zpracování v APS mohou načítat data do APS rychleji a v očekávaném časovém okně. A díky sladění s návrhem MPP v APS mohou dosáhnout průlomového výkonu dotazů, což umožňuje reportování v reálném čase a vhled do jejich dat.

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna.