Vem Àr dataingenjörer, och hur blir man det?

Hej igen! Artikelns rubrik talar för sig sjĂ€lv. I förberedelse inför kursstart „Data Engineer“ erbjuder vi en grundlig genomgĂ„ng av vad dataingenjörer faktiskt Ă€r. I artikeln finns mĂ„nga anvĂ€ndbara lĂ€nkar. Trevlig lĂ€sning.

Vem Àr dataingenjörer, och hur blir man det?

En enkel guide om hur man fÄngar vÄgen av data engineering och inte lÄter den dra ner en i avgrunden.

Det kÀnns som att alla idag vill bli data scientist. Men hur Àr det med data engineering? I grunden Àr det en slags hybrid mellan dataanalytiker och data scientist; en dataingenjör ansvarar vanligtvis för hantering av arbetsflöden, processlinjer och ETL-processer.Med tanke pÄ viktigheten av dessa funktioner Àr detta för nÀrvarande Ànnu ett populÀrt professionellt buzzword som aktivt vÀxer.

Hög lön och enorm efterfrÄgan Àr bara en del av vad som gör detta jobb oerhört attraktivt! Om du vill gÄ med i hjÀltarnas skara Àr det aldrig för sent att börja lÀra sig. I detta inlÀgg har jag samlat all nödvÀndig information för att hjÀlpa dig att ta de första stegen.

SÄ, lÄt oss börja!

Vad Àr data engineering?

Ärligt talat finns det ingen bĂ€ttre förklaring Ă€n detta:

“En forskare kan upptĂ€cka en ny stjĂ€rna, men kan inte skapa den. Han mĂ„ste be en ingenjör göra det Ă„t honom.”

–Gordon Lindsay Glegg

DÀrmed Àr rollen som dataingenjör ganska betydelsefull.

Av namnet framgĂ„r att data engineering handlar om data, nĂ€mligen om deras leverans, lagring och bearbetning. Huvuduppgiften för ingenjörerna Ă€r att sĂ€kerstĂ€lla en pĂ„litlig infrastruktur för data. Om vi ser pĂ„ AI-hierarkin över behov, ligger data engineering i de första 2–3 stegen: insamling, flytt och lagring, datatillagning.

Vem Àr dataingenjörer, och hur blir man det?

Vad gör en dataingenjör?

Med framvÀxten av stordata har ansvarsomrÄdena förÀndrats drastiskt. Tidigare skrev dessa experter stora SQL-frÄgor och flyttade data med hjÀlp av verktyg som Informatica ETL, Pentaho ETL, Talend, men nu har kraven pÄ dataingenjörer ökat.

De flesta företag med lediga tjÀnster för dataingenjörer stÀller följande krav:

  • UtmĂ€rkt kunskap i SQL och Python.
  • Erfarenhet av molnplattformar, sĂ€rskilt Amazon Web Services.
  • Det Ă€r en fördel med kunskap i Java/Scala.
  • God förstĂ„else för SQL- och NoSQL-databaser (datamodellering, datalagring).

TÀnk pÄ att detta bara Àr det mest nödvÀndiga. FrÄn denna lista kan man anta att dataingenjörer Àr specialister inom mjukvaruutveckling och backend.
Till exempel, om ett företag börjar generera stora mÀngder data frÄn olika kÀllor, Àr din uppgift som dataingenjör att organisera insamlingen av information, dess bearbetning och lagring.

Listan över verktyg som anvÀnds i det hÀr fallet kan variera, allt beror pÄ mÀngden data, hastigheten pÄ deras inkommande och heterogeniteten. De flesta företag stÀlls överhuvudtaget inte inför stora data, sÄ för ett centralt lagringsutrymme, det sÄ kallade datalagret, kan en SQL-databas (PostgreSQL, MySQL etc.) anvÀndas med ett litet antal skript som dirigerar data till lagret.

IT-jÀttar som Google, Amazon, Facebook eller Dropbox stÀller högre krav: kunskap om Python, Java eller Scala.

  • Erfarenhet av stora datamĂ€ngder: Hadoop, Spark, Kafka.
  • Kunskap om algoritmer och datastrukturer.
  • FörstĂ„else för grunderna i distribuerade system.
  • Erfarenhet av datavisualiseringsverktyg, sĂ„som Tableau eller ElasticSearch, Ă€r en stor fördel.

Det finns alltsÄ en tydlig förskjutning mot stora data, sÀrskilt i deras bearbetning under hög belastning. Dessa företag har höga krav pÄ systemets fel tolerance.

Dataingenjörer Vs. dataforskare

Vem Àr dataingenjörer, och hur blir man det?
Okej, det hÀr var en enkel och rolig jÀmförelse (inget personligt), men i verkligheten Àr det mycket mer komplicerat.

För det första mÄste du veta att det finns en hel del oklarhet kring skillnaderna mellan rollerna och fÀrdigheterna hos dataforskare och dataingenjörer. Det vill sÀga, du kan lÀtt bli förvirrad över vilka fÀrdigheter som verkligen behövs för att bli en framgÄngsrik dataingenjör. SjÀlvklart finns det vissa fÀrdigheter som överlappar mellan bÄda rollerna. Men det finns ocksÄ en rad diametralt motsatta fÀrdigheter.

Data science Àr en seriös affÀr, men vi gÄr mot en vÀrld med funktionell data science, dÀr praktiker Àr kapabla att göra sin egen analys. För att aktivera datarörledningar och integrerade datakonstruktioner behövs dataingenjörer snarare Àn forskare.

Är dataingenjörer mer eftertraktade Ă€n dataforskare?

— Ja, för innan du kan baka en morotskaka mĂ„ste du först samla, rengöra och förse dig med morötter!

En dataingenjör har bÀttre kunskaper i programmering Àn nÄgon data scientist, men nÀr det kommer till statistik Àr allt precis tvÀrtom.

Men hÀr Àr fördelen med en dataingenjör:

utan honom/henne strÀvar vÀrdet av prototypmodellen, som oftast bestÄr av en del av dÄlig kod i en Python-fil, erhÄllen frÄn data scientist och som pÄ nÄgot sÀtt ger ett resultat, mot noll.

Utan dataingenjören kommer den hÀr koden aldrig att bli ett projekt, och inget affÀrsproblem kommer att lösas effektivt. Dataingenjören försöker omvandla allt detta till en produkt.

Grunderna som varje dataingenjör bör kÀnna till

Vem Àr dataingenjörer, och hur blir man det?

SĂ„ om detta jobb vĂ€cker liv i dig och du Ă€r full av entusiasm — du kan lĂ€ra dig detta, du kan behĂ€rska alla nödvĂ€ndiga fĂ€rdigheter och bli en riktig rockstjĂ€rna inom datateknik. Och ja, du kan Ă„stadkomma detta Ă€ven utan programmeringsfĂ€rdigheter eller annan teknisk kunskap. Det Ă€r svĂ„rt, men möjligt!

Vad Àr första stegen?

Du mÄste ha en allmÀn uppfattning om vad som Àr vad.

Först och frĂ€mst handlar dataengineering om datavetenskap. Specifikt — du mĂ„ste förstĂ„ effektiva algoritmer och datastrukturer. För det andra, eftersom dataingenjörer arbetar med data, mĂ„ste det finnas en förstĂ„else för principerna bakom databaser och de strukturer som ligger till grund för dem.

Till exempel, vanliga B-tree SQL-databaser baseras pÄ datastrukturen B-Tree, och i moderna distribuerade förrÄd, LSM-Tree och andra varianter av hash-tabeller.

* Dessa steg baseras pÄ en fantastisk artikel Adil Hashtamov. SÄ om du kan ryska, stöd denna författare och lÀs hans inlÀgg.

1. Algoritmer och datastrukturer

Att anvÀnda rÀtt datastruktur kan avsevÀrt förbÀttra algoritmens prestanda. Idealiskt sett bör vi alla studera datastrukturer och algoritmer i vÄra skolor, men det Àr sÀllan som det lyfts fram. I vilket fall som helst Àr det aldrig för sent att bekanta sig.
SÄ hÀr Àr mina favoritgratiskurser för att lÀra sig datastrukturer och algoritmer:

Och glöm inte den klassiska boken om algoritmer av Thomas Cormen — Introduktion till algoritmer. Det Ă€r den perfekta referensen nĂ€r du behöver frĂ€scha upp ditt minne.

  • För att förbĂ€ttra dina fĂ€rdigheter, anvĂ€nd Leetcode.

Du kan ocksÄ dyka ner i databashanteringens vÀrld med fantastiska videor frÄn Carnegie Mellon University pÄ Youtube:

2. LĂ€r dig SQL

Hela vÄrt liv handlar om data. Och för att extrahera dessa data frÄn en databas mÄste du "prata" med dem pÄ samma sprÄk.

SQL (Structured Query Language — strukturerat frĂ„gesprĂ„k) Ă€r kommunikationssprĂ„ket inom datavĂ€rlden. Oavsett vad nĂ„gon sĂ€ger, SQL har funnits, finns fortfarande och kommer att finnas lĂ€nge framöver.

Om du har varit inom utveckling under en lÀngre tid har du förmodligen lagt mÀrke till att rykten om SQL:s snara död dyker upp dÄ och dÄ. SprÄket skapades i början av 70-talet och Àr fortfarande oerhört populÀrt bland analytiker, utvecklare och helt enkelt entusiaster.
Utan kunskap om SQL har du inget att göra inom datateknik, eftersom du oundvikligen kommer att behöva skapa frÄgor för att extrahera data. Alla moderna stora datalager stödjer SQL:

  • Amazon Redshift
  • HP Vertica
  • Oracle
  • SQL Server


 och mÄnga fler.

För att analysera stora datamÀngder lagrade i distribuerade system som HDFS, har SQL-mekanismer uppfunnits: Apache Hive, Impala osv. Ser du, det Àr inte pÄ vÀg att försvinna.

Hur lÀr man sig SQL? Gör det genom praktik.

För detta skulle jag rekommendera att ta en titt pÄ en utmÀrkt bok som för övrigt Àr gratis, av Mode Analytics.

  1. MellannivÄ SQL
  2. Sammanfogning av data i SQL

En utmÀrkande funktion hos dessa kurser Àr den interaktiva miljön dÀr du kan skriva och köra SQL-frÄgor direkt i webblÀsaren. Resursen Modern SQL kommer att vara anvÀndbar. Och du kan tillÀmpa dessa kunskaper i Leetcode-uppgifter i databassektionen.

3. Programmering i Python och Java/Scala

Varför du bör lÀra dig programmeringssprÄket Python har jag redan skrivit i artikeln Python vs R. VÀlja det bÀsta verktyget för AI, ML och Data Science. NÀr det gÀller Java och Scala Àr de flesta verktyg för lagring och bearbetning av stora datamÀngder skrivna pÄ dessa sprÄk. Till exempel:

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

För att förstĂ„ hur dessa verktyg fungerar behöver du veta vilka sprĂ„k de Ă€r skrivna i. Den funktionella ansatsen i Scala gör det möjligt att effektivt lösa problem med parallell databehandling. TyvĂ€rr kan Python inte skryta med samma hastighet och parallell bearbetning. Överlag pĂ„verkar kunskapen om flera sprĂ„k och programmeringsparadigm positivt bredden pĂ„ tillvĂ€gagĂ„ngssĂ€tten för att lösa problem.

För att dyka ner i sprĂ„ket Scala kan du lĂ€sa Programmering i Scala av sprĂ„kets skapare. Företaget Twitter har ocksĂ„ publicerat en bra introduktion — Scala School.

NÀr det gÀller Python anser jag att Fluent Python Àr den bÀsta boken pÄ medelnivÄ.

4. Verktyg för arbete med stora data

HÀr Àr en lista över de mest populÀra verktygen inom stora data:

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

Mer information om hur man bygger stora datamÀngder kan du hitta i denna fantastiska interaktiva miljö. De mest populÀra verktygen Àr Spark och Kafka. De Àr definitivt vÀrda att studera, och det Àr bra att förstÄ hur de fungerar inifrÄn. Jay Kreps (medförfattare till Kafka) publicerade 2013 ett monumentalt arbete The Log: vad varje mjukvaruutvecklare bör veta om abstraktionen av sammanslagning av data i realtid, för övrigt anvÀndes de grundlÀggande idéerna frÄn denna text för att skapa Apache Kafka.

5. Molnplattformar

Vem Àr dataingenjörer, och hur blir man det?

Att ha kunskap om minst en molnplattform Àr en grundlÀggande krav för kandidater till positionen som dataingenjör. Arbetsgivare föredrar Amazon Web Services, följt av Googles molnplattform och pÄ tredje plats Microsoft Azure.

Du bör ha god kÀnnedom om Amazon EC2, AWS Lambda, Amazon S3, DynamoDB.

6. Distribuerade system

Arbete med stora data innebÀr att man har kluster av sjÀlvstÀndigt fungerande datorer, vars kommunikation sker över nÀtverket. Ju större klustret Àr, desto större Àr risken för att vissa noder misslyckas. För att bli en duktig expert inom data behöver du förstÄ problemen och de befintliga lösningarna för distribuerade system. Detta omrÄde Àr gammalt och komplext.

Andrew Tanenbaum anses vara en pionjÀr inom detta omrÄde. För dem som inte Àr rÀdda för teori rekommenderar jag hans bok «Distribuerade system», för nybörjare kan den verka svÄr, men den kommer verkligen att hjÀlpa dig att finslipa dina fÀrdigheter.

Jag anser «Design av datadominerade applikationer» av Martin Kleppmann vara den bÀsta introduktionsboken. För övrigt har Martin en fantastisk bloggen. Hans arbete kommer att hjÀlpa till att systematisera kunskapen om att bygga modern infrastruktur för lagring och bearbetning av stora data.
För dem som gillar att titta pÄ videor finns det en kurs pÄ Youtube Distribuerade datorsystem.

7. Datapipelines

Vem Àr dataingenjörer, och hur blir man det?

Datapipelines Àr nÄgot du inte kan leva utan som dataingenjör.

Stor del av tiden bygger dataingenjören sÄ kallade datarörledningar, det vill sÀga skapar en process för att leverera data frÄn en plats till en annan. Det kan vara anvÀndarscenarier som gÄr till en API frÄn en extern tjÀnst eller gör SQL-frÄgor, kompletterar data och placerar dem i ett centraliserat datalager (databas) eller ett lager av ostrukturerade data (data lakes).

Sammanfattningsvis: den grundlÀggande checklistan för en dataingenjör

Vem Àr dataingenjörer, och hur blir man det?

LĂ„t oss sammanfatta — det krĂ€vs en god förstĂ„else för följande:

  • Informationssystem;
  • Programvaruutveckling (Agile, DevOps, Designtekniker, SOA);
  • Distribuerade system och parallellprogrammering;
  • Grunderna i databaser — planering, design, drift och felsökning;
  • Experimentdesign — A/B-tester för att bevisa koncept, bestĂ€mma pĂ„litlighet, systemprestanda, samt för att utveckla tillförlitliga vĂ€gar för operationell leverans av bra lösningar.

Detta Àr bara nÄgra krav för att bli dataingenjör, sÄ studera och förstÄ datorsystem, informationssystem, kontinuerlig leverans/deployment/integration, programmeringssprÄk och andra Àmnen inom datavetenskap (inte inom alla ÀmnesomrÄden).

Och, slutligen, det senaste, men mycket viktiga jag vill sÀga.

VÀgen till att bli Data Engineer Àr inte sÄ enkel som det kan verka. Den förlÄter inte, frustrerar, och du mÄste vara beredd pÄ detta. Vissa ögonblick pÄ denna resa kan fÄ dig att vilja ge upp. Men detta Àr verkligt arbete och en lÀrandeprocess.

Snygga inte till det frÄn början. Hela poÀngen med resan Àr att lÀra sig sÄ mycket som möjligt och vara redo för nya utmaningar.
HÀr Àr en fantastisk bild som jag stötte pÄ, som illustrerar denna punkt vÀl:

Vem Àr dataingenjörer, och hur blir man det?

Och ja, glöm inte att undvika utbrÀndhet och ta pauser. Det Àr ocksÄ mycket viktigt. Lycka till!

Vad tyckte ni om artikeln, vÀnner? Vi vÀlkomnar er till gratis webbinarie, som Àger rum idag klockan 20.00. Under webbinariet kommer vi att diskutera hur man bygger ett effektivt och skalbart system för databehandling för ett litet företag eller start-up med minimala kostnader. Som praktisk övning kommer vi att bekanta oss med verktyg för databehandling i Google Cloud. Vi ses!

KĂ€lla: habr.com

Köp pĂ„litlig webbhotell med DDoS-skydd, VPS VDS-servrar đŸ”„ Köp pĂ„litlig webbhotell med DDoS-skydd, VPS VDS-servrar | ProHoster