Ko su inženjeri podataka i kako to postati?

Zdravo opet! Naslov članka govori sam za sebe. U iščekivanju početka kursa Data Engineer Predlažemo da shvatite ko su inženjeri podataka. U članku ima puno korisnih linkova. Sretno čitanje.

Ko su inženjeri podataka i kako to postati?

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

Čini se da ovih dana svi žele postati Data Scientist. Ali šta je sa inženjeringom podataka? U suštini, ovo je svojevrsni hibrid analitičara podataka i naučnika podataka; Inženjer podataka je obično odgovoran za upravljanje radnim tokovima, procesiranje cjevovoda i ETL procesa. Zbog važnosti ovih funkcija, ovo je trenutno još jedan popularan profesionalni žargon koji aktivno uzima maha.

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

Pa, krenimo!

Šta je inženjering podataka?

Iskreno, nema boljeg objašnjenja od ovog:

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

–Gordon Lindzi Gleg

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

Kao što samo ime govori, inženjering podataka se bavi podacima, odnosno njihovom isporukom, skladištenjem i obradom. Shodno tome, glavni zadatak inženjera je da obezbede pouzdanu infrastrukturu za podatke. Ako pogledamo AI hijerarhiju potreba, inženjering podataka zauzima prve 2-3 faze: prikupljanje, kretanje i skladištenje, priprema podataka.

Ko su inženjeri podataka i kako to postati?

Šta radi inženjer podataka?

Sa pojavom velikih podataka, opseg odgovornosti se dramatično promijenio. Ako su ranije ovi stručnjaci pisali velike SQL upite i destilirali podatke koristeći alate kao što su Informatica ETL, Pentaho ETL, Talend, sada su zahtjevi za inženjerima podataka povećani.

Većina kompanija sa otvorenim konkursima za poziciju inženjera podataka ima sledeće uslove:

  • Odlično poznavanje SQL-a i Pythona.
  • Iskustvo sa platformama u oblaku, posebno sa Amazon Web Services.
  • Poželjno poznavanje Java/Scale.
  • Dobro razumijevanje SQL i NoSQL baza podataka (modeliranje podataka, skladištenje podataka).

Imajte na umu, ovo su samo osnovne stvari. Iz ove liste može se pretpostaviti da su inženjeri podataka specijalisti u oblasti razvoja softvera i backend-a.
Na primjer, ako kompanija počne da generiše veliku količinu podataka iz različitih izvora, vaš zadatak kao inženjera podataka je da organizujete prikupljanje informacija, njihovu obradu i skladištenje.

Lista alata koji se koriste u ovom slučaju može se razlikovati, sve ovisi o količini ovih podataka, brzini njihovog prijema i heterogenosti. Većina kompanija se uopće ne bavi velikim podacima, tako da kao centralizirano spremište, 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 kao što su Google, Amazon, Facebook ili Dropbox imaju veće zahtjeve: poznavanje Pythona, Jave ili Scale.

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

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

Data Engineers vs. naučnici podataka

Ko su inženjeri podataka i kako to postati?
Dobro, to je bilo jednostavno i smiješno poređenje (ništa lično), ali u stvarnosti je mnogo komplikovanije.

Prvo, trebali biste znati da postoji mnogo nejasnoća u razgraničenju uloga i vještina naučnika i inženjera podataka. Odnosno, lako možete biti zbunjeni oko toga koje su vještine potrebne da biste bili uspješan inženjer podataka. Naravno, postoje određene vještine koje se preklapaju s obje uloge. Ali postoji i niz dijametralno suprotnih vještina.

Nauka o podacima je ozbiljan posao, ali mi se krećemo prema svijetu funkcionalne nauke o podacima u kojem praktičari mogu sami raditi analitiku. Da biste omogućili cevovode podataka i integrisane strukture podataka, potrebni su vam inženjeri podataka, a ne naučnici podataka.

Da li je inženjer podataka traženiji od naučnika za podatke?

- Da, jer prije nego što napravite tortu od šargarepe, prvo morate sakupiti, oguliti i spremiti šargarepu!

Inženjer podataka razumije programiranje bolje od bilo kojeg naučnika za podatke, ali kada je u pitanju statistika, istina je suprotno.

Ali evo prednosti inženjera podataka:

Bez njega/nje, vrijednost modela prototipa, koji se najčešće sastoji od dijela koda užasnog kvaliteta u Python datoteci, dobijenog od naučnika podataka i na neki način daje rezultat, teži nuli.

Bez inženjera podataka, ovaj kod nikada neće postati projekat i nijedan poslovni problem neće biti efikasno rešen. Inženjer podataka pokušava sve ovo pretvoriti u proizvod.

Osnovne informacije koje inženjer podataka treba da zna

Ko su inženjeri podataka i kako to postati?

Dakle, ako ovaj posao osvijetli u vama i ako ste entuzijastični – možete ga naučiti, možete savladati sve potrebne vještine i postati prava rock zvijezda u oblasti inženjeringa podataka. 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?

Trebalo bi da imate opštu predstavu o tome šta je šta.

Prije svega, Data Engineering se odnosi na informatiku. Konkretnije, morate razumjeti efikasne algoritme i strukture podataka. Drugo, pošto inženjeri podataka rade sa podacima, neophodno je razumjeti principe baza podataka i strukture koje su u njihovoj osnovi.

Na primjer, konvencionalne SQL baze podataka B-stabla su bazirane na B-Tree strukturi podataka, kao i, u modernim distribuiranim repozitorijama, LSM-Tree i drugim modifikacijama hash tablica.

*Ovi koraci su zasnovani 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 performanse 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 kurseva za učenje struktura podataka i algoritama:

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

  • Da poboljšate svoje vještine, koristite Leetcode.

Također možete zaroniti u svijet baza podataka uz neverovatne video zapise sa Univerziteta Carnegie Mellon na Youtube-u:

2. Naučite SQL

Ceo naš život su podaci. A da biste izvukli ove podatke iz baze podataka, morate s njom „govoriti“ istim jezikom.

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

Ako ste dugo bili u razvoju, vjerovatno ste primijetili da se povremeno pojavljuju glasine o skoroj smrti SQL-a. Jezik je razvijen početkom 70-ih i još uvijek je vrlo popularan među analitičarima, programerima i jednostavno entuzijastima.
Bez znanja o SQL-u nema ništa za raditi u inženjeringu podataka jer ćete neizbježno morati kreirati upite za dohvat 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 sistemima kao što je HDFS, izmišljeni su SQL motori: Apache Hive, Impala, itd. Vidite, to ne vodi nikuda.

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

Da biste to učinili, preporučio bih vam da pogledate odličan tutorijal, koji je, inače, besplatan Mode Analytics.

  1. Srednji SQL
  2. Spajanje podataka u SQL-u

Ono što ove kurseve čini posebnim je to što imaju interaktivno okruženje u kojem možete pisati i pokretati SQL upite direktno u svom pretraživaču. Resurs Moderni SQL neće biti suvišno. I ovo znanje možete primijeniti na Leetcode zadaci u odeljku Baze podataka.

3. Programiranje u Pythonu 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 nauku o podacima. Kada su Java i Scala u pitanju, većina alata za skladištenje 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 ovi alati rade, morate znati jezike na kojima su napisani. Funkcionalni pristup Scale omogućava vam da efikasno rešite probleme paralelne obrade podataka. Python se, nažalost, ne može pohvaliti brzinom i paralelnom obradom. Općenito, poznavanje nekoliko jezika i programskih paradigmi je dobro za širinu pristupa rješavanju problema.

Da zaronite u Scala jezik, možete čitati Programiranje u Scali od autora jezika. Twitter je objavio i dobar uvodni vodič - Scala School.

Što se Pythona tiče, vjerujem Fluent Python najbolja knjiga srednjeg nivoa.

4. Alati za rad sa velikim podacima

Evo liste najpopularnijih alata u svijetu velikih podataka:

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

Više informacija o izgradnji velikih blokova podataka možete pronaći u ovom neverovatnom interaktivno okruženje. Najpopularniji alati su Spark i Kafka. Definitivno ih vrijedi proučavati, preporučljivo je razumjeti kako rade iznutra. Jay Kreps (koautor Kafke) objavio je monumentalno djelo 2013. godine Dnevnik: Šta svaki programer softvera treba da zna o apstrakciji agregacije podataka u realnom vremenuInače, glavne ideje iz ovog Talmuda korištene su za stvaranje Apache Kafke.

5. Cloud platforme

Ko su inženjeri podataka i kako to postati?

Poznavanje najmanje jedne cloud platforme nalazi se na listi osnovnih uslova za kandidate za poziciju inženjera podataka. Poslodavci preferiraju Amazon Web Services, sa Google-ovom platformom u oblaku na drugom mjestu i Microsoft Azureom koji zaokružuje prva tri.

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

6. Distribuirani sistemi

Rad sa velikim podacima podrazumijeva prisustvo klastera nezavisno operativnih računara, među kojima se komunikacija odvija preko mreže. Što je klaster veći, veća je vjerovatnoća kvara njegovih čvorova članova. Da biste postali veliki naučnik podataka, morate razumjeti probleme i postojeća rješenja za distribuirane sisteme. Ovo područje je staro i složeno.

Andrew Tanenbaum se smatra pionirom u ovoj oblasti. Za one koji se ne boje teorije, preporučujem njegovu knjigu "Distribuirani sistemi", može izgledati zastrašujuće za početnike, ali će vam zaista pomoći da usavršite svoje vještine.

Smatram Dizajniranje aplikacija sa intenzivnim podacima Martina Kleppmanna najbolja uvodna knjiga. Inače, Martin ima divnu blog. Njegov rad će pomoći u sistematizaciji znanja o izgradnji moderne infrastrukture za skladištenje i obradu velikih podataka.
Za one koji vole da gledaju video, postoji kurs na Youtube-u Distribuirani kompjuterski sistemi.

7. Cjevovodi podataka

Ko su inženjeri podataka i kako to postati?

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

U većini slučajeva, inženjer podataka gradi takozvani cevovod podataka, odnosno kreira proces za isporuku podataka s jednog mjesta na drugo. To mogu biti prilagođene skripte koje idu na API eksterne usluge ili prave SQL upit, povećavaju podatke i stavljaju ih u centralizirano skladište (skladište podataka) ili nestrukturirano skladište podataka (jezera podataka).

Da rezimiramo: osnovna kontrolna lista za inženjera podataka

Ko su inženjeri podataka i kako to postati?

Da rezimiramo, potrebno je dobro razumijevanje sljedećeg:

  • informacioni sistemi;
  • Razvoj softvera (Agile, DevOps, Design Techniques, SOA);
  • Distribuirani sistemi i paralelno programiranje;
  • Osnove baze podataka - planiranje, dizajn, rad i rješavanje problema;
  • Dizajn eksperimenata - A/B testovi za dokazivanje koncepata, utvrđivanje pouzdanosti, performanse sistema i razvoj pouzdanih puteva za brzo isporuku dobrih rješenja.

Ovo su samo neki od uslova da postanete inženjer podataka, tako da naučite i razumete sisteme podataka, informacione sisteme, kontinuiranu isporuku/primenu/integraciju, programske jezike i druge teme računarstva (ne sve oblasti).

I na kraju, poslednja, ali veoma važna stvar koju želim da kažem.

Put da postanete Data Engineering nije tako jednostavan kao što se čini. On ne prašta, on frustrira, a vi morate biti spremni na ovo. Neki trenuci na ovom putovanju mogu vas natjerati da odustanete. Ali ovo je pravi rad i proces učenja.

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

Ko su inženjeri podataka i kako to postati?

I da, zapamtite da izbjegavate sagorijevanje i odmor. Ovo je takođe veoma važno. Sretno!

Šta mislite o članku, prijatelji? Pozivamo vas da besplatni webinar, koji će se održati danas u 20.00 časova. Tokom webinara razgovaraćemo o tome kako izgraditi efikasan i skalabilan sistem za obradu podataka za malu kompaniju ili startup uz minimalne troškove. U praksi ćemo se upoznati sa Google Cloud alatima za obradu podataka. Vidimo se!

izvor: www.habr.com

Dodajte komentar