Správa datových toků - AWS „Data Pipeline“ vs. funkce Glue & Lambda

Uvidíte, že na AWS Blogy existuje značné množství příspěvků o datových potrubích, nastavování automatizovaných úloh ETL, automatizaci pracovních postupů atd. Můžete však také vidět, že tyto příspěvky jsou zastaralé nebo postrádají klíčové podrobnosti, které budete potřebovat v celém svém praxe.

Myslel jsem, že by mohl být dobrý nápad podělit se o své poznatky a mít své myšlenky na dva způsoby správy pracovního toku dat.

Nejprve bych rád upozornil na AWS Data Pipeline, který je vysoce odolný vůči chybám, spolehlivý a snadno použitelný. V instancích EC2 můžete spouštět vlastní příkazy aplikací / shellu, spouštět úlohy Spark / Hive / Pig na přechodných clusterech EMR, přenášet data mezi prostředími v prostředí premise a cloud…

Schopnost spustit příkazy shellu otevírá dveře ke spouštění / konfiguraci všech služeb aws pomocí aws-cli. To se nezdá skvělé!

Na druhou stranu se zdá, že namísto „Data Pipeline“ je Glue with Lambda většinou preferován, když přesunete a transformujete data mezi službami AWS.

AWS Glue je plně spravovaná služba ETL a AWS Lambda je serverová výpočetní platforma AWS bez událostí.

S AWS Glue můžete procházet metadata nestrukturovaných dat, prozkoumávat schémata dat, mít svůj katalog dat jako tabulku, prohlížet data na AWS Athena (SQL Query Engine) ... Můžete vytvářet úlohy ETL (Python), ve kterých můžete používat rozšířené funkce Spark poskytované jako GlueContext. Když je automatizace v úvahu, všechny tyto mohou být spuštěny / vytvořeny pomocí funkcí Lambda, které by mohly být spuštěny událostmi, jako je „S3 Put Event“ (soubor přichází do S3 kbelíku) .Můžete vložit tyto Lambda funkce a Glue úlohy ve funkcích Step, chcete-li mít pracovní postup s podrobnými kontrolami (například kontrola, zda je úloha Lepidlo dokončena pomocí funkce Lambda, pokud není spuštěna jiná funkce Lambda pro opětovné spuštění úlohy Lepidlo).

Můžete se podívat na následující odkaz https://docs.aws.amazon.com/glue/latest/dg/aws-glue-programming-python-calling.html.

Pokud navíc chcete pro server Lambda použít Node.js nebo jiné prostředí, můžete navštívit https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/Glue.html.

Místo toho, abyste se spoléhali na produkt, vám vaše mikro služby poskytují flexibilitu při vývoji vlastního kontrolního mechanismu během vašeho pracovního postupu. Lepší kódy a funkce Lambda usnadňují váš život, pokud jde o stavbu plynovodu CI / CD. Můžete vytvořit / spustit „Data Pipeline“ s funkcemi Lambda a vložit tuto funkci Lambda do vaší kódové základny, ale uvidíte, že to není příliš efektivní a uživatelsky přívětivé. Můžete napsat konfiguraci (datové uzly, činnosti, které jsou úkoly, které mají být splněny, předpoklady atd.) ve formátu json nebo klonovat z existujícího potrubí. Ale myslím, že je to poměrně pracné.

Můžete mít vývojové koncové body, s jejichž pomocí můžete notebooky Sagemaker / Zeppelin prozkoumat svá data, porovnat výstup prolézacího modulu Glue se schématem Spark dataframe (schéma odvozené ze souboru v kbelíku S3). Problémem může být to, že tyto koncové body nejsou dostupné ve všech regionech a mějte na paměti, že vaše data a úlohy lepidla, .. musí být ve stejném regionu, se kterým budete pracovat.

Pokud máte vlastní zdroje dat, může vám „Data Pipeline“ usnadnit život. Můžete definovat vstupní / výstupní „datové uzly“, což je umístění / formát dat (datové uzly mohou být MySQL, S3 atd.) A nastavit předpoklady jako „existuje“ atd. Můžete snadno migrovat data ze svých zdrojů na místě. na S3 nebo Redshift. Pokud však vaším cílem je pouze transformace Sparků na vašich datech v prostředí AWS, spuštění Spark úlohy na EMR s „Data Pipeline“, musíte vyčkat 15 minut během rozběhu clusteru EMR, zatímco stejná Spark úloha lze spustit s lepidlem za pár minut. Můžete nastavit DPU (počet jednotek zpracování dat) a časový limit, ale nedoporučuje se hrát s konfiguracemi lepidla Spark. Omezení lze vidět na adrese https://docs.aws.amazon.com/glue/latest/dg/aws-glue-programming-etl-glue-arguments.html.

Spark na EMR může být žádoucí v případě aktivit Hadoop / přechodného ukládání souborů na HDFS a 15 minut může být ignorováno, pokud zpracováváte svá data v dávce a naplánujete je, řekněme denně / týdně.

Stále objevuji Glue a jeho možnosti a pracuji na transformaci xml dat do tabulkového formátu s požadovanými poli. Je dobré mít nativní funkčnost transformace nestrukturovaných dat v relačním formátu (např. Zjistili jsme, že pomocí klasifikátorů Glue, které si můžete vybrat pomocí tagů, a sloučení vnořených dat je opravdu snadné s transformací Glue relaalize (), což můj den udělalo! ).

Navíc jsem zvědavý, jak lze data vyčistit / zaznamenat chyby na úrovni záznamu jednoduchým způsobem (což může být existující funkce Lepidla / Spark).

Budu zveřejňovat své studie lepidla krok za krokem v nadcházejících příbězích.

Toto je můj první příspěvek, takže doufám, že se vám to líbilo vůbec! :)