Сегодня наблюдается всплеск интереса к машинному обучению, подогреваемый ростом производительности вычислительных систем, однако многие алгоритмы, хорошо работающие на одной архитектуре, могут оказаться бесполезными при обработке больших объемов данных, поэтому требуется не только выбрать правильную платформу, но и адаптировать инструменты к конкретной специфике систем. Не стало исключением и применение методов машинного обучения вместе с Hadoop для решения многочисленных задач Больших Данных.
Начиная с 2010 года у корпорации IBM имеется свой дистрибутив Hadoop — BigInsights, построенный на базе открытого ядра Apache Hadoop — IBM Open Platform with Apache Hadoop. Дистрибутив включает в себя основные компоненты стека Hadoop (HDFS, YARN, MapReduce, Ambari, HBase, Hive, Spark и др.), а его архитектура предполагает расширение стандартного функционала Hadoop на сферу анализа корпоративных данных. Такие расширения позволяют использовать все возможности SQL для интеграции данных сторонних и унаследованных систем с данными Hadoop, применять статистические пакеты и программы на языке R при обработке данных кластера, а также выполнять с помощью специализированной библиотеки параллельный анализ на базе алгоритмов машинного обучения.
Чем выше популярность Hadoop, тем чаще возникает задача предоставления доступа к данным широкому кругу конечных пользователей, причем через знакомые им инструменты, например SQL. Для этого в BigInsights имеется модуль BigSQL, который позволяет работать с SQL-запросами и содержит следующие инструменты: оптимизатор запросов; систему управления памятью, превышающей физические объемы памяти кластера; систему управления нагрузкой; средства обработки данных в файловой системе HDFS и из каталога HСatalog, применяемого в Hive [1]; драйверы DB2 (ODBC, JDBC) на клиентской стороне; средства поддержки Kerberos и LDAP; инструменты ретроспективного отслеживания действий пользователей и ведения политики аудита. Кроме того, подсистема BigSQL выполняется на уровне машинного кода, без использования виртуальной машины и MapReduce, что позволяет сократить время выполнения запросов.
Для обеспечения сквозного доступа к источникам данных, отличным от Hadoop, в BigSQL реализована поддержка федеративных запросов, позволяющих объединять данные из Hadoop с данными из СУБД Oracle, DB2, Teradata, PureData Systems for Analytics (Netezza) и Microsoft SQL Server. Система анализирует запрос пользователя и в соответствии с указанными в нем условиями находит в заданном источнике нужные сведения, что позволяет сократить объем передаваемых данных.
В BigInsights имеется механизм анализа текстов с помощью универсальной библиотеки правил или собственных правил пользователя [2], что позволяет запрашивать и идентифицировать требуемые элементы в документах, сообщениях, системных журналах веб-серверов и приложений, включая имена, адреса электронной почты, почтовые адреса, номера телефонов, URL-адреса, названия совместных предприятий, партнерств и т. п.
Снижение стоимости вычислительных ресурсов способствовало более широкому применению машинного обучения для решения задач Больших Данных — алгоритмы и методы машинного обучения сначала адаптировались и переносились на MapReduce (библиотека Apache Mahout), а затем появились Spark и библиотека MLlib, различные реализации языка R на Hadoop (RHIPE, RHadoop, BigR или SparkR), и, наконец, на рынок вышли готовые решения — например, пакет статистики SPSS. Не осталась в стороне и IBM, предложившая такие инструменты машинного обучения, как BigR и SystemML.
Система BigR (рис. 1) содержит механизмы создания R-скриптов для работы с кластером Hadoop — пользователь может изучать, трансформировать и анализировать данные в BigInsights с помощью знакомого ему синтаксиса R. Применяя такие классы, как bigr.frame, bigr.vector и bigr.lis, можно реализовать соответствующие коллекции языка R — data.frames, vectors и frames. При этом функции R можно переносить непосредственно в Hadoop, а через механизмы groupApply, rowApply и tableApply они могут быть отправлены на исполнение в кластер — BigInsights распараллеливает выполнение и предоставляет консолидированный результат.
Рис. 1. Структура BigR |
BigR предоставляет возможность внутри R-скрипта использовать готовые масштабируемые алгоритмы анализа данных: SVM (метод опорных векторов, аккумулирующий несколько схожих алгоритмов обучения с учителем для решения, — например, задач классификации и регрессионного анализа), скоринг, k-Means и другие алгоритмы, реализация которых на MapReduce скрывает от пользователя сложность взаимодействия R с Hadoop.
Библиотека SystemML (рис. 2) изначально поставлялась как опция дистрибутива BigInsights, а в конце 2015 года была предложена сообществу Open Source и включена в состав Apache Incubator. Библиотека содержит инструменты и высокоуровневый декларативный язык для написания алгоритмов машинного обучения и их автоматического масштабирования средствами Hadoop или Spark для работы с большими наборами данных. В библиотеке реализованы алгоритмы решения задач классификации, кластеризации, регрессии, матричной факторизации и анализа выживаемости.
Рис. 2. Структура SystemML |
Язык DML (Declarative Machine Learning Language) в SystemML похож на R или Python и включает в себя примитивы линейной алгебры, такие как операции с векторами или матрицами, статистические функции и конструкции для описания алгоритмов машинного обучения. Вычисления SystemML могут выполняться в автономном режиме на локальной машине для разработки алгоритмов и тестирования, а также в режиме с использованием мощностей Hadoop или Spark. Кроме того, через встроенные API приложения на DML могут расширяться с помощью Java и Scala [3]. Встроенные механизмы SystemML принимают скомпилированную модель на DML и оптимизируют ее, основываясь на наборе данных и характеристиках кластера, что позволяет значительно сократить объем ручных настроек.
При использовании инструментов машинного обучения требуется учитывать фактор масштаба, однако выгрузка данных из Hadoop и их анализ на выделенном сервере могут вызвать непозволительные задержки — в сервере IBM SPSS Analytic Server обработка больших объемов неструктурированных данных и решение аналитических задач выполняются непосредственно на кластере Hadoop без их переноса на вычислитель. После конфигурирования источников данных BigInsights к ним можно получать доступ через SPSS Analytic Server. Поддерживаются такие источники, как HDFS и HСatalog, который служит шлюзом к СУБД NoSQL, а также Hive, HBase, Accumulo, JSON и XML.
Кроме HDFS, решение IBM BigInsights поддерживает оптимизированную файловую систему GPFS (General Parallel File System), доступ к которой осуществляется через стандартные библиотеки Hadoop. В GPFS имеется возможность иерархического управления хранением данных, что позволяет эффективно использовать диски кластера с разной производительностью, причем данные распределяются не на один локальный диск, как в HDFS, а на несколько. Система GPFS не имеет единой точки отказа — ее архитектура поддерживает распределенные метаданные, репликацию данных и метаданных, а также автоматическое восстановление и переназначение узлов после сбоев. Кроме того, GPFS является POSIX-совместимой файловой системой, благодаря чему с ней можно работать, используя привычные POSIX API, утилиты и приложения, обновлять и удалять данные, а также избежать ограничений производительности.
***
Платформа IBM BigInsights вместе с SystemML и BigR расширяет функциональность Apache Hadoop для выполнения задач корпоративных пользователей. По сути, инструмент SystemML позволяет сообществу OpenSource масштабировать алгоритмы машинного обучения для работы с задачами, принадлежащими классу Больших Данных. Это дает возможность аналитикам, не имеющим глубоких знаний в машинном обучении, встраивать соответствующие средства в свои приложения и использовать их в любых специфических сценариях на любых аппаратных платформах.
Литература
- Леонид Черняк. Платформы для Больших Данных // Открытые системы.СУБД. — 2012. — № 7. — С. 10–14. URL: http://www.osp.ru/os/2012/07/13017635 (дата обращения: 18.03.2016).
- Наталья Дубова. Большие Данные крупным планом // Открытые системы.СУБД. — 2011. — №1 0. — С. 30–33. URL: http://www.osp.ru/os/2011/10/13012225 (дата обращения: 18.03.2016).
- Андрей Николаенко, Дмитрий Волков. Новые инструменты Hadoop // Открытые системы.СУБД. — 2014. — № 10. — С. 12–14. URL: http://www.osp.ru/os/2014/10/13044382 (дата обращения: 18.03.2016).
Андрей Орлов (Andrey.Orlov@ru.ibm.com) — эксперт по решениям IBM Big Data, IBM в России и СНГ.