Ahoj znova! Názov článku hovorí sám za seba. V predvečer štartu kurzu navrhujeme sa zamyslieť nad tým, kto sú to dátoví inžinieri. V článku je veľa užitočných odkazov. Príjemné čítanie.

Jednoduchý sprievodca o tom, ako uchopiť vlnu dátového inžinierstva a nenechať sa vtiahnuť do hlbín.
Môže sa zdať, že v súčasnosti chce každý byť dátovým vedcom (Data Scientist). Ale čo dátové inžinierstvo? V podstate ide o akýsi hybrid dátového analytika a dátového vedca; dátový inžinier zvyčajne zodpovedá za správu pracovných tokov, spracovateľských kanálov a ETL procesov.Vzhľadom na dôležitosť týchto funkcií, ide teraz o ďalší populárny profesionálny žargón, ktorý rýchlo naberá na popularite.
Vysoký plat a obrovský dopyt — to je len malá časť toho, čo robí túto prácu nesmierne atraktívnou! Ak chcete pribudnúť do radov hrdinov, nikdy nie je neskoro začať sa učiť. V tomto príspevku som zhromaždil všetky potrebné informácie, aby som vám pomohol urobiť prvé kroky.
Tak teda, začnime!
Čo je dátové inžinierstvo?
Úprimne povedané, niet lepšieho vysvetlenia, než toto:
„Vedec môže objaviť novú hviezdu, ale nemôže ju vytvoriť. Bude musieť požiadať inžiniera, aby to urobil za neho.“
– Gordon Lindsay Glegg
Takže úloha dátového inžiniera je dosť významná.
Z názvu to naznačuje, inžinierstvo dát súvisí s údajmi, konkrétne s ich dodávaním, uskladnením a spracovaním. Zodpovedajúcou úlohou inžinierov je zabezpečiť spoľahlivú infraštruktúru pre údaje. Ak sa pozrieme na hierarchiu potrieb v oblasti AI, inžinierstvo dát pokrýva prvé 2–3 úrovne: zber, presun a uskladnenie, úpravu údajov.

Čo robí dátový inžinier?
S príchodom big data sa oblasť zodpovednosti dramaticky zmenila. Kým predtým títo odborníci písali veľké SQL dotazy a prevádzali údaje pomocou nástrojov ako Informatica ETL, Pentaho ETL, Talend, dnes sú požiadavky na dátových inžinierov zvýšené.
Väčšina spoločností, ktoré majú otvorené pracovné pozície pre dátového inžiniera, vyžaduje nasledujúce:
- Výborné znalosti SQL a Python.
- Skúsenosti s cloudovými platformami, konkrétne Amazon Web Services.
- Uprednostňuje sa znalosť Java/Scala.
- Dobrý prehľad o databázach SQL a NoSQL (modelovanie údajov, uskladnenie údajov).
Majte na pamäti, že ide len o to najdôležitejšie. Z tohto zoznamu možno predpokladať, že dátoví inžinieri sú odborníci v oblasti softvérového vývoja a backendu.
Napríklad, ak spoločnosť začne generovať veľké množstvo údajov z rôznych zdrojov, vašou úlohou ako dátového inžiniera je organizovať zber informácií, ich spracovanie a uchovávanie.
Zoznam nástrojov používaných v tomto prípade sa môže líšiť, všetko závisí od objemu týchto údajov, rýchlosti ich príchodu a heterogenity. Väčšina spoločností sa vôbec nestretáva s veľkými dátami, a preto ako centralizované úložisko, takzvané úložisko údajov, možno použiť databázu SQL (PostgreSQL, MySQL a pod.) s malým množstvom skriptov, ktoré smerujú údaje do úložiska.
IT giganti, ako Google, Amazon, Facebook alebo Dropbox, majú vyššie požiadavky: znalosť Pythonu, Javy alebo Scaly.
- Skúsenosti s veľkými dátami: Hadoop, Spark, Kafka.
- Znalosti algoritmov a dátových štruktúr.
- Pochopenie základov distribuovaných systémov.
- Skúsenosti s nástrojmi na vizualizáciu dát, ako sú Tableau alebo ElasticSearch, budú veľkým prínosom.
Inými slovami, pozoruje sa jasný posun smerom k veľkým dátam, konkrétne v ich spracovaní pri vysokých zaťaženiach. Tieto spoločnosti majú zvýšené požiadavky na odolnosť systému.
Dátoví inžinieri Vs. dátoví vedci

Dobre, to bolo jednoduché a zábavné porovnanie (nič osobné), ale v skutočnosti je to oveľa zložitejšie.
Po prvé, musíte vedieť, že existuje dosť veľa nejasností v rozdeľovaní rolí a zručností dátového vedca a dátového inžiniera. To znamená, že sa ľahko môžete cítiť zmätený tým, aké zručnosti sú naozaj potrebné pre úspešného dátového inžiniera. Samozrejme, existujú určité zručnosti, ktoré sa prekrývajú s oboma rolami. Ale taktiež existuje celá rada diametrálne opačných zručností.
Dátová veda je seriózna záležitosť, ale smerujeme do sveta funkčnej dátovej vedy, kde praktikanti sú schopní robiť svoju vlastnú analytiku. Aby ste mohli zapojiť dátové kanály a integrované štruktúry dát, potrebujete dátových inžinierov, nie vedcov.
Je dátový inžinier viac žiadaný ako dátový vedec?
— Áno, pretože skôr ako si môžete pripraviť mrkvový koláč, musíte najprv nazbierať, očistiť a zásobiť mrkvu!
Dátový inžinier sa rozumie programovaniu lepšie ako akýkoľvek dátový vedec, ale pokiaľ ide o štatistiku, všetko je presne naopak.
Ale to je výhoda dátového inžiniera:
bez neho/nej hodnota modelu prototypu, ktorý sa často skladá z útržku zlého kódu v súbore Python, získaného od dátového vedca a akýmkoľvek spôsobom dávajúceho výsledok, sa blíži nule.
Bez dátového inžiniera sa tento kód nikdy nestane projektom a žiadny obchodný problém nebude efektívne vyriešený. Dátový inžinier sa snaží zmeniť to všetko na produkt.
Základné vedomosti, ktoré by mal dátový inžinier mať

Takže, ak vás táto práca vzrušuje a ste plní nadšenia — ste schopní sa to naučiť, môžete ovládnuť všetky potrebné zručnosti a stať sa naozaj rockovou hviezdou v oblasti dátového vývoja. A áno, môžete to dosiahnuť aj bez programovacích zručností alebo akýchkoľvek iných technických vedomostí. Je to náročné, ale možné!
Aké sú prvé kroky?
Musíte mať základnú predstavu o tom, čo je čo.
Predovšetkým dátové inžinierstvo súvisí s informatikou. Konkrétne — mali by ste rozumieť efektívnym algoritmom a štruktúram údajov. Po druhé, keďže dátoví inžinieri pracujú s údajmi, je potrebné porozumieť zásadám fungovania databáz a štruktúram, na ktorých sú založené.
Napríklad bežné B-tree SQL databázy sú založené na štruktúre údajov B-Tree, a taktiež v moderných distribuovaných repozitároch, LSM-Tree a iných modifikáciách hash tabuliek.
* Tieto kroky sú založené na úžasnom článku . Takže, ak ovládate ruštinu, podporte tohto autora a prečítajte si .
1. Algoritmy a štruktúry údajov
Použitie správnej štruktúry údajov môže výrazne zlepšiť výkon algoritmu. Ideálne by sme sa všetci mali učiť štruktúry údajov a algoritmy v našich školách, ale to sa zriedka pokrýva. V každom prípade, nikdy nie je neskoro oboznámiť sa.
Takže, tu sú moje obľúbené bezplatné kurzy na štúdium štruktúr údajov a algoritmov:
Navyše nezabúdajte na klasickú prácu na algoritmoch Thomasa Cormena — . Je to ideálny sprievodca, keď potrebujete osviežiť svoju pamäť.
- Aby ste zlepšili svoje zručnosti, využite .
Môžete sa tiež ponoriť do sveta databáz skvelými videami z Carnegie Mellon University na YouTube:
- .
- .
2. Štúdium SQL
Celý náš život sú dáta. Aby ste tieto dáta vytiahli z databázy, musíte s nimi 'rozprávať' v jednom jazyku.
SQL (Structured Query Language — jazyk štruktúrovaných dotazov) je jazykom komunikácie v oblasti dát. Bez ohľadu na to, čo niekto hovorí, SQL žil, žije a ešte dlho žiť bude.
Ak už dlhší čas pracujete v oblasti vývoja, pravdepodobne ste si všimli, že správy o blízkej smrti SQL sa objavujú občas. Jazyk bol vyvinutý na začiatku 70-tych rokov a stále je veľmi populárny medzi analytikmi, vývojármi a jednoducho nadšencami.
Bez znalosti SQL v dátovom inžinierstve sa nedá nič robiť, pretože nevyhnutne budete musieť vytvárať dotazy na získavanie dát. Všetky moderné úložiská veľkých dát podporujú SQL:
- Amazon Redshift
- HP Vertica
- Oracle
- SQL Server
… a mnohé ďalšie.
Na analýzu veľkých objemov dát uložených v distribuovaných systémoch, ako je HDFS, boli vynájdené mechanizmy SQL: Apache Hive, Impala a pod. Vidíte, on nikam nezmizne.
Ako sa naučiť SQL? Jednoducho sa s tým praktikujte.
Na to by som odporučil oboznámiť sa s výborným učebným materiálom, ktorý je, mimochodom, zadarmo, od .
Charakteristickou črtou týchto kurzov je prítomnosť interaktívneho prostredia, v ktorom môžete písať a vykonávať SQL dotazy priamo v prehliadači. Zdroje nebudú na škodu. A tieto znalosti môžete uplatniť v v sekcii Databázy.
3. Programovanie v Pythone a Java/Scala
Prečo sa oplatí študovať programovací jazyk Python, už som písal v článku . Čo sa týka Javy a Scaly, väčšina nástrojov na ukladanie a spracovanie obrovských objemov dát je napísaná v týchto jazykoch. Napríklad:
- Apache Kafka (Scala)
- Hadoop, HDFS (Java)
- Apache Spark (Scala)
- Apache Cassandra (Java)
- HBase (Java)
- Apache Hive (Java)
Aby ste porozumeli, ako tieto nástroje fungujú, musíte poznať jazyky, v ktorých sú napísané. Funkcionálny prístup jazyka Scala umožňuje efektívne riešiť úlohy paralelného spracovania dát. Python, žiaľ, nemôže ponúknuť rýchlosť a paralelné spracovanie. Všeobecne platí, že znalosť niekoľkých jazykov a programovacích paradigmat posilňuje šírku prístupov k riešeniu problémov.
Aby ste sa mohli do jazyka Scala ponoriť, môžete si prečítať od autora jazyka. Takisto spoločnosť Twitter zverejnila dobrého úvodného sprievodcu — .
Pokiaľ ide o Python, považujem za najlepšiu knihu na strednej úrovni.
4. Nástroje na prácu s veľkými dátami
Tu je zoznam najpopulárnejších nástrojov vo svete veľkých dát:
- Apache Spark
- Apache Kafka
- Apache Hadoop (HDFS, HBase, Hive)
- Apache Cassandra
Viac informácií o budovaní veľkých blokov dát nájdete v tejto úžasnej . Najpopulárnejšie nástroje sú Spark a Kafka. Určite sa oplatí ich študovať a ideálne pochopiť, ako fungujú zvnútra. Jay Kreps (spolutvorca Kafky) publikoval v roku 2013 monumentálne dielo , mimochodom, hlavné myšlienky z tohto talmudu boli použité na vytvorenie Apache Kafky.
- Úvod do Hadoopu môže slúžiť ako .
- Najkompletnejší sprievodca Apache Spark pre mňa je .
5. Cloudové platformy

Znalosť aspoň jednej cloudovej platformy je na zozname základných požiadaviek na uchádzačov na pozíciu dátového inžiniera. Zamestnávatelia uprednostňujú Amazon Web Services, na druhom mieste je cloudová platforma Google a na treťom Microsoft Azure.
Mali by ste sa dobre orientovať v Amazon EC2, AWS Lambda, Amazon S3, DynamoDB.
6. Distribuované systémy
Práca s veľkými dátami predpokladá prítomnosť klastrov nezávisle fungujúcich počítačov, ktorých spojenie prebieha cez sieť. Čím väčší je klaster, tým je pravdepodobnejšie, že dojde k zlyhaniu jeho uzlov. Aby ste sa stali skvelým odborníkom na dáta, musíte preniknúť do problémov a existujúcich riešení pre distribuované systémy. Táto oblasť je stará a zložitá.
Andrew Tanenbaum je považovaný za priekopníka v tejto oblasti. Pre tých, ktorí sa neboja teórie, odporúčam jeho knihu , pre začiatočníkov sa môže zdať zložitá, ale naozaj vám pomôže zdokonaliť vaše zručnosti.
Považujem za najlepšiu úvodnú knihu. Mimochodom, Martyn má skvelý . Jeho práca pomôže systematizovať vedomosti o budovaní modernej infraštruktúry pre ukladanie a spracovanie veľkých dát.
Pre tých, ktorí majú radi sledovanie videí, je na Youtube kurz .
7. Dátové potrubia

Dátové potrubia sú niečo, bez čoho nemôžete žiť ako dátový inžinier.
Väčšinu času dátový inžinier vytvára takzvanú dátovú pipeline, teda vytvára proces dodávania dát z jedného miesta na iné. Môžu to byť používateľské scenáre, ktoré idú k API externého servisu alebo robia SQL dotaz, dopĺňajú dáta a ukladajú ich do centralizovaného úložiska (data warehouse) alebo úložiska nestruktúrovaných dát (dátové jazerá).
Zhrnutie: základný checklist dátového inžiniera

Zhrňme — je potrebné dobré porozumenie nasledujúcim:
- Informačné systémy;
- Vývoj softvéru (Agile, DevOps, Design Techniques, SOA);
- Distribuované systémy a paralelné programovanie;
- Základy databáz — plánovanie, návrh, prevádzka a opravy;
- Dizajn experimentov — A/B testy na preukázanie konceptov, určovanie spoľahlivosti, výkonu systémov, ako aj na vývoj spoľahlivých ciest pre operatívne poskytovanie dobrých riešení.
Toto je len niekoľko požiadaviek na to, aby ste sa stali dátovým inžinierom, preto študujte a zorientujte sa v dátových systémoch, informačných systémoch, kontinuálnej dodávke/ nasadení/ integrácii, programovacích jazykoch a iných témach v informatike (nie vo všetkých predmetových oblasti).
A nakoniec, posledná, ale veľmi dôležitá vec, ktorú chcem povedať.
Cesta k tomu, aby ste sa stali dátovým inžinierom, nie je tak jednoduchá, ako by sa mohlo zdať. Nezodpúšťa a dokáže frustrovať, preto musíte byť na to pripravení. Niektoré momenty na tejto ceste vás môžu prinútiť vzdať sa. Ale je to skutočne ťažká práca a proces učenia.
Jednoducho to od začiatku nepreháňajte. Celý zmysel tejto cesty spočíva v tom, aby ste sa čo najviac naučili a boli pripravení na nové výzvy.
Tu je skvelý obrázok, na ktorý som narazil, a ktorý dobre ilustruje tento moment:

A áno, nezabudnite sa vyhnúť vyhoreniu a oddychovať. To je tiež veľmi dôležité. Veľa šťastia!
Ako sa vám páči článok, priatelia? Pozývame vás na , ktorý sa uskutoční už dnes o 20:00. V rámci webinára prediskutujeme, ako vybudovať efektívny a škálovateľný systém spracovania dát pre malú firmu alebo startup s minimálnymi nákladmi. V praxi sa zoznámime s nástrojmi spracovania dát Google Cloud. Tešíme sa na vás!
Zdroj: habr.com
