Tko su podatkovni inženjeri i kako to postati?

Bok opet! Naslov članka govori sam za sebe. U iščekivanju početka tečaja Inženjer podataka Predlažemo da shvatite tko su podatkovni inženjeri. U članku ima puno korisnih poveznica. Sretno čitanje.

Tko su podatkovni inženjeri i kako to postati?

Jednostavan vodič kako uhvatiti val Data Engineeringa i ne dopustiti da vas odvuče u ponor.

Čini se da danas svi žele postati Data Scientist. Ali što je s Data Engineeringom? U biti, ovo je neka vrsta hibrida data analitičara i data scientista; Inženjer podataka obično je odgovoran za upravljanje tijekovima rada, cjevovodima za obradu i ETL procesima. Zbog važnosti ovih funkcija, ovo je trenutno još jedan popularan profesionalni žargon koji aktivno dobiva na zamahu.

Visoke plaće i velika potražnja samo su mali dio onoga što ovaj posao čini iznimno atraktivnim! Ako se želite pridružiti redovima heroja, nikad nije kasno da počnete učiti. U ovom postu prikupio sam sve potrebne informacije koje će vam pomoći da napravite prve korake.

Pa, krenimo!

Što je Data Engineering?

Iskreno, nema boljeg objašnjenja od ovoga:

“Znanstvenik može otkriti novu zvijezdu, ali je ne može stvoriti. Morat će zamoliti inženjera da to učini umjesto njega."

– Gordon Lindsay Glegg

Stoga je uloga podatkovnog inženjera prilično značajna.

Kao što naziv sugerira, podatkovni inženjering bavi se podacima, odnosno njihovom isporukom, pohranom i obradom. Sukladno tome, glavni zadatak inženjera je osigurati pouzdanu infrastrukturu za podatke. Ako pogledamo AI hijerarhiju potreba, podatkovni inženjering zauzima prve 2-3 faze: prikupljanje, kretanje i pohranjivanje, priprema podataka.

Tko su podatkovni inženjeri i kako to postati?

Što radi podatkovni inženjer?

S pojavom velikih podataka, opseg odgovornosti dramatično se promijenio. Ako su prije ovi stručnjaci pisali velike SQL upite i destilirali podatke pomoću alata kao što su Informatica ETL, Pentaho ETL, Talend, sada su zahtjevi za podatkovne inženjere porasli.

Većina tvrtki s otvorenim natječajima za radno mjesto Data Engineer ima sljedeće uvjete:

  • Izvrsno poznavanje SQL-a i Pythona.
  • Iskustvo s platformama u oblaku, posebice Amazon Web Services.
  • Poželjno poznavanje Java/Scala.
  • Dobro razumijevanje SQL i NoSQL baza podataka (modeliranje podataka, skladištenje podataka).

Imajte na umu da su ovo samo najnužnije stvari. Iz ovog popisa može se pretpostaviti da su podatkovni inženjeri stručnjaci u području razvoja softvera i pozadine.
Na primjer, ako tvrtka počne generirati veliku količinu podataka iz različitih izvora, vaš zadatak kao podatkovnog inženjera je organizirati prikupljanje informacija, njihovu obradu i pohranu.

Popis alata koji se koriste u ovom slučaju može se razlikovati, sve ovisi o količini ovih podataka, brzini njihovog primitka i heterogenosti. Većina tvrtki se uopće ne bavi velikim podacima, pa kao centralizirani repozitorij, takozvano skladište podataka, možete koristiti SQL bazu podataka (PostgreSQL, MySQL itd.) s malim skupom skripti koje unose podatke u skladište.

IT divovi poput Googlea, Amazona, Facebooka ili Dropboxa imaju veće zahtjeve: poznavanje Pythona, Jave ili Scale.

  • Iskustvo s velikim podacima: Hadoop, Spark, Kafka.
  • Poznavanje algoritama i struktura podataka.
  • Razumijevanje osnova distribuiranih sustava.
  • Iskustvo s alatima za vizualizaciju podataka kao što su Tableau ili ElasticSearch bit će plus.

Odnosno, postoji jasan pomak prema velikim podacima, odnosno u njihovoj obradi pod velikim opterećenjem. Ove tvrtke imaju povećane zahtjeve za toleranciju grešaka u sustavu.

Inženjeri podataka vs. podatkovni znanstvenici

Tko su podatkovni inženjeri i kako to postati?
U redu, to je bila jednostavna i smiješna usporedba (ništa osobno), ali u stvarnosti je puno kompliciranije.

Prvo, trebali biste znati da postoji mnogo dvosmislenosti u razgraničenju uloga i vještina podatkovnog znanstvenika i podatkovnog inženjera. To jest, lako se možete zbuniti oko toga koje su vještine potrebne da biste bili uspješan podatkovni inženjer. Naravno, postoje određene vještine koje se preklapaju s obje uloge. Ali postoji i niz dijametralno suprotnih vještina.

Znanost o podacima je ozbiljan posao, ali idemo prema svijetu funkcionalne znanosti o podacima u kojem praktičari mogu raditi vlastitu analitiku. Da biste omogućili podatkovne kanale i integrirane podatkovne strukture, potrebni su vam podatkovni inženjeri, a ne podatkovni znanstvenici.

Je li podatkovni inženjer traženiji od podatkovnog znanstvenika?

- Da, jer prije nego što možete napraviti kolač od mrkve, morate prvo ubrati, oguliti i spremiti mrkvu!

Podatkovni inženjer razumije programiranje bolje od bilo kojeg podatkovnog znanstvenika, ali kada je riječ o statistici, istina je obrnuta.

Ali ovdje je prednost inženjera podataka:

Bez njega/nje, vrijednost modela prototipa, koji se najčešće sastoji od dijela koda užasne kvalitete u Python datoteci, dobivenog od podatkovnog znanstvenika i na neki način daje rezultat, teži nuli.

Bez podatkovnog inženjera ovaj kod nikada neće postati projekt i niti jedan poslovni problem neće biti učinkovito riješen. Inženjer podataka sve to pokušava pretvoriti u proizvod.

Osnovne informacije koje bi inženjer podataka trebao znati

Tko su podatkovni inženjeri i kako to postati?

Dakle, ako ovaj posao probudi svjetlo u vama i imate entuzijazam - možete ga naučiti, možete savladati sve potrebne vještine i postati prava rock zvijezda u području podatkovnog inženjerstva. I, da, ovo možete izvesti čak i bez vještina programiranja ili drugog tehničkog znanja. Teško je, ali moguće!

Koji su prvi koraci?

Trebali biste imati opću ideju o tome što je što.

Prije svega, Data Engineering se odnosi na računalne znanosti. Točnije, morate razumjeti učinkovite algoritme i strukture podataka. Drugo, budući da inženjeri podataka rade s podacima, potrebno je razumjeti principe baza podataka i strukture koje su u njihovoj osnovi.

Na primjer, konvencionalne B-tree SQL baze podataka temelje se na strukturi podataka B-Tree, kao i, u modernim distribuiranim spremištima, LSM-Tree i druge modifikacije hash tablica.

*Ovi se koraci temelje na sjajnom članku Adilya Khashtamova. Dakle, ako znate ruski, podržite ovog autora i čitajte njegov post.

1. Algoritmi i strukture podataka

Korištenje prave strukture podataka može značajno poboljšati izvedbu algoritma. U idealnom slučaju, svi bismo trebali učiti o strukturama podataka i algoritmima u našim školama, ali to se rijetko pokriva. U svakom slučaju, nikad nije kasno za upoznavanje.
Evo mojih omiljenih besplatnih tečajeva za učenje struktura podataka i algoritama:

Osim toga, ne zaboravite klasični rad Thomasa Cormana o algoritmima - Uvod u algoritme. Ovo je savršena referenca kada trebate osvježiti pamćenje.

  • Da biste poboljšali svoje vještine, koristite Leetcode.

Također možete uroniti u svijet baza podataka s nevjerojatnim videozapisima sa Sveučilišta Carnegie Mellon na Youtubeu:

2. Naučite SQL

Cijeli naš život su podaci. A da biste izvukli ove podatke iz baze podataka, morate s njima "govoriti" istim jezikom.

SQL (Structured Query Language) je jezik komunikacije u domeni podataka. Bez obzira što netko kaže, SQL je živio, živ je i živjet će još jako dugo.

Ako ste dugo bili u razvoju, vjerojatno ste primijetili da se glasine o skoroj smrti SQL-a povremeno pojavljuju. Jezik je razvijen ranih 70-ih i još uvijek je vrlo popularan među analitičarima, programerima i jednostavno entuzijastima.
Bez poznavanja SQL-a nema što raditi u podatkovnom inženjeringu jer ćete neizbježno morati kreirati upite za dohvaćanje podataka. Sva moderna skladišta velikih podataka podržavaju SQL:

  • Amazon RedShift
  • HP Vertica
  • Proročanstvo
  • SQL Server

... i mnogi drugi.

Za analizu velikog sloja podataka pohranjenih u distribuiranim sustavima kao što je HDFS, izumljeni su SQL motori: Apache Hive, Impala itd. Vidite, to ne ide nikamo.

Kako naučiti SQL? Samo to učinite u praksi.

Da biste to učinili, preporučio bih da pogledate odličan vodič, koji je, usput rečeno, besplatan Način Analitika.

  1. Srednji SQL
  2. Spajanje podataka u SQL

Ono što ove tečajeve čini posebnima je to što imaju interaktivno okruženje u kojem možete pisati i pokretati SQL upite izravno u svom pregledniku. Resurs Moderni SQL neće biti suvišno. A ovo znanje možete primijeniti na Leetcode zadaci u odjeljku Baze podataka.

3. Programiranje u Python i Java/Scala

Zašto biste trebali naučiti programski jezik Python, već sam napisao u članku Python protiv R. Odabir najboljeg alata za AI, ML i Data Science. Kada su u pitanju Java i Scala, većina alata za pohranjivanje i obradu ogromnih količina podataka napisana je na ovim jezicima. Na primjer:

  • Apache Kafka (Scala)
  • Hadoop, HDFS (Java)
  • Apache Spark (Scala)
  • Apache Cassandra (Java)
  • HBase (Java)
  • Apache Hive (Java)

Da biste razumjeli kako ti alati rade, morate znati jezike na kojima su napisani. Scalin funkcionalni pristup omogućuje vam učinkovito rješavanje problema paralelne obrade podataka. Python se, nažalost, ne može pohvaliti brzinom i paralelnim procesiranjem. Općenito, poznavanje nekoliko jezika i programskih paradigmi dobro je za širinu pristupa rješavanju problema.

Da biste zaronili u Scala jezik, možete pročitati Programiranje u Scali od autora jezika. Twitter je objavio i dobar uvodni vodič - Škola Scala.

Što se tiče Pythona, vjerujem Tečan Python najbolja knjiga srednje razine.

4. Alati za rad s velikim podacima

Evo popisa najpopularnijih alata u svijetu velikih podataka:

  • Apache Spark
  • Apache Kafka
  • Apache Hadoop (HDFS, HBase, Hive)
  • Apache cassandra

Više informacija o izgradnji velikih podatkovnih blokova možete pronaći u ovom nevjerojatnom interaktivno okruženje. Najpopularniji alati su Spark i Kafka. Svakako ih vrijedi proučavati, preporučljivo je razumjeti kako djeluju iznutra. Jay Kreps (koautor Kafke) objavio je monumentalno djelo 2013. godine Dnevnik: Što bi svaki programer softvera trebao znati o agregaciji podataka u stvarnom vremenuInače, glavne ideje iz ovog Talmuda korištene su za stvaranje Apača Kafke.

5. Cloud platforme

Tko su podatkovni inženjeri i kako to postati?

Poznavanje barem jedne cloud platforme nalazi se na popisu osnovnih uvjeta za kandidate za poziciju data engineer. Poslodavci preferiraju Amazon Web Services, s Googleovom platformom u oblaku na drugom mjestu, a Microsoft Azure zaokružuje prva tri.

Morate dobro poznavati Amazon EC2, AWS Lambda, Amazon S3, DynamoDB.

6. Distribuirani sustavi

Rad s velikim podacima podrazumijeva postojanje klastera računala koja rade neovisno, a komunikacija između njih se odvija putem mreže. Što je veći klaster, to je veća vjerojatnost kvara njegovih čvorova članova. Da biste postali izvrstan podatkovni znanstvenik, morate razumjeti probleme i postojeća rješenja za distribuirane sustave. Ovo područje je staro i složeno.

Andrew Tanenbaum se smatra pionirom na ovom polju. Za one koji se ne boje teorije, preporučam njegovu knjigu "Distribuirani sustavi", može se činiti zastrašujućim za početnike, ali stvarno će vam pomoći da usavršite svoje vještine.

vjerujem Dizajniranje aplikacija s velikim brojem podataka, Martin Kleppmann najbolja uvodna knjiga. Usput, Martin ima prekrasan blog. Njegov rad pomoći će sistematizirati znanja o izgradnji moderne infrastrukture za pohranu i obradu velikih podataka.
Za one koji vole gledati videe postoji tečaj na Youtubeu Distribuirani računalni sustavi.

7. Cjevovodi podataka

Tko su podatkovni inženjeri i kako to postati?

Cjevovodi podataka nešto su bez čega kao podatkovni inženjer ne možete živjeti.

Većinu vremena podatkovni inženjer gradi tzv. data pipeline, odnosno kreira proces za isporuku podataka s jednog mjesta na drugo. To mogu biti prilagođene skripte koje idu na API vanjske usluge ili postavljaju SQL upit, povećavaju podatke i stavljaju ih u centraliziranu pohranu (skladište podataka) ili nestrukturiranu pohranu podataka (podatkovna jezera).

Ukratko: osnovni kontrolni popis za podatkovnog inženjera

Tko su podatkovni inženjeri i kako to postati?

Ukratko, potrebno je dobro razumijevanje sljedećeg:

  • Informacijski sustavi;
  • Razvoj softvera (Agile, DevOps, Design Techniques, SOA);
  • Distribuirani sustavi i paralelno programiranje;
  • Osnove baze podataka - planiranje, dizajn, rad i rješavanje problema;
  • Dizajn eksperimenata - A/B testovi za dokazivanje koncepata, utvrđivanje pouzdanosti, performansi sustava i razvoj pouzdanih putova za brzu isporuku dobrih rješenja.

Ovo su samo neki od zahtjeva da postanete podatkovni inženjer, stoga naučite i razumite podatkovne sustave, informacijske sustave, kontinuiranu isporuku/uvođenje/integraciju, programske jezike i druge teme iz računalne znanosti (ne sva predmetna područja).

I na kraju, posljednja, ali vrlo važna stvar koju želim reći.

Put do postajanja Data Engineeringom nije tako jednostavan kao što se možda čini. On ne oprašta, on frustrira i na to morate biti spremni. Neki trenuci na ovom putu mogu vas natjerati da odustanete. Ali ovo je pravi rad i proces učenja.

Samo ga nemojte zašećerivati ​​od početka. Cijeli smisao putovanja je naučiti što više i biti spreman za nove izazove.
Evo sjajne slike na koju sam naišao i koja dobro ilustrira ovo:

Tko su podatkovni inženjeri i kako to postati?

I da, ne zaboravite izbjegavati izgaranje i odmoriti se. Ovo je također vrlo važno. Sretno!

Što mislite o članku, prijatelji? Pozivamo vas da besplatni webinar, koji će se održati danas u 20.00 sati. Tijekom webinara raspravljat ćemo o tome kako izgraditi učinkovit i skalabilan sustav obrade podataka za malu tvrtku ili startup uz minimalne troškove. Praktično ćemo se upoznati s Google Cloud alatima za obradu podataka. Vidimo se!

Izvor: www.habr.com

Dodajte komentar