Кои са дата инженерите и как да станеш такъв?

Отново здравейте! Заглавието на статията говори само за себе си. В навечерието на старта на курса „Data Engineer“ предлагаме да разберем кой всъщност са дата инженерите. В статията има много полезни връзки. Приятно четене.

Кои са дата инженерите и как да станеш такъв?

Просто ръководство за това как да уловите вълната на Data Engineering и да не позволите да ви затегне в бездната.

Създава се впечатление, че в днешно време всеки иска да стане дата учен (Data Scientist). Но какво ще кажете за Data Engineering (инженерия на данни)? По същество, това е вид хибрид между дата аналитик и дата учен; дата инженерът обикновено отговаря за управлението на работните процеси, конвейерите на обработка и ETL процесите. Поради важността на тези функции, в момента това е поредният популярен професионален жаргон, който активно набира популярност.

Високата заплата и огромният търсене са само малка част от това, което прави тази работа изключително привлекателна! Ако искате да се присъедините към редиците на героите, никога не е късно да започнете да учите. В този пост събрах цялата необходима информация, за да ви помогна да направите първите стъпки.

Така че, нека започнем!

Какво е Data Engineering?

Честно казано, няма по-добро обяснение от това:

„Ученият може да открие нова звезда, но не може да я създаде. Той ще трябва да помоли инженера да го направи вместо него.“

–Гордон Линдсей Глегг

Така че, ролята на дата инженер е достатъчно значима.

Както подсказва името, инженерията на данни е свързана с данните, а именно с тяхното доставяне, съхранение и обработка. Съответно, основната задача на инженерите е да осигурят надеждна инфраструктура за данни. Ако погледнем йерархията на нуждите в ИИ, инженерията на данни заемa първите 2–3 етапа: събиране, преместване и съхранение, подготовка на данни.

Кои са дата инженерите и как да станеш такъв?

С какво се занимава дата инженерът?

С появата на големи данни, сферата на отговорността се е променила драстично. Ако по-рано тези експерти пишеха големи SQL заявки и прехвърляха данни с помощта на инструменти като Informatica ETL, Pentaho ETL, Talend, сега изискванията към дата инженерите са се увеличили.

Повечето компании с отворени позиции за дата инженер предявяват следните изисквания:

  • Отлично познание по SQL и Python.
  • Опит с облачни платформи, по-специално Amazon Web Services.
  • Предпочитателно е познание по Java/Scala.
  • Доброто разбиране на SQL и NoSQL бази данни (моделиране на данни, съхранение на данни).

Имайте предвид, че това е само основното. От този списък можем да заключим, че инженерите по данни са специалисти в разработката на софтуер и бекенд.
Например, ако компанията започне да генерира голямо количество данни от различни източници, вашата задача като инженер по данни е да организирате събирането на информация, нейната обработка и съхранение.

Списъкът с инструментите, използвани в този случай, може да варира; всичко зависи от обема на данните, скоростта на тяхното постъпване и хетерогенността. Повечето компании изобщо не се сблъскват с големи данни, затова за централизирано хранилище, наречено хранилище на данни, може да се използва SQL база данни (PostgreSQL, MySQL и т.н.) със съвсем малък набор от скриптове, които насочват данните в хранилището.

IT-гигантите като Google, Amazon, Facebook или Dropbox имат по-високи изисквания: знание на Python, Java или Scala.

  • Опит с големи данни: Hadoop, Spark, Kafka.
  • Знание за алгоритми и структури от данни.
  • Разбиране на основите на разпределените системи.
  • Опит с инструменти за визуализация на данни, като Tableau или ElasticSearch, ще бъде голямо предимство.

Това означава, че наблюдаваме явен наклон към големи данни, особено в тяхната обработка при високи натоварвания. Тези компании имат повишени изисквания за устойчивост на системата.

Инженери по данни срещу учени по данни

Кои са дата инженерите и как да станеш такъв?
Добре, това беше просто и забавно сравнение (без значение), но наистина всичко е много по-сложно.

Първо, трябва да знаете, че има доста неясноти в разграничаването на ролите и уменията на учените по данни и инженерите по данни. Тоест, лесно можете да се озадачите какви умения са необходими за успешен инженер по данни. Разбира се, има определени умения, които се припокриват между двете роли. Но също така има и редица диаметрално противоположни умения.

Науката за данни е сериозен бизнес, но ние се насочваме към свят с функционална наука за данни, където практиците са способни да правят своя собствена аналитика. За да се задействат конвейери на данни и интегрирани структури от данни, са ви нужни инженери по данни, а не учени.

По-популярно ли е дата инженерът в сравнение с дата учените?

— Да, защото преди да приготвите морковен пай, трябва първо да съберете, почистите и запасите моркови!

Дата инженерът разбира от програмиране по-добре от всеки дата учен, но що се отнася до статистиката, всичко е точно обратното.

Но ето предимството на дата инженера:

без него/нея стойността на модели-прототипи, които най-често са фрагменти от код с ужасно качество в Python файл, получен от дата учен и по някакъв начин даващ резултати, стреми към нула.

Без дата инженер този код никога няма да стане проект и никой бизнес проблем няма да бъде ефективно решен. Дата инженерът се опитва да преобразува всичко това в продукт.

Основни неща, които дата инженерът трябва да знае

Кои са дата инженерите и как да станеш такъв?

И така, ако тази работа пробужда във вас светлина и сте изпълнени с ентусиазъм — можете да научите всичко необходимо и да станете истинска рок звезда в областта на разработката на данни. И да, можете да постигнете това дори без умения по програмиране или други технически знания. Това е трудно, но възможно!

Какви са първите стъпки?

Трябва да имате обща представа какво представлява всичко.

Първо, Data Engineering се отнася до компютърните науки. Конкретно — трябва да разбирате ефективни алгоритми и структури от данни. Второ, тъй като дата инженерите работят с данни, е необходимо разбиране на принципите на работа на базите данни и на структурата им.

Например, обикновените SQL бази данни с B-tree са базирани на структурата от данни B-Tree, а също така, в съвременните разпределени репозитории, LSM-Tree и други модификации на хеш таблици.

* Тези стъпки са основани на страхотната статия Адиля Хаштамова. И така, ако владеете руски, подкрепете този автор и прочетете неговия пост.

1. Алгоритми и структури от данни

Използването на правилната структура от данни може значително да подобри производителността на алгоритъма. Идеално, всички ние трябва да изучаваме структури от данни и алгоритми в нашите училища, но това рядко се обсъжда. Във всеки случай, никога не е късно да се запознаем.
И така, ето моите любими безплатни курсове за изучаване на структури от данни и алгоритми:

Не забравяйте и за класическото произведение на Томас Корман по алгоритми — Въведение в алгоритмите. Това е идеален справочник, когато ви трябва да освежите паметта си.

  • За да подобрите уменията си, използвайте Leetcode.

Можете също да се потопите в света на базите данни с удивителни видеа от Университета Карнеги-Мелън в YouTube:

2. Изучаване на SQL

Животът ни е свързан с данни. И за да извлечете тези данни от базата данни, трябва да 'говорите' с тях на един и същи език.

SQL (Structured Query Language — език за структурирани запитвания) е езикът на комуникация в областта на данните. Независимо от това, което някой казва, SQL е съществувал, съществува и ще продължи да съществува.

Ако сте били разработчик от дълго време, вероятно сте забелязали, че слуховете за бързата смърт на SQL периодично се появяват. Язикът е създаден в началото на 70-те години и до днешен ден е изключително популярен сред анализатори, разработчици и просто ентусиасти.
Без знание на SQL в инженерството на данни няма да може да се справите, тъй като неизменна част от работата ви ще бъде създаването на запитвания за извличане на данни. Всички съвременни хранилища за големи данни поддържат SQL:

  • Amazon Redshift
  • HP Vertica
  • Oracle
  • SQL Server

… и много други.

За анализа на големи слоеве данни, съхранявани в разпределени системи като HDFS, бяха разработени механизми на SQL: Apache Hive, Impala и т.н. Виждате, той не отива никъде.

Как да научите SQL? Просто практикувайте.

За това бих препоръчал да се запознаете с отличен учебник, който, между другото, е безплатен, от Mode Analytics.

  1. Средно ниво на SQL
  2. Обединяване на данни в SQL

Отличителната черта на тези курсове е наличието на интерактивна среда, в която можете да пишете и изпълнявате SQL-запитвания директно в браузъра. Ресурсът Modern SQL няма да е излишен. И можете да приложите тези знания в задачите на Leetcode в секцията Бази данни.

3. Програмиране на Python и Java/Scala

Защо да изучавате езика за програмиране Python, вече писах в статията Python vs R. Избор на най-добрия инструмент за AI, ML и Data Science. Що се отнася до Java и Scala, повечето инструменти за съхранение и обработка на огромни обеми данни са написани на тези езици. Например:

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

За да разберете как работят тези инструменти, трябва да познавате езиците, на които са написани. Функционалният подход на Scala позволява ефективно решаване на задачи за паралелна обработка на данни. Python, за съжаление, не може да се похвали със скорост и паралелна обработка. Като цяло, познанието на няколко езика и програмни парадигми оказва положително влияние на разнообразието от подходи при решаване на проблеми.

За да се потопите в езика Scala, можете да прочетете Програмиране в Scala от автора на езика. Също така, компания Twitter публикува добро въведение — Scala School.

Що се отнася до Python, считам Fluent Python за най-добрата книга на средно ниво.

4. Инструменти за работа с големи данни

Ето списък на най-популярните инструменти в света на големите данни:

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

Повече информация за изграждане на големи блокове данни можете да намерите в тази удивителна интерактивна среда. Най-популярните инструменти са Spark и Kafka. Определено си струва да ги изучите, най-добре е да разберете как работят отвътре. Jay Kreps (съавтор на Kafka) публикува монументална работа през 2013 година The Log: какво трябва да знае всеки разработчик на софтуер за абстракцията на обединението на данни в реално време, между другото, основните идеи от този труд бяха използвани за създаването на Apache Kafka.

5. Облачни платформи

Кои са дата инженерите и как да станеш такъв?

Знанието поне на една облачна платформа е в списъка на основните изисквания за кандидатите за позицията на дата-инженер. Работодателите предпочитат Amazon Web Services, на второ място е облачната платформа на Google, а тройката лидер накрая е Microsoft Azure.

Трябва да се ориентирате добре в Amazon EC2, AWS Lambda, Amazon S3, DynamoDB.

6. Разпределени системи

Работата с големи данни предполага наличие на клъстери независими компютри, чиято свързаност се осъществява по мрежа. Колкото по-голям е клъстерът, толкова по-голям е шансът за отказ на неговите възли. За да станете страхотен експерт в областта на данните, трябва да се задълбочите в проблемите и съществуващите решения за разпределени системи. Тази област е стара и сложна.

Ендрю Таненбаум се смята за пионер в тази област. За онези, които не се страхуват от теорията, препоръчвам неговата книга «Разпределени системи», която може да изглежда сложна за начинаещите, но определено ще ви помогне да усъвършенствате уменията си.

Смятам «Проектиране на приложения с интензивна употреба на данни», написана от Мартин Клеппман за най-добрата въведителна книга. Между другото, Мартин има великолепен блог. Неговата работа ще помогне да систематизирате знанията си относно изграждането на съвременна инфраструктура за съхранение и обработка на големи данни.
За онези, които обичат да гледат видео, има курс на YouTube Разпределени компютърни системи.

7. Пайплайни на данни

Кои са дата инженерите и как да станеш такъв?

Пайплайните на данни са нещо, без което не можете да живеете като дата-инженер.

По-голямата част от времето дата-инженерът изгражда така наречената дата пайплайн, т.е. създава процес за доставка на данни от едно място на друго. Това могат да бъдат потребителски сценарии, които изпращат заявки към API на външна услуга или правят SQL заявки, обогатяват данните и ги поставят в централно хранилище (data warehouse) или хранилище на неструктурирани данни (data lake).

В обобщение: основният чеклист на дата-инженера

Кои са дата инженерите и как да станеш такъв?

Нека обобщим — необходимо е добро разбиране на следното:

  • Информационни системи;
  • Разработка на софтуер (Agile, DevOps, Дизайнерски техники, SOA);
  • Разпределени системи и паралелно програмиране;
  • Основи на базите данни — планиране, проектиране, експлоатация и отстраняване на повреди;
  • Проектиране на експерименти — A/B тестове за доказване на концепции, определяне на надеждността, производителността на системите, а също така за разработване на надеждни начини за бързо предоставяне на добри решения.

Това са само някои от изискванията, за да станете дата-инженер, така че изучавайте и се запознайте със системите за данни, информационните системи, непрекъснатото доставки/разгърнате/интеграция, езиците за програмиране и други теми от компютърните науки (не във всички предметни области).

И накрая, последното, но много важно, което искам да кажа.

Пътят към Data Engineering не е така прост, както изглежда. Той не прощава, предизвиква фрустрация и трябва да сте готови за това. Някои моменти от това пътуване могат да ви накарат да помислите да се откажете. Но това е истински труд и учебен процес.

Просто не го романтизирайте от самото начало. Целта на пътуването е да научите колкото е възможно повече и да сте готови за нови предизвикателства.
Ето една отлична графика, с която се сблъсках, която добре илюстрира този момент:

Кои са дата инженерите и как да станеш такъв?

И да, не забравяйте да избягвате прегарянето и да почивате. Това също е много важно. Успех!

Как ви се струва статията, приятели? Каним ви на безплатен уебинар, който ще се проведе днес в 20:00 часа. В рамките на уебинара ще обсъдим как да изградим ефективна и мащабируема система за обработка на данни за малка компания или стартап с минимални разходи. В практическата част ще се запознаем с инструментите за обработка на данни на Google Cloud. До скоро!

Източник: habr.com

Купете надежден хостинг за сайтове с защита от DDoS, VPS VDS сървъри 🔥 Купете надежден хостинг за сайтове с защита от DDoS, VPS VDS сървъри | ProHoster