В 2009 году Intel, Yahoo! и HP объединили свои усилия в рамках проекта Open Cirrus, нацеленного, в частности, на исследование потенциала технологий обработки Больших Данных на базе платформы Hadoop. Партнерам удалось добиться существенного прогресса в понимании потенциала Hadoop в сферах, далеких от изначального предназначения этой платформы — веб-поиска. В 2010 году компания Intel выпускает набор тестов производительности HiBench, объединяющий наиболее перспективные модели использования Hadoop. К этому времени был накоплен богатый опыт анализа производительности и оптимизации аналитических решений на базе Hadoop, поэтому неудивительно, что два гиганта китайского телекоммуникационного рынка, China Mobile и China Unicom, обратили внимание на эту технологию для решения своих задач обработки Больших Данных.

Перед China Mobile стояла задача развития своей биллинговой системы в условиях быстрого роста абонентской базы, однако запрошенные подразделением ИТ инвестиции на обновление существующих RISC-систем превосходили выделенные бизнесом для этого бюджеты. Кроме того, для установки обновлений и расширений требовалось останавливать работу систем, что прерывало бизнес-процессы и могло негативно повлиять на качество сервиса. Поэтому в China Mobile обратили внимание на только начинавший набирать известность пакет Apache Hadoop для обработки данных биллинга. Моделирование общей стоимости владения показало, что хранение и обработка одного терабайта данных в массивно-параллельных решениях составили бы 57 тыс. долл., а для открытой платформы Hadoop, работающей на серверах стандартной архитектуры, — всего 1 тыс. долл. В результате была построена конфигурация на 133 серверах, решение на базе которой позволило всем абонентам China Mobile — а их больше, чем население США и Японии — получить онлайн-доступ к своим счетам с возможностью в режиме реального времени работать со всоими данными за полгода. Кроме того, аналитики China Mobile получили инструменты изучения и анализа предпочтений клиентов, планирования целевых маркетинговых кампаний и новые методы сегментации клиентов.

В 2011 году компания Intel выпустила первую версию того, что впоследствии было названо Intel Distribution for Apache Hadoop (IDH1) с оптимизированным планировщиком Oozie и сжатием данных в HDFS, а в 2012 году, на основе обобщения опыта проектов для China Mobile, издательства McGraw-Hill и научно-исследовательской компании в области генетики NextBio, была выпущена версия IDH 2.0. В проекте для NextBio речь идет о предоставлении облачного сервиса компаниям-разработчикам лекарств, построенного на базе IDH2.0 и способного в реальном времени обрабатывать миллиарды геномных записей. Для клиентов NextBio использование IDH означает более быстрый анализ данных при создании новых лекарств, а значит, и сокращение времени, требуемого для вывода препаратов на рынок. В частности, использование IDH на аппаратной платформе Xeon E5-2680 на 85–90% увеличивает пропускную способность при работе с геномными данными, требуя на 60% меньше серверов. За счет использования встроенных в Hadoop средств сжатия, оптимизированных под процессоры Intel, требуется в шесть раз меньший объем хранилища данных. Дистрибутив Hadoop от Intel, начиная с релиза 2.3, доступен сегодня и в России.

Особенности IDH

Продукт IDH на базе Apache Hadoop представляет собой комплексное программное решение, обеспечивающее наилучшую производительность, безопасность и масштабируемость при развертывании на конфигурациях на базе процессоров  Intel Xeon, систем хранения Intel SSD и сетевых решений  Intel 10-Gigabit Ethernet. Особенностью продукта является наличие инструментария для эффективного развертывания, конфигурации и мониторинга конечного решения на базе IDH. На сером фоне (рис. 1) отмечены  компоненты, включенные из Apache Hadoop без изменений, на голубом фоне — оптимизированные Intel компоненты, имеющие статус Open Source, а на синем фоне — коммерческие компоненты, доступные в рамках IDH. 

Рис. 1. Архитектура IDH
Рис. 1. Архитектура IDH

 

Компонент Intel Manager (рис. 1) доступен в составе коммерческого дистрибутива IDH и предназначен для облегчения процесса развертывания решения на базе Hadoop, а также управления, мониторинга, отладки и настройки безопасности кластеров. Остальные компоненты (планировщик Oozie, скриптовый язык Pig, библиотека алгоритмов машинного обучения Mahout, коннекторы для обработки статистики на языке R) включены в IDH текущей версии без изменений. Такие компоненты Apache Hadoop, как Yarn, HDFS и Hive, были оптимизированы для достижения наилучшей производительности, безопасности и масштабируемости при работе на серверах стандартной архитектуры. Примечательно, что компания Intel, входящая в Apache Software Foundation, возвращает сообществу львиную долю кода, включенного в дистрибутив IDH.

Для IDH3 предусмотрено два вида поддержки пользователей: стандартный 8х5 и премиальный 24х7. Полная доступность продукта во всех регионах, в том числе и в России, планируется к концу 2013 года. Помимо доступности IDH3 непосредственно на платформах от Intel, сейчас идет работа с компаниями Cisco, Cray, Dell, Red Hat, Revolution Analytics, SAP и SAS над интеграцией IDH в решения этих производителей.

HiBench — тестирование Hadoop

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

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

Микробенчмарки состоят их трех программ: Sort, WordCount и TeraSort, включаемых в стандартный пакет Hadoop. При этом Sort (сортировка) и WordCount (подсчет количества слов) — репрезентативные ядра многих реальных задач MapReduce, работающих с неструктурированными данными. В частности, эти ядра входят в задачи трансформации данных из одного представления в другое, а также играют важную роль в извлечении подмножеств данных из большого массива. Программа TeraSort осуществляет сортировку 10 млрд записей длиной 100 байт и служит хорошим индикатором сбалансированности вычислительной и сетевой подсистем, а также подсистемы ввода/вывода.

  Компания Intel расширила функциональность теста  DFSIO из стандартного пакета Hadoop, позволяющего оценить эффективность агрегированной пропускной способности файловой системы HDFS. Расширение связано с более аккуратнонй оценкой  производительности операций ввода/вывода в случае, когда при выполнении задач Map возникают задержки или спекулятивное исполнение.

В категории веб-поиска пакет HiBench включает два теста: Nutch Indexing и Page Rank — представляющих одну из наиболее распространенных областей применения MapReduce. Первый тест базируется на открытом поисковом движке Nutch — специалисты Intel использовали часть кода Nutch для зеркалирования страниц Wikipedia и генерации 2,5 млн веб-страниц в качестве тестового массива. Тест Page Rank — это открытая реализация алгоритма определения ранга страниц из библиотеки машинного обучения Mahout.

В категорию «машинное обучение» вошли два теста: Bayessian Classification (байесова классификация) и K-means Clustering (алгоритм кластеризации данных k-means) — оба являются репрезентативными представителями распространенной модели использования Hadoop для масштабных задач машинного обучения. Первый тест реализует стадию обучения в модели наивного байесовского классификатора (популярный алгоритм в решении проблем data mining). Данные для классификатора извлекаются из подмножества страниц Wikipedia в виде нескольких файлов. Второй тест реализует стадию кластеризации данных алгоритмом k-means, который также широко распространен в задачах data mining. Входными данными для этого приложения является набор многомерных наблюдений, генерируемых случайным образом по заданному распределению вероятностей.

В категории структурированных аналитических запросов два теста: Hive Join и Hive Aggregation из комплекта Hive Performance Benchmarks — оба являются типичными представителями широко распространенной модели использования Hadoop для генерации сложных аналитических запросов к структурированным данным (реляционным таблицам). Программа Hive Aggregation вычисляет сумму по каждой группе в одной таблице, предназначенной только для чтения, а Hive Join вычисляет среднее и сумму по каждой подгруппе записей путем объединения двух различных таблиц.

 

Рис. 2. Пример анализа динамики исполнения тестов HiBench средствами HiTune
Рис. 2. Пример анализа динамики исполнения тестов HiBench средствами HiTune

Компрессия и декомпрессия данных являются неотъемлемой фазой при работе со многими задачами Больших Данных для минимизации хранилища, снижения нагрузки на дисковую и сетевые подсистемы, исполняющие задачи MapReduce. Именно поэтому каждый из тестов набора HiBench (рис. 2), за исключением DFSIO, может быть сконфигурирован для запуска как в режиме компрессии данных, так и без нее.

Профилировщик производительности

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

Подход, реализованный в HiTune, состоит в распределенном инструментировании каждого отдельного узла кластера Hadoop с последующей агрегацией результатов для анализа. Легковесный агент запускается на каждом из узлов кластера и периодически, либо по заданному событию, инспектирует динамику исполнения программ и системы на каждом локальном узле. Собранная агентами информация записывается в блок агрегации в заданном формате и передается в отдельный кластер для анализа. При этом любое стандартное ПО для распределенного ведения журнала (например, Chukwa, Scribe, Flum — программы для обработки логов журнала) может быть использовано в качестве блока агрегации. Блок анализа осуществляет непосредственный анализ собранных данных и генерацию отчетов (рис. 2). 

Примеры оптимизации IDH

Кроме работы с конечными приложениями, HiTune широко применяется при работе над оптимизацией IDH, в частности, с помощью HiTune была обнаружена проблема неэффективной планировки задач в Hadoop 0.20.1 в случае, когда фаза Map не является узким местом для процессора и системы ввода/вывода. Такая ситуация возникает, например, при сортировке большого числа относительно малых по размеру файлов, и планировщик версии 0.20.1 в каждый квант времени назначает лишь одну задачу на узел-решатель, при этом давая приоритет задачам Map над задачами Reduce. Однако когда задача Map мала и успевает завершиться в течение одного кванта времени, то планировщик на следующий квант опять ставит на исполнение очередную задачу Map, откладывая исполнение задач Reduce и ограничивая тем самым возможный параллелизм исполнения. Улучшенный планировщик, интегрированный в IDH, позволяет запускать более одной задачи за квант времени, причем включая и задачи Reduce.

Другим примером использования HiTune для оптимизации IDH является идентификация узкого места на этапе копирования промежуточных данных из фазы Map для фазы Reduce при включенном режиме компрессии файлов. В результате проведенного анализа выяснилось, что оригинальный кодек компрессии не справляется с заданной нагрузкой и был заменен на улучшенный кодек LZO.

В обоих примерах стандартные инструменты анализа производительности Hadoop не смогли идентифицировать узкие места.

Еще одним примером оптимизаций на стыке повышения производительности и безопасности является включение аппаратного ускорения шифрования, использующего набор инструкций AES-NI процессоров Xeon, ускоряющих программную реализацию алгоритма шифрования AES и операции модульной арифметики. Тесты показывают, что использование этих инструкций может ускорить скорость шифрования в кластере Apache Hadoop в 5 раз, а скорость декодирования — до 20 раз. Используя столь высокую скорость шифрования, IDH предоставляет встроенную поддержку защиты передачи данных. Шифрование прозрачно для пользователей, может осуществляться на уровне отдельных файлов и работать в комбинации с внешними приложениями по управлению ключами шифрования. На данный момент IDH поддерживает Java KeyStore.

 

Рис. 3. Шифрование в IDH
Рис. 3. Шифрование в IDH

Чтобы использовать возможности аппаратного шифрования, файлы с критичными данными должны быть зашифрованы внешними приложениями еще до того, как будут переданы на кластер Apache Hadoop и загружены на HDFS, при этом к каждому файлу должен прилагаться соответствующий ключ (рис. 3). Если бы файлы шифровались после их загрузки, они бы оставались в расшифрованном виде на кластере, что  является уязвимостью системы  безопасности. В процессе работы при необходимости файлы расшифровываются «на лету» и снова зашифровываются при сохранении. Исходные данные и результаты обработки никогда не сохраняются и не передаются в открытом виде, даже если сохраняются внутри кластера в файловых системах, отличных от HDFS.

Помимо шифрования, в IDH реализована поддержка контроля доступа и управления ролями для HBase — базы данных для больших объемов данных, что позволяет организациям определить, кто имеет доступ к данным и откуда, реализовать поддержку множественной (multi-tenancy) аренды. Такая поддержка важна сегодня для сервис-провайдеров облачных решений.

Еще один инструмент, включенный в IDH (Intel Active Tuner for Apache Hadoop), предназначен для автоматического подбора оптимальной конфигурации, что экономит время на ручном подборе параметров. До сих пор такое конфигурирование требовало детального понимания работы каждого приложения, наличия необходимых для его работы системных ресурсов, знания нюансов конфигурирования Hadoop и большого количества тестов.

Технологии обработки Больших Данных в России

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

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

В области развития облачных аналитических сервисов на базе открытых технологий перспективна связка Apache Hadoop и OpenStack. В области аналитики ведущие игроки ИТ-рынка активно инвестируют в исследования и разработку аналитических решений следующего поколения, характеризующихся комплексным подходом к дескриптивному и предсказательному анализу данных в реальном времени. Подобные решения базируются на передовых результатах многодисциплинарных исследований в области вычислительной статистики, теории графов, линейных и нелинейных численных методов. Отечественным специалистам есть что предложить в этих областях, поэтому большинство крупных игроков рынка аналитики Больших Данных имеют соответствующие научно-исследовательские подразделения и лаборатории на территории России.

Показательным примером взаимодействия Intel с ведущими университетами является проект Intel Labs с университетом Карнеги – Меллона по разработке эффективных методов выражения параллелизма с помощью графов. В отличие от модели MapReduce, допускающей эффективный параллелизм только в случае существенно независимых данных, современные методы анализа графов расширяют класс аналитических задач, допускающих эффективное распараллеливание. Разработанный совместно с университетом Карнеги – Меллона пакет Intel GraphBuilder, представляющий собой библиотеку для построения графов из больших объемов данных и визуализации отношений между ними, использует Apache Hadoop для поиска ценных взаимосвязей между распределенными данными и может стать полезным расширением платформы Hadoop в будущем.

Сергей Майданов (sergey.maidanov@intel.com) — руководитель отдела Intel Numerics Russia, Вадим Сухомлинов (vadim.sukhomlinov@intel.com) — руководитель направления стратегического развития бизнеса Intel (Москва).