Резкий рост объемов неструктурированных данных потребовал решения вопроса о способах их обработки и хранения — так появилась парадигма MapReduce, а проект Apache Hadoop стал результатом усилий по организации параллельной обработки данных. Многие производители взяли сегодня на вооружение эти идеи, предложив рынку свои решения для работы с Большими Данными. Не осталась в стороне и корпорация IBM, объединившая все свои адекватные для этой сферы решения в единую платформу. В ее состав вошли:
- Netezza — специализированный программно-аппаратный комплекс для построения аналитических приложений и хранилищ данных;
- nfoSphere BigInsights — решение по анализу и обработке неструктурированных данных на основе технологий Hadoop;
- InfoSphere Streams и Vivisimo — средство анализа потоковой информации и комплексной обработки больших объемов неструктурированных данных.
Netezza
Netezza — аппаратно-программное решение на базе IBM x-Series, поставляемое с предустановленной одноименной СУБД, позволяющей строить хранилище объемом свыше 1 Пбайт. Запросы к системе формулируются на стандартном языке запросов SQL, а для доступа к системе используются протоколы JDBC, OLE DB и ODBC. Загрузка данных может производиться как штатными утилитами, так и средствами доступных на рынке инструментов ETL. Благодаря архитектуре shared nothing (рис. 1), система обеспечивает линейную масштабируемость — при увеличении мощности оборудования производительность растет пропорционально.
Рис. 1. Архитектура Netezza |
В Netezza предусмотрено аппаратное ускорение выполнения запросов SQL. Для этого в системе используются программируемые логические матрицы (FPGA), выполняющие потоковую обработку при их считывании с дисков — за счет фильтрации и декомпрессии уменьшается нагрузка на подсистему ввода/вывода. Кроме того, благодаря возможности перепрограммирования FPGA можно управлять производительностью системы путем обновления наборов инструкций без фактической замены аппаратуры.
При разработке системы особое внимание было уделено удобству использования и минимализму в настройках. Так, например, сжатие данных происходит автоматически и адаптируется к конкретной таблице и типам данных, не требуя от пользователя указания на нужные алгоритмы. Для расширения круга задач и организации параллельной обработки данных можно с помощью языков программирования, таких как Lua, Python, Java, Cи/C++, Fortran и R, писать соответствующие программы. Интеграция системы с пакетами SAS и SPSS позволяет ускорить процесс скоринга данных (присвоения баллов для принятия, например, решения об одобрении или отказе в выдаче кредита).
Система Netezza интегрируется сегодня с существующими продуктами IBM, например с мэйнфреймами, — можно из СУБД DB2 для z/OS автоматически перенаправлять аналитические запросы в Netezza, что позволяет строить эффективные гибридные системы, способные как обрабатывать множество транзакций, так и одновременно сканировать большие объемы информации в поисках ответа на аналитические запросы.
InfoSphere BigInsights
Как известно, Apache Hadoop содержит распределенную файловую систему HDFS, МapReduce — среду выполнения распределенных параллельных заданий и Hadoop Commons — утилиты для интеграции с другими подпроектами. Задания обработки данных в Apache Hadoop должны соответствовать определенному формату и в общем случае реализуются при помощи универсального языка Java. Как следствие, сегодня появилось множество специализированных языков высокого уровня, позволяющих упростить процесс разработки заданий для системы Hadoop: PigLatin, HIVE SQL и разработанный IBM язык Jaql.
Вместе с тем стандартная инфраструктура Hadoop имеет ряд недостатков. Во-первых, файловая система HDFS использует один выделенный сервер для хранения метаданных о том, где и какие части файлов хранятся в кластере. Как следствие, на этот сервер ложится повышенная нагрузка и к нему предъявляются особые требования по части отказоустойчивости. Кроме того, HDFS рассчитана на последовательное чтение и запись больших файлов и плохо справляется со случайными чтениями маленьких порций данных, что затрудняет, например, использование индексов. Надо отметить, что HDFS не соответствует стандарту POSIX и это ограничивает круг умеющих работать с ней администраторов. Во-вторых, в Apache Hadoop мало коннекторов к другим системам и СУБД и нет единой консоли для управления кластером, а все множество компонентов Hadoop нужно устанавливать и конфигурировать отдельно, что может занять значительное время и требует предварительного изучения документации. В-третьих, отсутствуют инструменты визуализации и визуальной обработки данных. В-четвертых, средства разделения доступа и контроля безопасности часто не отвечают требованиям работы с критичной для бизнеса информацией.
Для устранения этих недостатков в IBM BigInsights был сделан ряд усовершенствований. Вместо HDFS можно использовать файловую систему IBM GPFS-SNC, которая, в частности, позволяет распределенно хранить метаданные и выполнять случайные чтения маленьких порций данных, что дает возможность хранить текстовые индексы. Включены коннекторы к DB2, Netezza, средства интеграции со статистическим пакетом R, а также специальный JDBC для обмена данными с другими СУБД. Интегрированный инсталлятор автоматически разворачивает кластер с нужными характеристиками и конфигурирует все компоненты. Компонент BigSheets позволяет анализировать и визуализировать неструктурированную информацию и имеет простой интерфейс (рис. 2), похожий на Excel. При помощи этого инструмента можно обрабатывать огромные объемы данных, хранящиеся в кластере, не обладая при этом навыками программирования на языках SQL, Pig и т. п.
Рис. 2. Пример интерфейса IBM BigInsights по визуализации данных |
Web-консоль администратора позволяет осуществлять мониторинг состояния кластера и балансировку нагрузки при выполнении заданий.
BigInsights может интегрироваться с каталогом LDAP и поддерживает протокол аутентификации Kerberos, а интеграция с продуктом IBM Guardium позволяет производить мониторинг и аудит безопасности. Кроме этого, в системе предусмотрены возможности для текстовой аналитики, например язык высокого уровня AQL для написания аннотаторов. Этот язык очень похож на SQL и позволяет выделять структурированную информацию из текста. BigInsights позволяет также создавать распределенные индексы для полнотекстового поиска.
Вместе с BigInsights поставляется интегрированная среда разработки на базе Eclipse, позволяющая создавать любые приложения для BigInsights и аннотаторы текстов. В качестве базового дистрибутива Hadoop продукт может использовать популярный дистрибутив Cloudera.
InfoSphere Streams и Vivisimo
IBM InfoSphere Streams принадлежит классу продуктов CEP (Complex Event Processing), однако на вход системы могут поступать произвольные данные (текст, аудио, видео, данные от датчиков, данные из реляционных СУБД и т. д), а архитектура рассчитана на высокопроизводительную аналитику в реальном времени, что достигается за счет распределения нагрузки между множеством серверов.
IBM Infosphere Streams состоит из среды разработки и среды выполнения. Первая позволяет описывать поток данных (рис. 3) на декларативном языке SPL, на нем разработчик определяет направленный граф, узлы которого представляют источники данных, приемники и операторы для обработки и анализа. Существует набор готовых «кирпичиков» для строительства графа, а также возможность написания недостающих на языках C++ и Java. Cреда выполнения по заданному графу производит обработку потока данных в имеющейся инфраструктуре серверов.
Рис. 3. Пример обработки потока данных |
Система IBM InfoSphere Streams интегрирована с другими продуктами в платформе — BigInsights и Netezza, которые используются в качестве хранилища, а благодаря поддержке интерфейсов JDBC и ODBC можно работать практически с любыми СУБД. Кроме того, в системе применяются модели IBM SPSS для скоринга в реальном времени, а текстовые аннотаторы, написаные для IBM BigInsights, можно использовать и в Streams, извлекая структурированные данные из потока текстов. Это полезно, например, для анализа сообщений в социальных сетях и реагирования на ключевые слова в чатах и сервисах мгновенных сообщений.
Система Vivisimo призвана дать пользователям средства поиска, организации и анализа данных любых объемов, разных форматов и поступающих из разнородных источников. Иначе говоря, пользователь получает инструмент корпоративного поиска, в котором кроме традиционного поиска по ключевым словам доступны средства динамической категоризации, визуализации и персонализации результатов.
Андрей Выходцев (andrey.vykhodtsev@ru.ibm.com) — специалист по решениям Netezza, IBM в России и СНГ (Москва).