Разработка #гайд

Как программисту перейти в big data

14 мая 2019 Читать ~ 7 минут

Big data надолго останется среди востребованных информационных технологий. По прогнозам, к 2025 году предприятия будут создавать около 60% всех мировых данных. Практически непрерывно потоки информации генерируют компании в сфере финансов, телекоммуникаций, электронной коммерции. Подобный бизнес нуждается в технологических решениях, которые помогут эффективно собирать, хранить и использовать большие объемы данных. Это одна из причин, почему в ближайшие годы спрос на профессионалов в big data будет только расти.

Мы расскажем, какие есть специальности в сфере big data и какие основные технологии нужно изучить программисту, чтобы связать свою карьеру с большими данными.

Содержание:

1. Где проходит грань между обычными и большими данными

2. Что нужно знать для работы с большими данными

3. Чем вы можете заниматься в big data

4. Как начать работать с big data

Где проходит грань между обычными и большими данными

В русском языке для термина big data часто используют кальку с английского – «большие данные». Но где проходит та грань, которая разделяет данные на «большие» и «обычные»? Принято считать, что объем big data начинается с терабайта, так как такое количество данных уже сложно хранить и обрабатывать в реляционных системах. Есть и другие критерии, которые объясняют, почему потребовались новые методы для работы с большими данными.

Многообразие. Большие данные чаще всего состоят из неструктурированной информации, которая может поступать из нескольких источников в виде разных по формату данных (видео и аудиофайлы, текст, изображения и др.). Технологии big data позволяют обрабатывать разнородные данные одновременно.

Скорость накопления. Данные генерируются все быстрее. Например, онлайн-магазину нужно постоянно собирать информацию о количестве клиентов и их покупках. Для хранения таких данных лучше подходят нереляционные базы данных, так как их легко масштабировать горизонтально, добавляя новые сервера (большинство реляционных баз данных масштабируются вертикально за счет увеличения оперативной памяти).

Скорость обработки. Большие данные, не смотря на свой внушительный объем, должны очень быстро обрабатываться, часто – в режиме реального времени. Например, рекомендательные системы в онлайн-магазинах мгновенно анализируют поведение клиента и выдают результат, какие еще товары могут ему понравиться. Такая высокая скорость обработки достигается за счет распределенных вычислений. 

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

Что нужно знать для работы с большими данными

Обработка больших данных – непростая задача для программистов, для решения которой постоянно появляются новые методы и инструменты. Однако есть основной стек технологий, которые чаще всего встречаются в вакансиях.

  • Apache Hadoop – платформа для параллельной обработки и распределенного хранения данных. Представляет собой большой комплекс инструментов, самые важные из которых – Hadoop Distributed File System, или HDFS (хранение данных), и MapReduce (обработка данных).
  • Apache Spark фреймворк для параллельной обработки данных. Может использоваться для обработки потоковых данных в реальном времени. Поддерживает обработку в оперативной памяти компьютера, что повышает производительность приложений для анализа больших данных.
  • Apache Kafka платформа для потоковой обработки данных. Преимущества технологии – высокая скорость обработки данных и их сохранность (все сообщения реплицируются). 
  • Apache Cassandra – распределенная система управления нереляционными базами данных. Состоит из множества узлов хранения данных и легко масштабируется. Cassandra устойчива к сбоям – все данные автоматические реплицируются между узлами кластера.

Какие парадигмы программирования используются

Работая с большими данными, вы будете обращаться к разным парадигмам программирования: императивной, декларативной и параллельной. Например, для программирования баз данных на языке SQL используется декларативный подход, когда задается задача и нужный результат без указания промежуточных шагов. Чтобы справиться с быстрой обработкой большого массива данных, нужно применять многопоточные и параллельные вычисления. Один из вариантов решения проблемы – парадигма MapReduce. Это вычислительная модель параллельной обработки распределенных данных. Алгоритм позволяет разделить задачи между машинами кластера, чтобы обработка данных происходила одновременно на всех задействованных компьютерах.

Какой язык программирования выбрать

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

Мы составили список наиболее востребованных языков программирования в этой сфере.

  • Python

Активно применяется в big data, так как поддерживает множество библиотек для анализа данных (Pandas, Dask, Keras и др.) и может пригодиться для статистики и визуализации. В науке о данных Python используется для выполнения задач машинного обучения (библиотека TensorFlow).

  • Java

Преимущество Java – в адаптивности к разным платформам. Язык подходит для написания алгоритмов машинного обучения (библиотеки Weka, Deeplearning4j). Также может применяться для создания статистических приложений.  

  • Scala

Может понадобиться для обработки потоковых данных. В языке доступны объектно-ориентированные и функциональные парадигмы программирования. Но для новичков Scala может оказаться сложным в изучении.

  • R

Основная сфера применения Rнаука о данных, включая статистическую обработку данных, машинное обучение. Также этот язык может помочь с визуализацией данных (библиотека ggplot2). Однако сейчас R теряет свою актуальность, уступая в производительности Python.

Чем вы можете заниматься в big data

Работу с большими данными можно разделить на два направления. Первое – создание и поддержка инфраструктуры для сбора, хранения и обработки данных, второе – анализ и извлечение полезной информации. Для каждого из этих процессов нужны специалисты со знанием программирования. В первом направлении задействованы привычные для IT специальности – инженеры, архитекторы, администраторы, но владеющие технологиями для работы с большими данными. Анализ данных – более узкая специализация, часто требующая определенного образования или опыта.

  • Инженер больших данных (Big data engineer)

Разрабатывает технические решения, связанные с хранением и обработкой больших данных. Также он может отвечать за доставку и распределение данных из разных источников (веб-сайт, соцсети, датчики и т.д.) в систему хранилищ.

  • Архитектор баз данных (Data architect)

Проектирует базы данных, исходя из потребностей организации, которая собирает информацию. Архитектор выбирает технологии для хранения и обработки данных.

  • Менеджер баз данных (Database manager)

 Контролирует производительность баз данных и при необходимости устраняет неисправности в их работе.  Специалист обеспечивает постоянную работу серверов, чтобы данные всегда оставались в сохранности.

  • Аналитик данных (Big data analyst)

​​​​​​​Проводит описательный анализ данных, делает их визуализацию. Аналитик находит в массивах разрозненных данных значимую информацию.

  • Исследователь данных (Data scientist)

​​​​​​​Ищет в наборах данных скрытые закономерности, тенденции, исходя из конкретной задачи. Для этой специальности обязательны отличные знания математики и статистики – нужно применять алгоритмы машинного обучения и строить предиктивные модели.

Список возможностей для карьеры в сфере больших данных постоянно расширяется – с развитием технологий появляются новые, более узкие направления:

  • Специалист по управлению данными (Data governance manager)

​​​​​​​Отвечает за процесс сбора данных. Специалист решает, какие данные следует собирать, как их хранить. Также он занимается верификацией данных.

  • Специалист по защите данных (Data security administrator)

​​​​​​​Разрабатывает стратегию защиты данных от несанкционированного доступа. Специалист может следить за безопасностью баз данных, внедрять средства защиты.

Как начать работать с big data

Программист с опытом разработки именно в сфере больших данных – все еще редкая находка для нашей страны. Белорусские компании расширяют фокус поиска и, в первую очередь, обращают внимание на способности кандидатов, а не опыт.

Программисту проще всего перейти на позицию инженера больших данных. Основная часть работы по-прежнему будет связана с кодом, а большие данные станут вашей специализацией. Начните с изучения подходящего для big data языка программирования. Беспроигрышным вариантом будет Java или Python. Если вы сейчас пишите на одном из этих языков, то осваивайте библиотеки для работы с данными. В Python полезно знать библиотеки Numpy, Pandas, SQLAlchemy.

Тем, кто только начнет разбираться с Java или Python, важно понять, как в этих языках реализуется многопоточность и сериализация и как работать с коллекциями. Для позиции junior этих знаний может быть достаточно. Дальше вы сможете изучать технологии, в зависимости от проекта, над которым будете работать. Если хотите повысить свои шансы на получение интересного предложения о работе, то осваивайте Hadoop.

С позиции инженера больших данных в перспективе вы сможете перейти на другую роль. Big data – обширная сфера IT, внутри которой будет появляться все больше специализаций, например, с акцентом на технологии (Hadoop разработчик. Возможно, вас заинтересует архитектура баз данных, и вы будете развиваться в этом направлении. Если у вас есть хорошая математическая подготовка, то можете попробовать себя в машинном обучении. В любом случае, работая над конкретным проектом, легче определиться, что вас увлекает: технические задачи или, например, анализ данных.

В big data сложно практиковаться вне компании – вы не можете дома написать приложение без доступа к терабайтам данных. Если вы уже работаете программистом в IT-секторе, то самым простым способом попробовать свои силы в big data будет проект в вашей компании. Проконсультируйтесь с коллегами, которые занимаются большими данными, узнайте, над чем они сейчас работают и какие технологии используют. Вы можете обсудить с руководством, как вам развиваться в сфере больших данных внутри компании. Если работодатель заинтересован в вашем росте, то он не откажет в помощи.