Big data надолго останется среди востребованных информационных технологий. По прогнозам, к 2025 году предприятия будут создавать около 60% всех мировых данных. Практически непрерывно потоки информации генерируют компании в сфере финансов, телекоммуникаций, электронной коммерции. Подобный бизнес нуждается в технологических решениях, которые помогут эффективно собирать, хранить и использовать большие объемы данных. Это одна из причин, почему в ближайшие годы спрос на профессионалов в big data будет только расти.
Мы расскажем, какие есть специальности в сфере big data и какие основные технологии нужно изучить программисту, чтобы связать свою карьеру с большими данными.
Содержание:
1. Где проходит грань между обычными и большими данными
2. Что нужно знать для работы с большими данными
3. Чем вы можете заниматься в big data
4. Как начать работать с big data
В русском языке для термина big data часто используют кальку с английского – «большие данные». Но где проходит та грань, которая разделяет данные на «большие» и «обычные»? Принято считать, что объем big data начинается с терабайта, так как такое количество данных уже сложно хранить и обрабатывать в реляционных системах. Есть и другие критерии, которые объясняют, почему потребовались новые методы для работы с большими данными.
Многообразие. Большие данные чаще всего состоят из неструктурированной информации, которая может поступать из нескольких источников в виде разных по формату данных (видео и аудиофайлы, текст, изображения и др.). Технологии big data позволяют обрабатывать разнородные данные одновременно.
Скорость накопления. Данные генерируются все быстрее. Например, онлайн-магазину нужно постоянно собирать информацию о количестве клиентов и их покупках. Для хранения таких данных лучше подходят нереляционные базы данных, так как их легко масштабировать горизонтально, добавляя новые сервера (большинство реляционных баз данных масштабируются вертикально за счет увеличения оперативной памяти).
Скорость обработки. Большие данные, не смотря на свой внушительный объем, должны очень быстро обрабатываться, часто – в режиме реального времени. Например, рекомендательные системы в онлайн-магазинах мгновенно анализируют поведение клиента и выдают результат, какие еще товары могут ему понравиться. Такая высокая скорость обработки достигается за счет распределенных вычислений.
Таким образом, для программистов работа с большими данными подразумевает решение сложной, противоречивой задачи: как обеспечить сбор и хранение постоянно растущего объема разнородных данных, достигая при этом очень высокой скорости обработки.
Обработка больших данных – непростая задача для программистов, для решения которой постоянно появляются новые методы и инструменты. Однако есть основной стек технологий, которые чаще всего встречаются в вакансиях.
Работая с большими данными, вы будете обращаться к разным парадигмам программирования: императивной, декларативной и параллельной. Например, для программирования баз данных на языке SQL используется декларативный подход, когда задается задача и нужный результат без указания промежуточных шагов. Чтобы справиться с быстрой обработкой большого массива данных, нужно применять многопоточные и параллельные вычисления. Один из вариантов решения проблемы – парадигма MapReduce. Это вычислительная модель параллельной обработки распределенных данных. Алгоритм позволяет разделить задачи между машинами кластера, чтобы обработка данных происходила одновременно на всех задействованных компьютерах.
На этот вопрос нельзя ответить однозначно. Раньше специализированными языками для аналитики данных считались R и MATLAB, но сегодня выбор у разработчиков больше. Возможно, вам не придется менять свой основной стек технологий, чтобы заниматься обработкой больших данных.
Мы составили список наиболее востребованных языков программирования в этой сфере.
Активно применяется в big data, так как поддерживает множество библиотек для анализа данных (Pandas, Dask, Keras и др.) и может пригодиться для статистики и визуализации. В науке о данных Python используется для выполнения задач машинного обучения (библиотека TensorFlow).
Преимущество Java – в адаптивности к разным платформам. Язык подходит для написания алгоритмов машинного обучения (библиотеки Weka, Deeplearning4j). Также может применяться для создания статистических приложений.
Может понадобиться для обработки потоковых данных. В языке доступны объектно-ориентированные и функциональные парадигмы программирования. Но для новичков Scala может оказаться сложным в изучении.
Основная сфера применения R – наука о данных, включая статистическую обработку данных, машинное обучение. Также этот язык может помочь с визуализацией данных (библиотека ggplot2). Однако сейчас R теряет свою актуальность, уступая в производительности Python.
Работу с большими данными можно разделить на два направления. Первое – создание и поддержка инфраструктуры для сбора, хранения и обработки данных, второе – анализ и извлечение полезной информации. Для каждого из этих процессов нужны специалисты со знанием программирования. В первом направлении задействованы привычные для IT специальности – инженеры, архитекторы, администраторы, но владеющие технологиями для работы с большими данными. Анализ данных – более узкая специализация, часто требующая определенного образования или опыта.
Разрабатывает технические решения, связанные с хранением и обработкой больших данных. Также он может отвечать за доставку и распределение данных из разных источников (веб-сайт, соцсети, датчики и т.д.) в систему хранилищ.
Проектирует базы данных, исходя из потребностей организации, которая собирает информацию. Архитектор выбирает технологии для хранения и обработки данных.
Контролирует производительность баз данных и при необходимости устраняет неисправности в их работе. Специалист обеспечивает постоянную работу серверов, чтобы данные всегда оставались в сохранности.
Проводит описательный анализ данных, делает их визуализацию. Аналитик находит в массивах разрозненных данных значимую информацию.
Ищет в наборах данных скрытые закономерности, тенденции, исходя из конкретной задачи. Для этой специальности обязательны отличные знания математики и статистики – нужно применять алгоритмы машинного обучения и строить предиктивные модели.
Список возможностей для карьеры в сфере больших данных постоянно расширяется – с развитием технологий появляются новые, более узкие направления:
Отвечает за процесс сбора данных. Специалист решает, какие данные следует собирать, как их хранить. Также он занимается верификацией данных.
Разрабатывает стратегию защиты данных от несанкционированного доступа. Специалист может следить за безопасностью баз данных, внедрять средства защиты.
Программист с опытом разработки именно в сфере больших данных – все еще редкая находка для нашей страны. Белорусские компании расширяют фокус поиска и, в первую очередь, обращают внимание на способности кандидатов, а не опыт.
Программисту проще всего перейти на позицию инженера больших данных. Основная часть работы по-прежнему будет связана с кодом, а большие данные станут вашей специализацией. Начните с изучения подходящего для big data языка программирования. Беспроигрышным вариантом будет Java или Python. Если вы сейчас пишите на одном из этих языков, то осваивайте библиотеки для работы с данными. В Python полезно знать библиотеки Numpy, Pandas, SQLAlchemy.
Тем, кто только начнет разбираться с Java или Python, важно понять, как в этих языках реализуется многопоточность и сериализация и как работать с коллекциями. Для позиции junior этих знаний может быть достаточно. Дальше вы сможете изучать технологии, в зависимости от проекта, над которым будете работать. Если хотите повысить свои шансы на получение интересного предложения о работе, то осваивайте Hadoop.
С позиции инженера больших данных в перспективе вы сможете перейти на другую роль. Big data – обширная сфера IT, внутри которой будет появляться все больше специализаций, например, с акцентом на технологии (Hadoop разработчик. Возможно, вас заинтересует архитектура баз данных, и вы будете развиваться в этом направлении. Если у вас есть хорошая математическая подготовка, то можете попробовать себя в машинном обучении. В любом случае, работая над конкретным проектом, легче определиться, что вас увлекает: технические задачи или, например, анализ данных.
В big data сложно практиковаться вне компании – вы не можете дома написать приложение без доступа к терабайтам данных. Если вы уже работаете программистом в IT-секторе, то самым простым способом попробовать свои силы в big data будет проект в вашей компании. Проконсультируйтесь с коллегами, которые занимаются большими данными, узнайте, над чем они сейчас работают и какие технологии используют. Вы можете обсудить с руководством, как вам развиваться в сфере больших данных внутри компании. Если работодатель заинтересован в вашем росте, то он не откажет в помощи.