itechart_logo

Больше чем данные: неочевидные сложности и риски в работе с Big Data

03 мая 2021
Сокол_Денис.jpg

Денис
Сокол

Data Engineer

Какую информацию корректно причислять к Big Data? Каким категориям разработчиков обязательны навыки работы с большими данными, а каким – опциональны? Какой стек необходимо освоить для успешной работы?  Какие риски поджидают разработчиков при работе с Big data и как их нивелировать? Получили ответы на эти вопросы от Дениса Сокола, Data Engineer в iTechArt.

Что такое Big Data

Достаточно часто наши новые клиенты акцентируют внимание на том, что в проект требуется Big Data Engineer. Что на самом деле они имеют в виду, приходится выяснять. Многие под Big Data проектами подразумевают проекты с построением распределенных хранилищ и горизонтально масштабируемых процессов перекачки данных между информационными системами. Но на этом сфера применения термина не ограничивается – всплывают и проекты анализа больших данных, и построение систем с машинным обучением. Поэтому лучше потратить время и разобраться, чем просто ориентироваться на прозвучавший в запросе термин Big Data.

Как правило, обнаруживается проблема, связанная с ростом числа данных. Обычно в таких случаях для налаживания работы требуется Data Engineer: перегнать какие-то данные, агрегировать их и т.п. И далеко не всегда исправлять положение нужно и выгодно технологическим арсеналом Big Data.

Когда кто-то называет термин Big Data, чаще всего подразумевается:

  • Объём данных, который стал настолько большим, что его невозможно обработать/сохранить на одной машине.
  • Добавочную ценность бизнеса, которую можно получить из большого объёма данных. С ростом объёма данных бизнес замечает какие-то новые закономерности и возможности для роста, которые не были очевидны раньше. 
  • Непосредственно технологический стек, который используется для обработки больших данных. Чаще всего такая ситуация встречается в общении разработчиков друг с другом.

Перед вами действительно задача, связанная с большими данными, если:

  • Объём данных измеряется терабайтами и петабайтами. Важно учесть: это хоть и первый, но необязательный признак. В моей практике были случаи, когда информация клиента занимала сотни гигабайт, но обработка небольшого физического объёма данных требовала кластера из 5-10 машин.
  • Количество машин, которое требуется для обработки/сохранения данных, превышает 1 единицу.
  • Имеется большой массив неструктурированных или частично структурированных данных.
  • Необходимо построить аналитику только на основании данных. Т.е. мы можем ничего не знать о предметной области данных, но можем сделать выводы на основании массива данных.
  • Требуется обеспечить обработку большого объёма данных в режиме реального времени. Опять же, если при этом вам хватает 1 машины – это не Big Data.

Каким разработчикам обязательно разбираться в Big Data

Безусловно, продвинутого понимания Big Data ожидают от Data Engineer и Data Science. Основными понятиями, без глубоких технических нюансов должен владеть BI-разработчик (Business Intelligence). Хорошим подспорьем знания о Big Data могут оказаться для Machine Learning Engineer. В таком случае он сможет делать распределенные алгоритмы, которые учатся не на одной машине, а на кластере. В редких случаях знание Big Data может понадобится Software Engineer, чтобы построить распределенные системы для обработки данных. DevOps должен уметь настраивать и мониторить кластеры.

В каких бизнес-доменах наиболее актуальна работа с Big Data

Сейчас сложно придумать домен, в котором Big Data не набирает обороты.По определению наиболее востребована работа с Big Data будет в IoT: там много данных и подключенных устройств, которые снимают метрики. По нашим наблюдениям, актуальны большие данные как никогда в здравоохранении, ритейле и ecommerce, образовании, рекламе и индустрии развлечений. В FinTech использование Big Data стека возможно, но не всегда оправдано – иногда достаточно оптимизировать существующие процессы.

Какие риски могут быть в проектах, связанных с Big Data

1. Стоимость инфраструктуры

Одна из самых неприятных ситуаций, которая может выясниться в процессе развертывания кластера – высокая стоимость. Избежать чрезмерных трат поможет заблаговременная оценка требуемой мощности. Если видим, что стоимость необоснованно высокая, пробуем оптимизировать обработку – не только кода, но и доступа (например, сколько ресурсов может использовать 1 человек).

2. Производительность

Изначально для больших данных предполагается горизонтальное масштабирование. Но в некоторых случаях развертывание большого количества машин будет неэффективным. 

Если есть задача, которая предполагает распределение обработки на множество машин, лучше сразу выбрать стек, который делает это автоматически, нежели заниматься изобретением велосипеда.

Не лишней будет фаза Proof of concept – подтверждение концепта. Когда мы берём небольшой объём данных, который нужно сохранить, и проверяем, за какое время произойдёт процесс загрузки и экстраполируем на весь объем. 

3. Желаемый алгоритм не подходит для распределенной среды

Некоторые классические задачи вроде возможности считывать записи в том же порядке, в котором они идут в файле, трудно реализовать в распределенной среде.

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

4. Экономическая нецелесообразность проекта

Клиенты могут считать, что им требуется Big Data, поскольку не получается запустить всё необходимое 1 сервере. В процессе аудита может выясниться, что дело в нехватке мощностей. Не всегда нужно настраивать кластер машин, иногда достаточно оптимизировать процесс или пересмотреть его необходимость. 

Какой стек технологий нужно подтягивать, если есть желание работать с Big Data

  • Фреймворки для обработки больших данных: Hadoop, Hive, Spark, Kafka, Pulsar, Beam, Samza, Flink, Storm, NiFi, Dask)
  • NoSQL (MongoDB, HBase, Cassandra, ClickHouse, Druid)
  • SQL (например, PostgreSQL, пусть и не разрабатывался изначально для Big Data, но может применяться для некоторых задач)
  • Дистрибутивы: Hortonworks, Databricks, Cloudera
  • Облачные сервисы:
    • AWS (EMR, Lambda, S3, Glue, Kinesis, DynamoDB, Redshift, QuickSight)
    • Google (BigQuery, Dataproc, Dataflow, Cloud Storage)
    • Azure (HDInsight, Data Lake storage, Data Factory, CosmosDB)
  • Языки (Python, Scala, Java)
  • Airflow, Parquet/ORC, Avro и многое другое

Есть желание развиваться в области Big Data? Прямо сейчас в iTechArt открыты вакансии:

Высылай CV и присоединяйся к нашей команде!

CATEGORIES

Development & QA Students Lab Company News Success Story

Похожие
статьи

arrow_left БЛОГ