Хто такі дата-інженери і як ними стають?

І знову здрастуйте! Заголовок статті говорить про себе. Напередодні старту курсу "Data Engineer" пропонуємо розібратися в тому, хто такі дата-інженери. У статті багато корисних посилань. Приємного прочитання.

Хто такі дата-інженери і як ними стають?

Просте керівництво про те, як зловити хвилю Data Engineering і не дати їй затягнути вас у вир.

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

Висока зарплата та величезний попит – це лише мала частина того, що робить цю роботу надзвичайно привабливою! Якщо ви хочете поповнити лави героїв, ніколи не пізно почати вчитися. У цьому пості я зібрав усю необхідну інформацію, щоб допомогти вам зробити перші кроки.

Тож почнемо!

Що таке Data Engineering?

Чесно кажучи, немає кращого пояснення, ніж це:

Вчений може відкрити нову зірку, але не може її створити. Йому доведеться просити інженера зробити це за нього.

-Гордон Ліндсей Глегг

Таким чином, роль дата-інженера є досить вагомою.

З назви випливає, що інженерія даних пов'язана з даними, а саме з їхньою доставкою, зберіганням та обробкою. Відповідно, основне завдання інженерів – забезпечити надійну інфраструктуру для даних. Якщо ми подивимося на ІІ-ієрархію потреб, інженерія даних займає перші 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, буде великим плюсом.

Тобто спостерігається явне зміщення у бік великих даних, саме у їхній обробці при високих навантаженнях. У цих компаній підвищені вимоги до стійкості до відмови системи.

Дата-інженери Vs. дата-саєністи

Хто такі дата-інженери і як ними стають?
Гаразд, це було просте та кумедне порівняння (нічого особистого), але насправді все набагато складніше.

По-перше, ви повинні знати, що існує досить багато неясності у розмежуванні ролей та навичок дата-саєніста та дата-інженера. Тобто ви легко можете бути спантеличені тим, які все-таки навички необхідні для успішного дата-інженера. Звичайно, є певні навички, що накладаються на обидві ролі. Але також є ціла низка діаметрально протилежних навичок.

Наука про дані - це серйозна справа, але ми рухаємося до світу з функціональною дата саєнс, де практикуючі здатні робити свою власну аналітику. Щоб задіяти конвеєри даних та інтегровані структури даних, вам потрібні інженери даних, а не вчені.

Чи є дата-інженер більш затребуваною, ніж дата-саєнтист?

- Так, тому що перш ніж ви зможете приготувати морквяний пиріг, вам потрібно спочатку зібрати, очистити і запастися морквою!

Дата-інженер розуміється на програмуванні краще, ніж будь-який дата-саєнтист, але коли справа доходить до статистики, все з точністю до навпаки.

Але перевага дата-інженера:

без нього цінність моделі-прототипу, що найчастіше складається з фрагмента коду жахливої ​​якості у файлі Python, отриманої від дата-саєніста і якимось чином дає результат, прагне нуля.

Без дата-інженера цей код ніколи не стане проектом і жодна бізнес-проблема не буде ефективно вирішена. Інженер даних намагається перетворити це все на продукт.

Основні відомості, які має знати дата-інженер

Хто такі дата-інженери і як ними стають?

Отже, якщо ця робота будить у вас світло і ви сповнені ентузіазму - ви здатні навчитися цьому, ви можете опанувати всі необхідні навички і стати справжньою рок-зіркою в галузі розробки даних. І, так, ви можете зробити це навіть без навичок програмування або інших технічних знань. Це складно, але можливо!

Які перші кроки?

Ви повинні мати загальне уявлення про те, що є.

Насамперед, Data Engineering належить до інформатики. Конкретно - ви повинні розуміти ефективні алгоритми та структури даних. По-друге, оскільки дата-інженери працюють з даними, необхідне розуміння принципів роботи баз даних та структур, що лежать у їх основі.

Наприклад, звичайні B-tree SQL бази даних засновані на структурі даних B-Tree, а також у сучасних розподілених репозиторіях, LSM-Tree та інших модифікаціях хеш-таблиць.

* Ці кроки засновані на чудовій статті Аділя Хаштамова. Отже, якщо ви знаєте російську мову, підтримайте цього автора та прочитайте його піст.

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

Використання правильної структури даних може значно покращити продуктивність алгоритму. В ідеалі, ми всі повинні вивчати структури даних та алгоритми у наших школах, але це рідко коли-небудь висвітлюється. Принаймні ознайомиться ніколи не пізно.
Отже, ось мої улюблені безкоштовні курси для вивчення структур даних та алгоритмів:

Плюс не забувайте про класичну роботу над алгоритмами Томаса Кормена. Введення в алгоритми. Це ідеальний довідник, коли потрібно освіжити свою пам'ять.

  • Щоб покращити свої навички, використовуйте Leetcode.

Ви також можете поринути у світ баз даних за допомогою чудових відеороликів Університету Карнегі-Меллона на Youtube:

2. Вивчення SQL

Все наше життя – це дані. І для того, щоб отримати ці дані з бази даних, вам потрібно «говорити» з ними однією мовою.

SQL (Structured Query Language — мова структурованих запитів) є мовою спілкування даних. Незалежно від того, що хтось каже, SQL жив, живий і житиме ще дуже довго.

Якщо ви тривалий час перебували в розробці, ви, ймовірно, помітили, що чутки про швидку смерть SQL з'являються періодично. Мова була розроблена на початку 70-х років і досі має величезну популярність серед аналітиків, розробників і просто ентузіастів.
Без знання SQL в інженерії даних робити нічого, тому що вам неминуче доведеться створювати запити для отримання даних. Усі сучасні сховища великих даних підтримують SQL:

  • Амазонська червона зміна
  • HP Vertica
  • оракул
  • SQL Server

… і багато інших.

Для аналізу великого шару даних, що зберігаються в розподілених системах, таких як HDFS, були винайдені механізми SQL: Apache Hive, Impala і т. д. Бачите, він не збирається нікуди йти.

Як вивчити SQL? Просто роби це практично.

Для цього я б порекомендував ознайомитися з чудовим підручником, який, до речі, безкоштовний, Режим аналітики.

  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, я вважаю Вільний Python найкращою книгою середнього рівня.

4. Інструменти для роботи з великими даними

Ось список найпопулярніших інструментів у світі великих даних:

  • Apache Spark
  • Апач Кафка
  • Apache Hadoop (HDFS, HBase, Hive)
  • Апач Кассандра

Більше інформації про побудову великих блоків даних ви можете знайти в цій дивовижній інтерактивному середовищі. Найпопулярніші інструменти - 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. Розподілені системи

p align="justify"> Робота з великими даними передбачає наявність кластерів незалежно працюючих комп'ютерів, зв'язок між якими здійснюється по мережі. Чим більший кластер, тим більша ймовірність відмови його вузлів-членів. Щоб стати крутим експертом у галузі даних, вам необхідно вникнути у проблеми та існуючі рішення для розподілених систем. Ця область стара і складна.

Ендрю Таненбаум вважається піонером у цій галузі. Для тих, хто не боїться теорії, я рекомендую його книгу «Розподілені системи», для початківців вона може здатися складною, але це дійсно допоможе вам відточити свої навички.

Я вважаю "Проектування додатків з інтенсивним використанням даних" під авторством Мартіна Клеппманна кращою вступною книгою. До речі, Мартін має чудовий блог. Його робота допоможе систематизувати знання про побудову сучасної інфраструктури для зберігання та обробки великих даних.
Для тих, хто любить дивитися відео, на Youtube є курс Розподілені комп'ютерні системи.

7. Конвеєри даних

Хто такі дата-інженери і як ними стають?

Конвеєри даних - це те, без чого ви не можете жити як дата-інженер.

Більшість часу дата-інженер будує так звану пайплайн дату, тобто створює процес доставки даних з одного місця в інше. Це можуть бути сценарії користувача, які йдуть до API зовнішнього сервісу або роблять SQL-запит, доповнюють дані і поміщають їх у централізоване сховище (сховище даних) або сховище неструктурованих даних (озера даних).

Підсумовуючи: основний чекіст дата-інженера

Хто такі дата-інженери і як ними стають?

Підсумуємо - необхідно хороше розуміння наступного:

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

Це лише кілька вимог для того, щоб стати інженером даних, тому вивчіть та розберіться із системами даних, інформаційними системами, безперервною доставкою/розгортанням/інтеграцією, мовами програмування та іншими темами з інформатики (не у всіх предметних галузях).

І, нарешті, останнє, але дуже важливе, що хочу сказати.

Шлях становлення Data Engineering не такий простий, як може здатися. Він не прощає, фруструє, і ви маєте бути готові до цього. Деякі моменти в цій подорожі можуть підштовхнути вас все кинути. Але це справжня праця та навчальний процес.

Просто не прикрашайте його із самого початку. Весь сенс подорожі в тому, щоб дізнатися якнайбільше і бути готовим до нових викликів.
Ось чудова картинка, з якою я зіткнувся, яка добре ілюструє цей момент:

Хто такі дата-інженери і як ними стають?

І так, не забудьте уникати вигоряння та відпочивати. Це також дуже важливо. Успіхів!

Як вам стаття, друзі? Запрошуємо на безкоштовний вебінар, що відбудеться вже сьогодні о 20.00. В рамках вебінару обговоримо, як побудувати ефективну та масштабовану систему обробки даних для невеликої компанії або стартапу з мінімальними витратами. Як практику познайомимося з інструментами обробки даних Google Cloud. До зустрічі!

Джерело: habr.com

Додати коментар або відгук