Wie zijn data-ingenieurs en hoe word je er één?

Welkom terug! De titel van het artikel spreekt voor zich. In afwachting van de start van de cursus Gegevens ingenieur We raden u aan te begrijpen wie data-ingenieurs zijn. Er staan ​​veel nuttige links in het artikel. Veel leesplezier.

Wie zijn data-ingenieurs en hoe word je er één?

Een eenvoudige handleiding over hoe u de golf van data-engineering kunt opvangen en u niet door de afgrond kunt laten meesleuren.

Het lijkt erop dat iedereen tegenwoordig Data Scientist wil worden. Maar hoe zit het met data-engineering? In wezen is dit een soort hybride van een data-analist en een datawetenschapper; Een data-ingenieur is doorgaans verantwoordelijk voor het beheer van workflows, verwerkingspijplijnen en ETL-processen. Vanwege het belang van deze functies is dit momenteel een ander populair vakjargon dat actief aan kracht wint.

Hoge salarissen en een enorme vraag zijn slechts een klein deel van wat deze baan uiterst aantrekkelijk maakt! Als je je wilt aansluiten bij de helden, is het nooit te laat om te beginnen met leren. In dit bericht heb ik alle benodigde informatie verzameld om u te helpen uw eerste stappen te zetten.

Laten we beginnen!

Wat is data-engineering?

Eerlijk gezegd is er geen betere verklaring dan deze:

“Een wetenschapper kan een nieuwe ster ontdekken, maar hij kan er geen creëren. Hij zal een ingenieur moeten vragen om het voor hem te doen."

–Gordon Lindsay Glegg

De rol van een data-ingenieur is dus behoorlijk belangrijk.

Zoals de naam al doet vermoeden, houdt data-engineering zich bezig met gegevens, namelijk de levering, opslag en verwerking ervan. Dienovereenkomstig is de belangrijkste taak van ingenieurs het bieden van een betrouwbare infrastructuur voor gegevens. Als we naar de AI-hiërarchie van behoeften kijken, beslaat data-engineering de eerste 2 à 3 fasen: verzameling, verplaatsing en opslag, gegevensvoorbereiding.

Wie zijn data-ingenieurs en hoe word je er één?

Wat doet een data-ingenieur?

Met de komst van big data is de reikwijdte van verantwoordelijkheid dramatisch veranderd. Terwijl deze experts voorheen grote SQL-query's schreven en data destilleerden met behulp van tools als Informatica ETL, Pentaho ETL en Talend, zijn de eisen voor data-ingenieurs nu toegenomen.

De meeste bedrijven met openstaande vacatures voor de functie van data engineer stellen de volgende eisen:

  • Uitstekende kennis van SQL en Python.
  • Ervaring met cloudplatforms, met name Amazon Web Services.
  • Bij voorkeur kennis van Java/Scala.
  • Goed begrip van SQL- en NoSQL-databases (datamodellering, datawarehousing).

Houd er rekening mee dat dit alleen de essentiële zaken zijn. Uit deze lijst kan worden aangenomen dat data engineers specialisten zijn op het gebied van softwareontwikkeling en backend.
Als een bedrijf bijvoorbeeld een grote hoeveelheid gegevens uit verschillende bronnen begint te genereren, is het jouw taak als data-ingenieur om het verzamelen van informatie, de verwerking en opslag ervan te organiseren.

De lijst met tools die in dit geval worden gebruikt, kan verschillen, het hangt allemaal af van het volume van deze gegevens, de snelheid van ontvangst en de heterogeniteit. De meeste bedrijven houden zich helemaal niet bezig met big data, dus als gecentraliseerde repository, een zogenaamd datawarehouse, kun je een SQL-database (PostgreSQL, MySQL, enz.) gebruiken met een kleine set scripts die de gegevens in de database invoeren. het warenhuis.

IT-giganten als Google, Amazon, Facebook of Dropbox stellen hogere eisen: kennis van Python, Java of Scala.

  • Ervaring met big data: Hadoop, Spark, Kafka.
  • Kennis van algoritmen en datastructuren.
  • Inzicht in de basisprincipes van gedistribueerde systemen.
  • Ervaring met datavisualisatietools zoals Tableau of ElasticSearch is een pluspunt.

Dat wil zeggen, er is een duidelijke verschuiving richting big data, namelijk bij de verwerking ervan onder hoge belasting. Deze bedrijven stellen hogere eisen aan systeemfouttolerantie.

Data-ingenieurs versus. data wetenschappers

Wie zijn data-ingenieurs en hoe word je er één?
Oké, dat was een simpele en grappige vergelijking (niets persoonlijks), maar in werkelijkheid is het veel ingewikkelder.

Ten eerste moet je weten dat er veel onduidelijkheid bestaat in de afbakening van de rollen en vaardigheden van een datawetenschapper en een data-ingenieur. Dat wil zeggen dat u gemakkelijk in de war kunt raken over welke vaardigheden nodig zijn om een ​​succesvolle data-ingenieur te zijn. Natuurlijk zijn er bepaalde vaardigheden die beide rollen overlappen. Maar er zijn ook een aantal diametraal tegenovergestelde vaardigheden.

Datawetenschap is een serieuze zaak, maar we evolueren naar een wereld van functionele datawetenschap waarin praktijkmensen hun eigen analyses kunnen uitvoeren. Om datapipelines en geïntegreerde datastructuren mogelijk te maken, heb je data-ingenieurs nodig, geen datawetenschappers.

Is er meer vraag naar een data-ingenieur dan een datawetenschapper?

- Ja, want voordat je carrotcake kunt maken, moet je eerst wortels verzamelen, schillen en bewaren!

Een data-ingenieur begrijpt programmeren beter dan welke datawetenschapper dan ook, maar als het om statistiek gaat, is het tegenovergestelde waar.

Maar hier is het voordeel van een data-ingenieur:

Zonder hem/haar neigt de waarde van het prototypemodel, dat meestal bestaat uit een stukje code van slechte kwaliteit in een Python-bestand, verkregen van een datawetenschapper en op de een of andere manier een resultaat oplevert, tot nul.

Zonder een data-engineer zal deze code nooit een project worden en zal geen enkel zakelijk probleem effectief worden opgelost. De data engineer probeert dit allemaal om te zetten in een product.

Basisinformatie die een data-ingenieur zou moeten weten

Wie zijn data-ingenieurs en hoe word je er één?

Dus als deze baan het licht in jou naar boven brengt en je enthousiast bent, kun je het leren, kun je alle benodigde vaardigheden onder de knie krijgen en een echte rockster worden op het gebied van data-engineering. En ja, je kunt dit zelfs zonder programmeervaardigheden of andere technische kennis voor elkaar krijgen. Het is moeilijk, maar mogelijk!

Wat zijn de eerste stappen?

Je moet een algemeen idee hebben van wat wat is.

Data Engineering verwijst in de eerste plaats naar informatica. Meer specifiek moet u efficiënte algoritmen en datastructuren begrijpen. Ten tweede is het, omdat data-ingenieurs met data werken, noodzakelijk om de principes van databases en de structuren die daaraan ten grondslag liggen te begrijpen.

Conventionele B-tree SQL-databases zijn bijvoorbeeld gebaseerd op de B-Tree-datastructuur, evenals, in moderne gedistribueerde repositories, LSM-Tree en andere wijzigingen van hash-tabellen.

*Deze stappen zijn gebaseerd op een geweldig artikel Adilia Chasjtamova. Dus als je Russisch kent, steun dan deze auteur en lees zijn post.

1. Algoritmen en datastructuren

Het gebruik van de juiste datastructuur kan de prestaties van een algoritme aanzienlijk verbeteren. Idealiter zouden we allemaal op onze scholen moeten leren over datastructuren en algoritmen, maar dit komt zelden aan bod. Het is in ieder geval nooit te laat om kennis te maken.
Dus hier zijn mijn favoriete gratis cursussen voor het leren van datastructuren en algoritmen:

En vergeet het klassieke werk van Thomas Corman over algoritmen niet: Inleiding tot algoritmen. Dit is het perfecte naslagwerk als u uw geheugen wilt opfrissen.

  • Gebruik om uw vaardigheden te verbeteren Leetcode.

Je kunt ook een duik nemen in de wereld van databases met geweldige video's van Carnegie Mellon University op YouTube:

2. Leer SQL

Ons hele leven bestaat uit data. En om deze data uit de database te halen, moet je er dezelfde taal mee ‘spreken’.

SQL (Structured Query Language) is de communicatietaal in het datadomein. Ongeacht wat iemand zegt, SQL heeft geleefd, leeft en zal nog heel lang leven.

Als je al een lange tijd in ontwikkeling bent, heb je waarschijnlijk gemerkt dat er regelmatig geruchten opduiken over de aanstaande dood van SQL. De taal is begin jaren 70 ontwikkeld en is nog steeds erg populair onder analisten, ontwikkelaars en gewoonweg enthousiastelingen.
Zonder kennis van SQL is er niets te doen in data-engineering, omdat je onvermijdelijk queries zult moeten maken om gegevens op te halen. Alle moderne big data-warehouses ondersteunen SQL:

  • Amazon roodverschuiving
  • HP Vertica
  • Oracle
  • SQL Server

... en vele anderen.

Om een ​​grote laag gegevens te analyseren die zijn opgeslagen in gedistribueerde systemen zoals HDFS, zijn SQL-engines uitgevonden: Apache Hive, Impala, enz. Kijk, het gaat nergens heen.

Hoe SQL leren? Doe het gewoon in de praktijk.

Om dit te doen, raad ik je aan een uitstekende tutorial te bekijken, die trouwens gratis is Modusanalyse.

  1. Middelmatige SQL
  2. Gegevens samenvoegen in SQL

Wat deze cursussen bijzonder maakt, is dat ze een interactieve omgeving hebben waarin u SQL-query's rechtstreeks in uw browser kunt schrijven en uitvoeren. Bron Moderne SQL zal niet overbodig zijn. En jij kunt deze kennis toepassen Leetcode-taken in de sectie Databases.

3. Programmeren in Python en Java/Scala

Waarom je de programmeertaal Python zou moeten leren, schreef ik al in het artikel Python versus R. Het kiezen van de beste tool voor AI, ML en Data Science. Als het om Java en Scala gaat, zijn de meeste tools voor het opslaan en verwerken van grote hoeveelheden gegevens in deze talen geschreven. Bijvoorbeeld:

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

Om te begrijpen hoe deze tools werken, moet u de talen kennen waarin ze zijn geschreven. Dankzij de functionele aanpak van Scala lost u parallelle gegevensverwerkingsproblemen effectief op. Python kan helaas niet bogen op snelheid en parallelle verwerking. Over het algemeen is kennis van verschillende talen en programmeerparadigma's goed voor de breedte van de benadering van het oplossen van problemen.

Om in de Scala-taal te duiken, kun je lezen Programmeren in Scala van de auteur van de taal. Twitter publiceerde ook een goede introductiegids: Scala-school.

Wat Python betreft, geloof ik Vloeiende Python beste boek op middenniveau.

4. Tools voor het werken met big data

Hier is een lijst met de meest populaire tools in de wereld van big data:

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

Meer informatie over het bouwen van grote datablokken vindt u in dit geweldige interactieve omgeving. De meest populaire tools zijn Spark en Kafka. Ze zijn zeker de moeite waard om te bestuderen, het is raadzaam om te begrijpen hoe ze van binnenuit werken. Jay Kreps (co-auteur van Kafka) publiceerde in 2013 een monumentaal werk Het logboek: wat elke softwareontwikkelaar moet weten over real-time gegevensaggregatie-abstractieOverigens werden de belangrijkste ideeën uit deze Talmoed gebruikt om Apache Kafka te creëren.

5. Cloudplatforms

Wie zijn data-ingenieurs en hoe word je er één?

Kennis van minimaal één cloudplatform staat op de lijst met basisvereisten voor sollicitanten voor de functie van data engineer. Werkgevers geven de voorkeur aan Amazon Web Services, waarbij het cloudplatform van Google op de tweede plaats staat en Microsoft Azure de top drie completeert.

Je moet een goede kennis hebben van Amazon EC2, AWS Lambda, Amazon S3, DynamoDB.

6. Gedistribueerde systemen

Werken met big data impliceert de aanwezigheid van clusters van onafhankelijk werkende computers, waarvan de communicatie via een netwerk plaatsvindt. Hoe groter het cluster, hoe groter de kans op falen van de aangesloten knooppunten. Om een ​​geweldige datawetenschapper te worden, moet je de problemen en bestaande oplossingen voor gedistribueerde systemen begrijpen. Dit gebied is oud en complex.

Andrew Tanenbaum wordt beschouwd als een pionier op dit gebied. Voor degenen die niet bang zijn voor theorie, raad ik zijn boek aan "Gedistribueerde systemen", het lijkt misschien intimiderend voor beginners, maar het zal je echt helpen je vaardigheden aan te scherpen.

ik denk Ontwerpen van data-intensieve applicaties door Martin Kleppmann beste introductieboek. Martin heeft trouwens een prachtige blog. Zijn werk zal helpen bij het systematiseren van kennis over het bouwen van een moderne infrastructuur voor het opslaan en verwerken van big data.
Voor wie graag filmpjes kijkt, is er een cursus op Youtube Gedistribueerde computersystemen.

7. Datapijplijnen

Wie zijn data-ingenieurs en hoe word je er één?

Datapipelines zijn iets waar je als data engineer niet zonder kunt.

Meestal bouwt een data-ingenieur een zogenaamde datapijplijn, dat wil zeggen dat hij een proces creëert voor het leveren van gegevens van de ene plaats naar de andere. Dit kunnen aangepaste scripts zijn die naar de API van een externe service gaan of een SQL-query maken, de gegevens aanvullen en deze in een gecentraliseerde opslag (datawarehouse) of een ongestructureerde dataopslag (datameren) plaatsen.

Samenvattend: de basischecklist voor een data engineer

Wie zijn data-ingenieurs en hoe word je er één?

Samenvattend is een goed begrip van het volgende vereist:

  • Informatie Systemen;
  • Softwareontwikkeling (Agile, DevOps, Ontwerptechnieken, SOA);
  • Gedistribueerde systemen en parallelle programmering;
  • Basisprincipes van databases - planning, ontwerp, bediening en probleemoplossing;
  • Ontwerp van experimenten - A/B-tests om concepten te bewijzen, de betrouwbaarheid en systeemprestaties te bepalen en betrouwbare paden te ontwikkelen om snel goede oplossingen te leveren.

Dit zijn slechts enkele van de vereisten om data-ingenieur te worden, dus leer en begrijp datasystemen, informatiesystemen, continue levering/implementatie/integratie, programmeertalen en andere computerwetenschappelijke onderwerpen (niet alle vakgebieden).

En tot slot het laatste maar zeer belangrijke wat ik wil zeggen.

De weg naar Data Engineering is niet zo eenvoudig als het lijkt. Hij vergeeft niet, hij frustreert, en daar moet je op voorbereid zijn. Sommige momenten tijdens deze reis kunnen je ertoe aanzetten om op te geven. Maar dit is echt werk en een leerproces.

Bedek het gewoon niet vanaf het begin. Het hele punt van reizen is om zoveel mogelijk te leren en klaar te zijn voor nieuwe uitdagingen.
Hier is een geweldige foto die ik tegenkwam en die dit punt goed illustreert:

Wie zijn data-ingenieurs en hoe word je er één?

En ja, vergeet niet om burn-out en rust te vermijden. Dit is ook erg belangrijk. Succes!

Wat vinden jullie van het artikel, vrienden? Wij nodigen u uit om gratis webinar, die vandaag om 20.00 uur plaatsvindt. Tijdens het webinar bespreken we hoe je tegen minimale kosten een effectief en schaalbaar gegevensverwerkingssysteem kunt bouwen voor een klein bedrijf of startup. In de praktijk maken we kennis met de dataverwerkingstools van Google Cloud. Tot snel!

Bron: www.habr.com

Voeg een reactie