Sino ang mga inhinyero ng data, at paano ka magiging isa?

Hello ulit! Ang pamagat ng artikulo ay nagsasalita para sa sarili nito. Sa paghihintay sa pagsisimula ng kurso Data Engineer Iminumungkahi naming maunawaan mo kung sino ang mga inhinyero ng data. Mayroong maraming mga kapaki-pakinabang na link sa artikulo. Masayang pagbabasa.

Sino ang mga inhinyero ng data, at paano ka magiging isa?

Isang simpleng gabay sa kung paano mahuli ang Data Engineering wave at huwag hayaan itong i-drag ka sa bangin.

Parang lahat ay gustong maging Data Scientist sa mga araw na ito. Ngunit ano ang tungkol sa Data Engineering? Mahalaga, ito ay isang uri ng hybrid ng isang data analyst at isang data scientist; Ang isang data engineer ay karaniwang responsable para sa pamamahala ng mga daloy ng trabaho, pagproseso ng mga pipeline, at mga proseso ng ETL. Dahil sa kahalagahan ng mga function na ito, ito ay kasalukuyang isa pang sikat na propesyonal na jargon na aktibong nakakakuha ng momentum.

Ang mataas na suweldo at malaking demand ay isang maliit na bahagi lamang ng kung bakit lubhang kaakit-akit ang trabahong ito! Kung gusto mong sumali sa hanay ng mga bayani, hindi pa huli ang lahat para simulan ang pag-aaral. Sa post na ito, nakolekta ko ang lahat ng kinakailangang impormasyon upang matulungan kang gawin ang iyong mga unang hakbang.

Kaya, magsimula na tayo!

Ano ang Data Engineering?

Sa totoo lang, walang mas mahusay na paliwanag kaysa dito:

"Ang isang siyentipiko ay maaaring makatuklas ng isang bagong bituin, ngunit hindi siya makakalikha ng isa. Kailangan niyang hilingin sa isang engineer na gawin ito para sa kanya."

–Gordon Lindsay Glegg

Kaya, ang papel ng isang data engineer ay medyo makabuluhan.

Tulad ng iminumungkahi ng pangalan, ang data engineering ay nababahala sa data, katulad ng paghahatid, pag-iimbak at pagproseso nito. Alinsunod dito, ang pangunahing gawain ng mga inhinyero ay magbigay ng maaasahang imprastraktura para sa data. Kung titingnan natin ang AI ​​hierarchy ng mga pangangailangan, ang data engineering ay sumasakop sa unang 2-3 yugto: koleksyon, paggalaw at imbakan, paghahanda ng data.

Sino ang mga inhinyero ng data, at paano ka magiging isa?

Ano ang ginagawa ng isang data engineer?

Sa pagdating ng malaking data, kapansin-pansing nagbago ang saklaw ng responsibilidad. Kung dati ang mga ekspertong ito ay sumulat ng malalaking SQL query at distilled data gamit ang mga tool tulad ng Informatica ETL, Pentaho ETL, Talend, ngayon ay tumaas ang mga kinakailangan para sa mga data engineer.

Karamihan sa mga kumpanyang may bukas na bakante para sa posisyon ng data engineer ay may mga sumusunod na kinakailangan:

  • Napakahusay na kaalaman sa SQL at Python.
  • Karanasan sa mga cloud platform, partikular sa Amazon Web Services.
  • Mas gusto ang kaalaman sa Java/Scala.
  • Mahusay na pag-unawa sa mga database ng SQL at NoSQL (pagmomodelo ng data, warehousing ng data).

Tandaan, ito lamang ang mga mahahalaga. Mula sa listahang ito, maaaring ipagpalagay na ang mga inhinyero ng data ay mga espesyalista sa larangan ng software development at backend.
Halimbawa, kung ang isang kumpanya ay nagsimulang bumuo ng isang malaking halaga ng data mula sa iba't ibang mga mapagkukunan, ang iyong gawain bilang isang inhinyero ng data ay ayusin ang koleksyon ng impormasyon, pagproseso at pag-iimbak nito.

Ang listahan ng mga tool na ginamit sa kasong ito ay maaaring magkakaiba, ang lahat ay nakasalalay sa dami ng data na ito, ang bilis ng pagtanggap nito at heterogeneity. Karamihan sa mga kumpanya ay hindi nakikitungo sa malaking data, kaya bilang isang sentralisadong repositoryo, isang tinatawag na data warehouse, maaari kang gumamit ng SQL database (PostgreSQL, MySQL, atbp.) na may maliit na hanay ng mga script na nagpapakain ng data sa ang warehouse.

Ang mga higanteng IT tulad ng Google, Amazon, Facebook o Dropbox ay may mas mataas na mga kinakailangan: kaalaman sa Python, Java o Scala.

  • Karanasan sa malaking data: Hadoop, Spark, Kafka.
  • Kaalaman sa mga algorithm at istruktura ng data.
  • Pag-unawa sa mga pangunahing kaalaman ng mga distributed system.
  • Ang karanasan sa mga tool sa visualization ng data gaya ng Tableau o ElasticSearch ay magiging isang plus.

Iyon ay, mayroong isang malinaw na paglipat patungo sa malaking data, lalo na sa pagproseso nito sa ilalim ng mataas na pagkarga. Ang mga kumpanyang ito ay nagtaas ng mga kinakailangan para sa system fault tolerance.

Mga Inhinyero ng Data vs. data scientist

Sino ang mga inhinyero ng data, at paano ka magiging isa?
Okay, iyon ay isang simple at nakakatawang paghahambing (walang personalan), ngunit sa katotohanan ito ay mas kumplikado.

Una, dapat mong malaman na mayroong maraming kalabuan sa delineasyon ng mga tungkulin at kasanayan ng isang data scientist at isang data engineer. Iyon ay, madali kang malito tungkol sa kung anong mga kasanayan ang kailangan upang maging isang matagumpay na inhinyero ng data. Siyempre, may ilang mga kasanayan na magkakapatong sa parehong mga tungkulin. Ngunit mayroon ding isang bilang ng mga kasanayang salungat na dyametro.

Ang agham ng data ay seryosong negosyo, ngunit tayo ay patungo sa isang mundo ng functional na data science kung saan nagagawa ng mga practitioner ang kanilang sariling analytics. Upang paganahin ang mga pipeline ng data at pinagsama-samang istruktura ng data, kailangan mo ng mga inhinyero ng data, hindi mga data scientist.

Mas in demand ba ang isang data engineer kaysa sa isang data scientist?

- Oo, dahil bago ka makagawa ng carrot cake, kailangan mo munang mangolekta, magbalat at mag-stock ng mga karot!

Mas naiintindihan ng isang data engineer ang programming kaysa sa sinumang data scientist, ngunit pagdating sa mga istatistika, ang kabaligtaran ay totoo.

Ngunit narito ang bentahe ng isang data engineer:

Kung wala siya, ang halaga ng modelo ng prototype, kadalasang binubuo ng isang piraso ng kahila-hilakbot na kalidad ng code sa isang Python file, na nakuha mula sa isang data scientist at kahit papaano ay gumagawa ng isang resulta, ay may posibilidad na maging zero.

Kung walang data engineer, ang code na ito ay hindi kailanman magiging isang proyekto at walang problema sa negosyo ang epektibong malulutas. Sinusubukan ng data engineer na gawing produkto ang lahat ng ito.

Pangunahing impormasyon na dapat malaman ng isang data engineer

Sino ang mga inhinyero ng data, at paano ka magiging isa?

Kaya, kung ang trabahong ito ay nagdudulot ng liwanag sa iyo at ikaw ay masigasig - matututunan mo ito, maaari mong master ang lahat ng kinakailangang mga kasanayan at maging isang tunay na rock star sa larangan ng data engineering. At, oo, maaari mong gawin ito kahit na walang mga kasanayan sa programming o iba pang teknikal na kaalaman. Mahirap, ngunit posible!

Ano ang mga unang hakbang?

Dapat kang magkaroon ng pangkalahatang ideya kung ano ang ano.

Una sa lahat, ang Data Engineering ay tumutukoy sa computer science. Higit na partikular, dapat mong maunawaan ang mahusay na mga algorithm at istruktura ng data. Pangalawa, dahil ang mga inhinyero ng data ay nagtatrabaho sa data, kinakailangan na maunawaan ang mga prinsipyo ng mga database at ang mga istrukturang sumasailalim sa mga ito.

Halimbawa, ang mga maginoo na database ng B-tree SQL ay batay sa istraktura ng data ng B-Tree, gayundin, sa mga modernong ibinahagi na repository, LSM-Tree at iba pang mga pagbabago ng mga hash table.

*Ang mga hakbang na ito ay batay sa isang mahusay na artikulo Adilya Khashtamova. Kaya, kung alam mo ang Russian, suportahan ang may-akda na ito at basahin kanyang post.

1. Algorithm at istruktura ng data

Ang paggamit ng tamang istraktura ng data ay maaaring makabuluhang mapabuti ang pagganap ng isang algorithm. Sa isip, dapat tayong lahat ay natututo tungkol sa mga istruktura ng data at mga algorithm sa ating mga paaralan, ngunit ito ay bihirang saklawin. Sa anumang kaso, hindi pa huli ang lahat para makipagkilala.
Kaya narito ang aking mga paboritong libreng kurso para sa pag-aaral ng mga istruktura at algorithm ng data:

Dagdag pa, huwag kalimutan ang tungkol sa klasikong gawain ni Thomas Corman sa mga algorithm - Panimula sa Algorithms. Ito ang perpektong sanggunian kapag kailangan mong i-refresh ang iyong memorya.

  • Upang mapabuti ang iyong mga kasanayan, gamitin Leetcode.

Maaari ka ring sumisid sa mundo ng mga database na may kamangha-manghang mga video mula sa Carnegie Mellon University sa Youtube:

2. Matuto ng SQL

Ang aming buong buhay ay data. At upang kunin ang data na ito mula sa database, kailangan mong "magsalita" ng parehong wika dito.

Ang SQL (Structured Query Language) ay ang wika ng komunikasyon sa domain ng data. Anuman ang sabihin ng sinuman, ang SQL ay nabuhay, nabubuhay, at mabubuhay nang napakahabang panahon.

Kung matagal ka nang nasa development, malamang na napansin mo na pana-panahong lumalabas ang mga tsismis tungkol sa napipintong pagkamatay ng SQL. Ang wika ay binuo noong unang bahagi ng 70s at napakapopular pa rin sa mga analyst, developer at simpleng mahilig.
Kung walang kaalaman sa SQL, walang magagawa sa data engineering dahil tiyak na kailangan mong gumawa ng mga query para makuha ang data. Sinusuportahan ng lahat ng modernong malalaking data warehouse ang SQL:

  • Amazon RedShift
  • HP Vertica
  • Orakulo
  • SQL Server

... at marami pang iba.

Upang pag-aralan ang isang malaking layer ng data na nakaimbak sa mga distributed system tulad ng HDFS, naimbento ang mga SQL engine: Apache Hive, Impala, atbp. Tingnan mo, hindi ito pupunta kahit saan.

Paano matutunan ang SQL? Gawin mo lang sa practice.

Upang gawin ito, inirerekumenda kong suriin ang isang mahusay na tutorial, na, sa pamamagitan ng paraan, ay libre, mula sa Mode Analytics.

  1. Intermediate SQL
  2. Pagsali sa Data sa SQL

Ang ginagawang espesyal sa mga kursong ito ay mayroon silang interactive na kapaligiran kung saan maaari kang magsulat at magpatakbo ng mga query sa SQL mismo sa iyong browser. mapagkukunan Makabagong SQL hindi magiging kalabisan. At maaari mong gamitin ang kaalamang ito sa Mga gawain sa Leetcode sa seksyong Mga Database.

3. Programming sa Python at Java/Scala

Bakit dapat mong matutunan ang Python programming language, isinulat ko na sa artikulo Python vs R. Pagpili ng Pinakamahusay na Tool para sa AI, ML at Data Science. Pagdating sa Java at Scala, karamihan sa mga tool para sa pag-iimbak at pagproseso ng malaking halaga ng data ay nakasulat sa mga wikang ito. Halimbawa:

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

Upang maunawaan kung paano gumagana ang mga tool na ito, kailangan mong malaman ang mga wika kung saan nakasulat ang mga ito. Binibigyang-daan ka ng functional na diskarte ng Scala na epektibong lutasin ang mga parallel na problema sa pagproseso ng data. Ang Python, sa kasamaang-palad, ay hindi maaaring magyabang ng bilis at parallel processing. Sa pangkalahatan, ang kaalaman sa ilang mga wika at paradigm sa programming ay mabuti para sa lawak ng mga diskarte sa paglutas ng mga problema.

Upang sumisid sa wikang Scala, maaari kang magbasa Programming sa Scala mula sa may-akda ng wika. Nag-publish din ang Twitter ng magandang panimulang gabay - Paaralan ng Scala.

Tulad ng para sa Python, naniniwala ako Matatas na Python pinakamahusay na aklat sa gitnang antas.

4. Mga tool para sa pagtatrabaho sa malaking data

Narito ang isang listahan ng mga pinakasikat na tool sa mundo ng malaking data:

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

Makakahanap ka ng higit pang impormasyon tungkol sa pagbuo ng malalaking bloke ng data sa kamangha-manghang ito interactive na kapaligiran. Ang pinakasikat na tool ay Spark at Kafka. Ang mga ito ay tiyak na nagkakahalaga ng pag-aaral, ipinapayong maunawaan kung paano sila gumagana mula sa loob. Si Jay Kreps (co-author ng Kafka) ay nag-publish ng isang monumental na gawa noong 2013 Ang Log: Ang Dapat Malaman ng Bawat Software Developer Tungkol sa Real-Time Data Aggregation AbstractionSa pamamagitan ng paraan, ang mga pangunahing ideya mula sa Talmud na ito ay ginamit upang lumikha ng Apache Kafka.

5. Cloud platform

Sino ang mga inhinyero ng data, at paano ka magiging isa?

Ang kaalaman sa kahit isang cloud platform ay nasa listahan ng mga pangunahing kinakailangan para sa mga aplikante para sa posisyon ng data engineer. Mas gusto ng mga employer ang Amazon Web Services, kung saan ang cloud platform ng Google sa pangalawang lugar at ang Microsoft Azure ay nag-round out sa nangungunang tatlo.

Dapat ay mayroon kang mahusay na kaalaman sa Amazon EC2, AWS Lambda, Amazon S3, DynamoDB.

6. Mga sistemang ibinahagi

Ang pagtatrabaho sa malaking data ay nagpapahiwatig ng pagkakaroon ng mga kumpol ng mga independiyenteng nagpapatakbo ng mga computer, ang komunikasyon sa pagitan ng kung saan ay isinasagawa sa isang network. Kung mas malaki ang kumpol, mas malaki ang posibilidad ng pagkabigo ng mga node ng miyembro nito. Upang maging isang mahusay na data scientist, kailangan mong maunawaan ang mga problema at mga kasalukuyang solusyon para sa mga distributed system. Ang lugar na ito ay luma at kumplikado.

Si Andrew Tanenbaum ay itinuturing na isang pioneer sa larangang ito. Para sa mga hindi natatakot sa teorya, inirerekumenda ko ang kanyang libro "Mga Ibinahagi na Sistema", maaaring mukhang nakakatakot para sa mga nagsisimula, ngunit ito ay talagang makakatulong sa iyo na mahasa ang iyong mga kasanayan.

Itinuturing ko Pagdidisenyo ng Data-Intensive Application ni Martin Kleppmann pinakamahusay na panimulang aklat. Siyanga pala, may kahanga-hanga si Martin blog. Ang kanyang trabaho ay makakatulong sa sistematikong kaalaman tungkol sa pagbuo ng isang modernong imprastraktura para sa pag-iimbak at pagproseso ng malaking data.
Sa mga mahilig manood ng videos, may course sa Youtube Ibinahagi ang mga sistema ng computer.

7. Mga pipeline ng data

Sino ang mga inhinyero ng data, at paano ka magiging isa?

Ang mga pipeline ng data ay isang bagay na hindi mo mabubuhay nang wala bilang isang inhinyero ng data.

Kadalasan, ang isang data engineer ay gumagawa ng tinatawag na data pipeline, iyon ay, gumagawa siya ng proseso para sa paghahatid ng data mula sa isang lugar patungo sa isa pa. Ang mga ito ay maaaring mga custom na script na pumupunta sa API ng isang panlabas na serbisyo o gumagawa ng isang SQL query, dagdagan ang data, at ilagay ito sa isang sentralisadong tindahan (data warehouse) o isang hindi nakaayos na data store (data lakes).

Upang ibuod: ang pangunahing checklist para sa isang data engineer

Sino ang mga inhinyero ng data, at paano ka magiging isa?

Upang buod, kinakailangan ang isang mahusay na pag-unawa sa mga sumusunod:

  • Sistema ng Impormasyon;
  • Pagbuo ng software (Agile, DevOps, Design Techniques, SOA);
  • Mga distributed system at parallel programming;
  • Database Fundamentals - Pagpaplano, Disenyo, Operasyon at Pag-troubleshoot;
  • Disenyo ng mga eksperimento - Mga pagsubok sa A/B upang patunayan ang mga konsepto, matukoy ang pagiging maaasahan, pagganap ng system, at bumuo ng maaasahang mga landas upang makapaghatid ng mahusay na mga solusyon nang mabilis.

Ilan lamang ito sa mga kinakailangan upang maging isang inhinyero ng data, kaya't alamin at unawain ang mga sistema ng data, mga sistema ng impormasyon, tuluy-tuloy na paghahatid/pag-deploy/pagsasama, mga wika ng programming, at iba pang mga paksa sa computer science (hindi lahat ng paksa).

At sa wakas, ang huling ngunit napakahalagang bagay na nais kong sabihin.

Ang landas sa pagiging Data Engineering ay hindi kasing simple ng tila. Hindi siya nagpapatawad, nabibigo siya, at dapat kang maging handa para dito. Ang ilang sandali sa paglalakbay na ito ay maaaring magtulak sa iyo na sumuko. Ngunit ito ay tunay na gawain at isang proseso ng pag-aaral.

Huwag lang itong i-sugarcoat sa simula. Ang buong punto ng paglalakbay ay upang matuto hangga't maaari at maging handa sa mga bagong hamon.
Narito ang isang magandang larawan na nakita ko na naglalarawan nang mabuti sa puntong ito:

Sino ang mga inhinyero ng data, at paano ka magiging isa?

At oo, tandaan na iwasan ang pagka-burnout at pahinga. Ito rin ay napakahalaga. Good luck!

Ano sa palagay mo ang artikulo, mga kaibigan? Iniimbitahan ka namin libreng webinar, na magaganap ngayon sa 20.00. Sa panahon ng webinar, tatalakayin natin kung paano bumuo ng isang epektibo at nasusukat na sistema ng pagproseso ng data para sa isang maliit na kumpanya o startup sa minimal na gastos. Bilang kasanayan, makikilala natin ang mga tool sa pagpoproseso ng data ng Google Cloud. See you!

Pinagmulan: www.habr.com

Magdagdag ng komento