Если еще десять лет назад большие данные были достаточно специфичной областью и оставались инструментом для специалистов, работающих в финансовом секторе, биоинформатике и еще паре довольно узко специальных областей, сегодня большие данные все больше проникают в бизнес и затрагивают различные сферы — от анализа социально-экономических процессов в городах до маркетинга и процесса подбора персонала.
В условиях постоянного увеличения количества данных различные компании стремятся ускорить процесс обработки данных, оптимизировать их хранение. Например, обработка данных в пакетном режиме, ставшая уже классикой как для науки, так и для бизнеса, сменяется потоковой обработкой. То есть вместо того, чтобы сначала накапливать огромные массивы данных и уже поверх них запускать процесс обработки, затрачивая при этом достаточно долгое время, специалисты по всему миру работают над механизмами, позволяющими обрабатывать данные по мере их поступления и сразу же получать результат.
К примеру, до недавнего времени Facebook, используя технологии старой парадигмы, гарантировал обновление любого загружаемого пользователем контента в течение двух минут. Сегодня ситуация меняется, и тот же Twitter уже смог сократить это время до двух-трех секунд.
При всем разнообразии типов данных возникает целый ряд подходов к их хранению и обработке. Существуют базы данных SQL и no-SQL (например, PostgreSQL и Cassandra), хранилища данных общего назначения (например, HDFS) и хранилища для специализированных типов данных (например, SciDB, предназначенное для научных массивов). Но за счет необходимости обеспечения гибкости и максимального охвата пользователей все эти решения в большинстве своем предоставляют одинаковые интерфейсы и методы для всей сохраненной информации, поэтому не учитывают их специфику.
Что такое семантика данных и как она поможет в несколько раз сократить время на обработку
Технологиями потоковой обработки уже несколько лет занимаются и ученые Университета ИТМО. Однако в отличие от компаний, использующих решения, предназначенные для оптимизации обработки данных, специалисты решили посмотреть на проблему под другим углом.
«Год назад мы решили рассмотреть направления, отличные от задач оптимизации процессов обработки больших данных. Заниматься исследованием оптимизации обработки — безусловно, необходимо и перспективно, так как данное направление крайне актуально на сегодняшний день, но нас интересовало, какие проблемы нас могут поджидать завтра? Имея на входе все те же большие данные, мы попытались понять, как можно еще эффективнее обрабатывать их с большей выгодой. Причем выгода должна быть во всем: во времени обработки, в необходимом объеме хранения, в удобстве получения и понимания данных. Этот вопрос мы попытались решить, используя саму суть данных, их семантику», — рассказывает Денис Насонов, один из авторов исследования, сотрудник кафедры высокопроизводительных вычислений Университета ИТМО.
Что понимается под семантикой? Она представляет собой совокупность структуры данных (атрибуты, типы данных, типы объектов), взаимосвязей между объектами (например, статья — автор, автор — место работы) и особенностей внутреннего представления данных (например, формат хранимых файлов). На деле это означает, что перед тем, как просто помещать данные в хранилище и держать их там обычными файлами в большом количестве, специалисты пытаются понять, что они из себя представляют.
Этот принцип специалисты кафедры высокопроизводительных вычислений изложили в исследовании, результатом которого стала разработка модульного хранилища Exarch. Его главная цель — обеспечить быстрый доступ к данным, эффективно распределять данные по узлам хранения и легко расширяться для любого формата данных. Результаты работы и ядро хранилища были представлены в рамках международной конференции ICCBDC 2017 (International Conference on Cloud and Big Data Computing) в Лондоне. Авторы исследования отмечают, что применение семантики данных не только во время обработки, но и в организации хранения может значительно повысить скорость операций, а также уменьшить объем хранения данных.
Как это работает?
Представим, что вам необходимо обработать огромный массив гидрометеорологических данных — это необходимо для моделирования и прогнозирования погодных условий в определенной точке Земного шара. Например, такая задача стояла перед специалистами научно-исследовательского института наукоемких компьютерных технологий Университета ИТМО, которые ранее реализовали проект системы поддержки принятия решений для предотвращения наводнений в Петербурге. Проект включал моделирование и прогнозирование развития нагонных наводнений в Петербурге на основе комплекса гидродинамических и вероятностных моделей. При прогнозировании учитывались основные факторы, влияющие на жизненный цикл штормовых нагонов: атмосферное давление, ветер, ледовое покрытие, ветровое волнение, различные гидродинамические процессы.
Но можно ли расширить географию и сделать аналогичное исследование, охватывающее большую территорию? Сейчас специалисты научно-исследовательского института наукоемких компьютерных технологий реализуют проекты, которые способны смоделировать условия на территории всей планеты, а это значит, что ученые сталкиваются с проблемой хранения, обработки и последующего анализа еще большего количества данных.
ВИДЕО: Система поддержки принятия решений для предотвращения нагонных наводнений в Санкт-Петербурге
«При массовом анализе для нас становится критично то, с какой скоростью мы можем получить те или иные данные. Есть большая разница: идет обработка секунду, десять секунд или, например, минуту. Простейший пример: нам надо было обработать порядка 100 тысяч точек за 50 лет по всему региону Арктики, и для того, чтобы из петабайтов данных вытащить около 20-40 параметров одной точки, стандартное, классическое решение требовало порядка нескольких часов. А все из-за непродуманной традиционной организации хранения данных в виде полей, как все привыкли в этой области, и отсутствия механизмов требуемой оптимизации. То есть у нас было огромное количество файлов, где каждый файл — это около 200 мегабайт сжатых данных по нескольким параметрам, содержащих информацию за один час. И если посчитать, сколько часов в 50 годах и помножить это на время извлечения параметров (в одном файле хранилось от 2 до 10 параметров), получается огромное число. При этом каждый файл необходимо открыть, найти нужные параметры в точке, вытащить их, при этом свои ограничения накладывает и скорость сетевого канала, который обеспечивает эту операцию. Поэтому выходило очень долго. А помимо получения из базы параметров 100 тысяч точек, их необходимо было еще и обработать. Можно прикинуть, сколько бы времени потребовалось, чтобы это все организовать», — рассказывает Денис Насонов.
В отличие от классического анализа, когда специалисты работают с файлами, которые содержат некую информацию, ученые решили проанализировать структуру их хранения. Представим, что все данные, которые специалисты получают при моделировании процессов на выходе, — это поля. В частности, если считается Арктика, то уровень воды в этом регионе — это одно большое поле, которое хранится за один час. Однако для построения полноценной модели хранения данных необходимо проанализировать сценарии и обработки в частности, когда необходимо обрабатывать не просто поля, а 100 тысяч географических точек во времени, каждая из которых пронизывает 50 лет данных.
Зная эту специфику, авторы исследования решили реорганизовать данные, и в рамках существующих полей учитывать такую сущность как точка (географическая координата) во времени. Это позволило отойти от ситуации, когда запрос на получение конкретных данных в пространстве упирался в потребность загружать, открывать и закрывать миллионы файлов и искать информацию параметров каждой конкретной точки в различных полях. Процесс реорганизации данных позволил сократить в несколько порядков число запросов на получение информации для нужной точки, а также существенно их ускорить, учитывая привязку всех параметров к точке, рассказывает Денис Насонов. При классическом способе анализа на работу ушли бы месяцы, в результате применения нового подхода время работы с каждой точкой удалось сократить до 20 секунд, а сам анализ до нескольких дней, уточняет он.
Также результаты работы хранилища Exarch авторы статьи сравнили с результатами уже существующих решений. Анализ показал, что предложенный учеными подход к реорганизации данных позволяет экономить время на простых задачах более чем в два раза.
«Мы взяли наше хранилище и сравнили с работой часто используемых хранилищ — это, например, HDFS, Cassandra и получили график: у них 100 секунд, у нас чуть больше 40 секунд, то есть мы наблюдаем сокращение времени более чем в два раза на загрузку, а на чтение этот показатель сократился многократно. В зависимости от объема, от ситуации наше решение показало хорошие результаты: где-то в разы, а где-то в десятки раз», — уточняет Александр Вишератин, первый автор статьи, инженер научно-исследовательского института наукоемких компьютерных технологий.
Дальнейшее развитие
После того, как специалистам удалось получить хорошие результаты на метеорологических данных, следующим шагом станет унификация механизма и его отработка на других, более сложных типах данных — в частности, на анализе данных социальных сетей, а также библиометрических данных из базы Scopus. Кроме того, в будущем авторы разработки планируют сделать ядро хранилища открытым. Разместить репозиторий на GitHub планируется после завершения всех работ — в следующем году.
«Воспользоваться хранилищем сможет кто угодно — начиная от серьезных научных организаций, которые также могут испытывать дефицит в дорогих вычислительных ресурсах и во времени, и заканчивая целым рядом стартапов, которые смогут на этом хорошо сэкономить. Ведь вместо того, чтобы покупать огромное количество вычислительных мощностей на том же Amazon, может быть, стоит задуматься о том, как сделать организацию и обработку ваших данных более эффективной», — резюмирует Денис Насонов.