Параллельно и распределенно




Леонид Жуков, профессор кафедры анализа данных и искусственного интеллекта НИУ ВШЭ, раскрывает технические подробности обработки Больших Данных

10:15 16.04.2013   |   1731 |  Валерий Коржов |  Computerworld Россия

Рубрика Технологии



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

Леонид Жуков Трафика
Леонид Жуков: «Для эффективной работы с Большими Данными нужны специалисты, которые могли бы понять, какие данные необходимо собирать, откуда их можно получить, как их обрабатывать и выделить из них 'сигнал', чтобы система действительно могла решать поставленные перед ней задачи»

Автоматизация предприятий порождает огромные потоки данных, которые не всегда удается оперативно обработать, а тем более проанализировать и принять на их основе какие-либо решения. Однако постепенно завоевывают популярность технологии, позволяющие выделять в этих потоках ключевые данные, которые можно в дальнейшем использовать для оперативного вмешательства и решения проблем «на лету». О технологиях, лежащих в основе обработки Больших Данных, рассказывает Леонид Жуков, профессор кафедры анализа данных и искусственного интеллекта отделения прикладной математики и информатики НИУ ВШЭ, научный директор по данным Ancestry.com, соучредитель и технический директор компании «Трафика». Ранее он работал в компаниях Overture, Yahoo, российской «Мастерхост», ряде стартапов.

- Какие технологии легли в основу обработки Больших Данных?

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

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

- Такую же концепцию оптимизации вычислений предлагают и производители графических процессоров типа Nvidia. Есть ли пересечение этих технологий?

Да. Обсчет изображений часто очень хорошо подходит к данной модели вычислений, например в методе ray tracing трассировку каждого луча, то есть нахождение его пересечения с объектом в сцене, можно выполнять независимо и параллельно.

- Какие решения используются для массовой параллельной обработки данных?

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

Наиболее популярная технология обработки Больших Данных, Hadoop, была разработана Дугом Каттингом и позже поддержaна Yahoo в качестве системы заднего плана к поисковому роботу Nutch и позволила масштабировать его для работы с Web в целом. Прототипом системы послужила модель распределенных вычислений MapReduce (см. также «SQL или NoSQL», Computerworld Россия, № 3, 2010. — Прим. ред.), опубликованная за год до этого на научной конференции исследователями из Google. Эта модель которая позволяет массово и параллельно выполнять запросы с данными, представленными в виде «ключ-значение».

Вторым компонентом Больших Данных являются нереляционные СУБД, объединенные общим термином NoSQL. Они являются продолжением и расширением технологии баз данных Berkeley DB, позволяющей хранить в памяти пары «ключ-значение» и быстро с ними работать. Изначально аббревиатура расшифровывалась как «Не SQL», сейчас уже появился вариант «Не только SQL», недавно возникло течение «Новый SQL». Наиболее популярной СУБД типа NoSQL является HBase, которая часто используется совместно с Hadoop. Третьим компонентом является распределенная файловая система HDFS, которая позволяет хранить данные на нескольких узлах кластера таким образом, чтобы данные дублировались для исключения их недоступности. Эта файловая система может использоваться и для сохранения файлов в формате хранения данных NoSQL-базaми.

Однако эти технологии настолько отличаются от того, что уже многие годы развивается в виде реляционных СУБД, что потребовались дополнительные инструменты для преобразования результатов выполнения алгоритмов MapReduce обращения к данным в NoSQL-базах как к имеющим привычное табличное представление данных для их последующей обработки в системах. Для этого были разработаны специальные инструменты, такие как Hive, которые эмулировали запросы типа SQL; правда, работали они не в привычном транзакционном режиме — их необходимо было поставить в очередь на обработку запросов и потом дождаться результатов их исполнения. Тем не менее эти механизмы позволили состыковать алгоритмы MapReduce с уже существующим миром SQL. В частности, они позволили создавать аналитические запросы для проведения быстрого анализа баз данных. Именно эти компоненты и составляют основу технологии Больших Данных.

- В каких областях и для чего можно использовать технологии Больших Данных?

Одной из интересных областей применения сегодня является прогнозирование, которое исходит из того, что в данных есть определенные скрытые закономерности, которые можно выявить по анализу большого их набора. Его, например, можно использовать для предсказания времени и места возможных преступлений в городе.Так, после того как одно из подразделений полиции Лос-Анджелеса стало использовать предсказательную аналитику, заметно сократилось число преступлений в районе. Для предсказаний система использует как последние полицейские отчеты, так и отчеты за предыдущие несколько лет, время, место и характер преступлений, а также данные социологических исследований в городе. Система каждый день выдает патрульным карту района с отмеченными участками, где в этот день в определенное время статистически наиболее вероятно совершение преступлений. Полиция объезжает эти районы, и само присутствие полицейских уже снижает вероятность совершения преступления в это время в этом месте, а также значительно уменьшает время отклика в случае происходящих преступлений.

Прогнозирование также позволяет выявить те параметры, от которых зависит наступление того или иного события. Например, в медицине важно предсказать, как подействует то или иное лекарство. Это зависит от большого числа признаков, которые можно выявить по анализу клинической практики с лекарством и реакции человека на другие лекарства. Так образом, технологию Больших Данных можно использовать для индивидуального подбора лечения, для анализа в том числе и генома конкретного человека и выявления в нем маркеров определенных болезней.

- Но ведь индивидуальная медицина достаточно дорога...

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

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

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

- Однако в этом случае нужно, чтобы инструменты для обработки Больших Данных работали в реальном времени, а не в режиме «запрос-ответ», как NoSQL. Что здесь могут предложить разработчики?

В этом случае используется несколько другая технология обработки потоков данных, примером которой может служить проект Storm, на базе которого построен Twitter. Он позволяет обрабатывать непрерывные потоки данных, выделяя в них пары «ключ-значение» и применяя к ним те же операции, что и в других технологиях работы с данными. Потоковые технологии Больших Данных позволяют оперативно выделять в непрерывных потоках информации важные аномалии. Например, о наводнении в Фукусиме можно было оперативно получить данные из того же Twitter — в определенный момент количество сообщений с этим словом аномально резко возросло, при этом официальных данных о происходящих там событиях еще не было.

- Какие проблемы могут встретиться при внедрении технологий Больших Данных в России?

Основной проблемой является отсутствие специалистов. Для эффективной работы с Большими Данными нужны инженеры и ученые, которые могли бы понять, какие данные необходимо собирать, откуда их можно получить, как их обрабатывать и выделить из них «сигнал», чтобы система действительно могла решать поставленные перед ней задачи. Сейчас эту категорию исследователей называют «ученые по работе с данными» (data scientist). В России таких специалистов очень мало — их явно не хватит для быстрого роста этой отрасли. Кроме того, существующие технологии больших данных в основном построены на проектах с открытыми исходными кодами, поэтому нужны будут специалисты по администрированию Linux, Hadoop, распределенных хранилищ данных и других компонентов технологии.

- Можно ли проблемы нехватки кадров решить с помощью готовых решений?

Скорее всего, нет, поскольку в каждом конкретном случае используются уникальные источники данных. Очень сложно будет сделать такой универсальный продукт, который достаточно просто настроить, и все заработает. Даже для одной отрасли это сделать сложно. Основное время часто уходит на подготовку данных и конструирование признаков, содержащих информацию, а это «ручная работа».


Теги: Читайте больше