Hvem er dataingeniører, og hvordan blir du det?

Hallo igjen! Tittelen på artikkelen taler for seg selv. I påvente av kursstart Dataingeniør Vi foreslår at du forstår hvem dataingeniører er. Det er mange nyttige linker i artikkelen. God lesning.

Hvem er dataingeniører, og hvordan blir du det?

En enkel guide til hvordan du fanger Data Engineering-bølgen og ikke lar den dra deg ned i avgrunnen.

Det virker som om alle ønsker å bli dataforskere i disse dager. Men hva med Data Engineering? I hovedsak er dette en slags hybrid av en dataanalytiker og en dataforsker; En dataingeniør er vanligvis ansvarlig for å administrere arbeidsflyter, behandle rørledninger og ETL-prosesser. På grunn av viktigheten av disse funksjonene, er dette for tiden en annen populær fagsjargong som aktivt får fart.

Høye lønninger og stor etterspørsel er bare en liten del av det som gjør denne jobben ekstremt attraktiv! Hvis du vil slutte deg til rekkene av helter, er det aldri for sent å begynne å lære. I dette innlegget har jeg samlet all nødvendig informasjon for å hjelpe deg med å ta dine første skritt.

Så la oss komme i gang!

Hva er datateknikk?

Ærlig talt, det er ingen bedre forklaring enn dette:

"En vitenskapsmann kan oppdage en ny stjerne, men han kan ikke skape en. Han må be en ingeniør om å gjøre det for ham."

–Gordon Lindsay Glegg

Dermed er rollen til en dataingeniør ganske betydelig.

Som navnet antyder, er datateknikk opptatt av data, nemlig levering, lagring og prosessering. Derfor er hovedoppgaven til ingeniører å tilby en pålitelig infrastruktur for data. Hvis vi ser på AI-hierarkiet av behov, opptar datateknikk de første 2–3 stadiene: innsamling, flytting og lagring, dataforberedelse.

Hvem er dataingeniører, og hvordan blir du det?

Hva gjør en dataingeniør?

Med bruken av big data har omfanget av ansvar endret seg dramatisk. Hvis disse ekspertene tidligere skrev store SQL-spørringer og destillerte data ved hjelp av verktøy som Informatica ETL, Pentaho ETL, Talend, har nå kravene til dataingeniører økt.

De fleste bedrifter med ledige stillinger for stillingen som dataingeniør har følgende krav:

  • Gode ​​kunnskaper om SQL og Python.
  • Erfaring med skyplattformer, spesielt Amazon Web Services.
  • Kunnskap om Java/Scala foretrekkes.
  • God forståelse av SQL og NoSQL databaser (datamodellering, datavarehus).

Husk at dette bare er det viktigste. Fra denne listen kan det antas at dataingeniører er spesialister innen programvareutvikling og backend.
For eksempel, hvis et selskap begynner å generere en stor mengde data fra ulike kilder, er oppgaven din som dataingeniør å organisere innsamlingen av informasjon, behandlingen og lagringen av den.

Listen over verktøy som brukes i dette tilfellet kan variere, alt avhenger av volumet av disse dataene, hastigheten på mottaket og heterogenitet. De fleste bedrifter har ikke med big data å gjøre i det hele tatt, så som et sentralisert depot, et såkalt datavarehus, kan du bruke en SQL-database (PostgreSQL, MySQL osv.) med et lite sett med skript som mater dataene inn i varehuset.

IT-giganter som Google, Amazon, Facebook eller Dropbox har høyere krav: kunnskap om Python, Java eller Scala.

  • Erfaring med big data: Hadoop, Spark, Kafka.
  • Kjennskap til algoritmer og datastrukturer.
  • Forstå det grunnleggende om distribuerte systemer.
  • Erfaring med datavisualiseringsverktøy som Tableau eller ElasticSearch vil være en fordel.

Det vil si at det er et klart skifte mot big data, nemlig i behandlingen av den under høy belastning. Disse selskapene har økte krav til systemfeiltoleranse.

Dataingeniører vs. dataforskere

Hvem er dataingeniører, og hvordan blir du det?
Ok, det var en enkel og morsom sammenligning (ikke noe personlig), men i virkeligheten er det mye mer komplisert.

Først bør du vite at det er mye tvetydighet i avgrensningen av rollene og ferdighetene til en dataforsker og en dataingeniør. Det vil si at du lett kan bli forvirret over hvilke ferdigheter som trengs for å bli en vellykket dataingeniør. Selvfølgelig er det visse ferdigheter som overlapper med begge rollene. Men det er også en rekke diametralt motsatte ferdigheter.

Datavitenskap er seriøs virksomhet, men vi beveger oss mot en verden av funksjonell datavitenskap hvor praktikere er i stand til å gjøre sine egne analyser. For å aktivere datapipelines og integrerte datastrukturer trenger du dataingeniører, ikke dataforskere.

Er en dataingeniør mer etterspurt enn en dataforsker?

– Ja, for før du kan lage gulrotkake, må du først samle, skrelle og lager gulrøtter!

En dataingeniør forstår programmering bedre enn noen dataforsker, men når det kommer til statistikk, er det motsatte sant.

Men her er fordelen med en dataingeniør:

Uten ham/henne vil verdien av prototypemodellen, som oftest består av et stykke forferdelig kvalitetskode i en Python-fil, hentet fra en dataforsker og på en eller annen måte produsere et resultat, være null.

Uten en dataingeniør vil denne koden aldri bli et prosjekt, og ingen forretningsproblemer vil bli effektivt løst. Dataingeniøren prøver å gjøre alt dette om til et produkt.

Grunnleggende informasjon en dataingeniør bør vite

Hvem er dataingeniører, og hvordan blir du det?

Så hvis denne jobben får frem lyset i deg og du er entusiastisk - du kan lære det, du kan mestre alle nødvendige ferdigheter og bli en ekte rockestjerne innen datateknikk. Og ja, du kan klare dette selv uten programmeringskunnskaper eller annen teknisk kunnskap. Det er vanskelig, men mulig!

Hva er de første trinnene?

Du bør ha en generell ide om hva som er hva.

Først av alt refererer Data Engineering til informatikk. Mer spesifikt må du forstå effektive algoritmer og datastrukturer. For det andre, siden dataingeniører jobber med data, er det nødvendig å forstå prinsippene for databaser og strukturene som ligger til grunn for dem.

For eksempel er konvensjonelle B-tree SQL-databaser basert på B-Tree-datastrukturen, så vel som, i moderne distribuerte depoter, LSM-Tree og andre modifikasjoner av hash-tabeller.

*Disse trinnene er basert på en flott artikkel Adilya Khashtamova. Så hvis du kan russisk, støtt denne forfatteren og les innlegget hans.

1. Algoritmer og datastrukturer

Bruk av riktig datastruktur kan forbedre ytelsen til en algoritme betydelig. Ideelt sett burde vi alle lære om datastrukturer og algoritmer på skolene våre, men dette er sjelden dekket. I alle fall er det aldri for sent å bli kjent.
Så her er mine favorittgratiskurs for å lære datastrukturer og algoritmer:

Ikke glem Thomas Cormans klassiske arbeid med algoritmer - Introduksjon til algoritmer. Dette er den perfekte referansen når du trenger å friske opp hukommelsen.

  • For å forbedre ferdighetene dine, bruk Leetcode.

Du kan også dykke inn i databasenes verden med fantastiske videoer fra Carnegie Mellon University på Youtube:

2. Lær deg SQL

Hele livet vårt er data. Og for å trekke ut disse dataene fra databasen, må du "snakke" samme språk med den.

SQL (Structured Query Language) er kommunikasjonsspråket i datadomenet. Uansett hva noen sier, har SQL levd, er i live og vil leve i veldig lang tid.

Hvis du har vært i utvikling lenge, har du sikkert lagt merke til at rykter om den nært forestående døden til SQL dukker opp med jevne mellomrom. Språket ble utviklet på begynnelsen av 70-tallet og er fortsatt veldig populært blant analytikere, utviklere og rett og slett entusiaster.
Uten kunnskap om SQL er det ingenting å gjøre innen datateknikk, da du uunngåelig må lage spørringer for å hente data. Alle moderne stordatavarehus støtter SQL:

  • Amazon RedShift
  • HP Vertica
  • Oracle
  • SQL Server

... og mange andre.

For å analysere et stort lag med data lagret i distribuerte systemer som HDFS, ble SQL-motorer oppfunnet: Apache Hive, Impala, osv. Ser du, det går ingen vei.

Hvordan lære SQL? Bare gjør det i praksis.

For å gjøre dette, vil jeg anbefale å sjekke ut en utmerket opplæring, som forresten er gratis fra Modusanalyse.

  1. Mellomliggende SQL
  2. Sammenføyning av data i SQL

Det som gjør disse kursene spesielle er at de har et interaktivt miljø hvor du kan skrive og kjøre SQL-spørringer rett i nettleseren din. Ressurs Moderne SQL vil ikke være overflødig. Og du kan bruke denne kunnskapen til Leetcode oppgaver i Databaser-delen.

3. Programmering i Python og Java/Scala

Hvorfor du bør lære programmeringsspråket Python, skrev jeg allerede i artikkelen Python vs R. Velge det beste verktøyet for AI, ML og datavitenskap. Når det gjelder Java og Scala, er de fleste verktøyene for lagring og behandling av store datamengder skrevet på disse språkene. For eksempel:

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

For å forstå hvordan disse verktøyene fungerer, må du kjenne til språkene de er skrevet på. Scalas funksjonelle tilnærming lar deg effektivt løse parallelle databehandlingsproblemer. Python kan dessverre ikke skryte av hastighet og parallell prosessering. Generelt sett er kunnskap om flere språk og programmeringsparadigmer bra for bredden av tilnærminger til problemløsning.

For å dykke inn i Scala-språket kan du lese Programmering i Scala fra forfatteren av språket. Twitter publiserte også en god introduksjonsguide - Scala skole.

Når det gjelder Python, tror jeg Flytende Python beste mellomnivåbok.

4. Verktøy for å jobbe med big data

Her er en liste over de mest populære verktøyene i big data-verdenen:

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

Du kan finne mer informasjon om å bygge store datablokker i denne fantastiske interaktivt miljø. De mest populære verktøyene er Spark og Kafka. De er definitivt verdt å studere, det er tilrådelig å forstå hvordan de fungerer fra innsiden. Jay Kreps (medforfatter av Kafka) publiserte et monumentalt verk i 2013 Loggen: Hva enhver programvareutvikler bør vite om sanntidsdataaggregasjonsabstraksjonHovedideene fra denne Talmud ble forresten brukt til å lage Apache Kafka.

5. Skyplattformer

Hvem er dataingeniører, og hvordan blir du det?

Kunnskap om minst én skyplattform står på listen over grunnleggende krav for søkere til stillingen som dataingeniør. Arbeidsgivere foretrekker Amazon Web Services, med Googles skyplattform på andreplass og Microsoft Azure avrunder topp tre.

Du må ha god kjennskap til Amazon EC2, AWS Lambda, Amazon S3, DynamoDB.

6. Distribuerte systemer

Å jobbe med big data innebærer tilstedeværelsen av klynger av uavhengig opererende datamaskiner, kommunikasjon mellom disse utføres over et nettverk. Jo større klyngen er, desto større er sannsynligheten for feil på medlemsnodene. For å bli en stor dataforsker må du forstå problemene og eksisterende løsninger for distribuerte systemer. Dette området er gammelt og komplekst.

Andrew Tanenbaum regnes som en pioner på dette feltet. For de som ikke er redde for teori, anbefaler jeg boken hans "Distribuerte systemer", kan det virke skremmende for nybegynnere, men det vil virkelig hjelpe deg å finpusse ferdighetene dine.

jeg tror Designing av dataintensive applikasjoner av Martin Kleppmann beste introduksjonsbok. Martin har forresten en fantastisk blogg. Arbeidet hans skal bidra til å systematisere kunnskap om å bygge en moderne infrastruktur for lagring og behandling av big data.
For de som liker å se videoer er det kurs på Youtube Distribuerte datasystemer.

7. Datarørledninger

Hvem er dataingeniører, og hvordan blir du det?

Datapipelines er noe du ikke kan leve uten som dataingeniør.

Mesteparten av tiden bygger en dataingeniør en såkalt datapipeline, det vil si at han lager en prosess for å levere data fra et sted til et annet. Dette kan være tilpassede skript som går til en ekstern tjenestes API eller lager en SQL-spørring, utvider dataene og legger dem inn i et sentralisert lager (datavarehus) eller et ustrukturert datalager (datainnsjøer).

For å oppsummere: den grunnleggende sjekklisten for en dataingeniør

Hvem er dataingeniører, og hvordan blir du det?

For å oppsummere kreves det en god forståelse av følgende:

  • Informasjonssystemer;
  • Programvareutvikling (Agile, DevOps, Design Techniques, SOA);
  • Distribuerte systemer og parallell programmering;
  • Grunnleggende om databasen - Planlegging, design, drift og feilsøking;
  • Design av eksperimenter - A/B-tester for å bevise konsepter, bestemme pålitelighet, systemytelse og utvikle pålitelige veier for å levere gode løsninger raskt.

Dette er bare noen av kravene for å bli dataingeniør, så lær og forstå datasystemer, informasjonssystemer, kontinuerlig levering/distribusjon/integrasjon, programmeringsspråk og andre datavitenskapelige emner (ikke alle fagområder).

Og til slutt, den siste, men veldig viktige tingen jeg vil si.

Veien til å bli Data Engineering er ikke så enkel som den kan virke. Han tilgir ikke, han frustrerer, og du må være forberedt på dette. Noen øyeblikk på denne reisen kan presse deg til å gi opp. Men dette er virkelig arbeid og en læringsprosess.

Bare ikke sukkerbelegg det fra starten av. Hele poenget med å reise er å lære så mye som mulig og være klar for nye utfordringer.
Her er et flott bilde jeg kom over som illustrerer dette poenget godt:

Hvem er dataingeniører, og hvordan blir du det?

Og ja, husk å unngå utbrenthet og hvile. Dette er også veldig viktig. Lykke til!

Hva synes dere om artikkelen, venner? Vi inviterer deg til gratis webinar, som finner sted i dag kl 20.00. Under webinaret vil vi diskutere hvordan man bygger et effektivt og skalerbart databehandlingssystem for en liten bedrift eller oppstart til minimale kostnader. Som praksis vil vi bli kjent med Google Clouds databehandlingsverktøy. Ser deg!

Kilde: www.habr.com

Legg til en kommentar