УДК 004.75
ИССЛЕДОВАНИЕ ВОЗМОЖНОСТЕЙ ПРИМЕНЕНИЯ МОДУЛЯ APACHE SPARK ДЛЯ ИНТЕЛЛЕКТУАЛЬНОЙ ОБРАБОТКИ РАЗНОРОДНЫХ ДАННЫХ
С.М. Макеев, А.А. Воробьев, Е.В. Грушевая
В статье рассматривается возможность применения модуля со свободной лицензией Аpache Spark для интеллектуальной обработки больших данных на примере классификации статей из информационных систем с использованием машинного обучения.
Ключевые слова: разнородные данные, Apache Hadoop, модуль Apache Spark, MapReduce, метод опорных векторов.
Актуальность темы
Стремительное развитие информационных технологий, а именно, их глобализация и возможность мобильного доступа с любых устройств к данным, дало толчок к развитию парадигмы «больших данных». Большие данные (Big Data) - это совокупность различных эффективных подходов и методов работы в условиях постоянного прироста информации, отличающуюся не только огромными объемами, но и разнородностью данных (структурированные данные; медиа, текстовые, геопространственные и другие объекты), которые невозможно обрабатывать традиционными способами [1].
Большие данные ранее не представляли ценности для анализа, так как их обработка была затруднена из-за нехватки вычислительных мощностей и отсутствия необходимых инструментов. Проблемы обработки больших данных заключаются в следующем:
- постоянно растущий объем информации, который необходимо анализировать;
- необходимость оперативной обработки данных;
- одновременная обработка различных типов данных.
Традиционные средства работы с данными оказались не способными справляться с постоянным приростом информации. В связи с этим появилась необходимость создания и внедрения новых информационных технологий. Одной из таких технологий стал проект Apache Hadoop [1,2]. Он представляет из себя набор программных средств для сбора, хранения и обработки структурированных и неструктурированных данных на узлах высокопроизводительного кластера [3].
Платформа Hadoop состоит из четырех основных подсистем:
- Hadoop Common - это набор библиотек, который предназначен для управления файловой системой, а также это специализированные сценарии создания инфраструктуры обработки массивов данных и управления этой обработкой;
- HDFS (Hadoop Distributed File System) - это распределенная файловая система, которая отвечает за хранение и организацию данных в системе Hadoop таким образом, чтобы обеспечивалась независимость от сбоев за счет избыточности данных, т.е. создания копий фрагментов данных между узлами;
- YARN - подсистема планирования заданий и управления ресурсами кластера Hadoop с любой архитектурой между различными приложениями;
- MapReduce - алгоритм параллельной обработки больших объемов данных в рамках вычислительного кластера, основанный на разделении процессов на независимые задачи.
В рамках парадигмы параллельной обработки больших данных как развитие алгоритма MapReduce был разработан сообществом программистов модуль Apache Spark [4]. В нем были исправлены недостатки MapReduce, а также добавлены дополнительные инструменты, в частности библиотека машинного обучения.
254
Целью работы является анализ возможностей использования модуля Apache Spark для классификации больших данных с использованием машинного обучения. Для достижения цели был разработан макет, а также методика его настройки. Постановка задачи: на разработанном макете, в состав которого входит модуль Apache Spark, произвести обработку полученных статей из нескольких источников с помощью метода опорных векторов и сравнить результаты классификации с полученными в MapReduce.
Обзор существующих решений по обработке больших данных
Для обработки больших данных сообществом программистов разрабатывается огромное количество различных инструментов. Однако, не все получают широкое применение по следующим причинам:
- отсутствие технической документации;
- необходимость в наличии специальных знаний и навыков от пользователя;
- непонятный и неудобный интерфейс.
Поэтому многие инструменты работы с большими данными не получили широкого применения. В рамках данного раздела статьи будут рассмотрены два наиболее популярных модуля обработки больших данных, MapReduce и Apache Spark.
MapReduce - модуль создания сценариев параллельной обработки больших объемов данных. Работа данного модуля состоит из двух фаз или функций: map и reduce. На первой фазе, Мap, принимаются входные данные и пользовательские функции, согласно которым будет выполняться обработка. Все данные поступают на главный узел, после чего по блокам (наборы данных заданной длинны) распределяются на подчиненные узлы, где над каждым блоком данных обработка происходит локально. Блоки используются для удобства реализации параллельной обработки, так как все операции с данными осуществляются на рабочих узлах, т.е. в месте нахождения блоков. Также данные, разбитые поблочно, удобнее реплицировать на вычислительные узлы. На каждом рабочем узле происходит присвоение полученным блокам данных параметров -«ключ/значение», после чего данные обрабатывается функцией, заданной пользователем. На второй фазе, Reduce, главный узел получает частные результаты от рабочих узлов и передает их на свободные узлы. После чего на рабочих узлах промежуточные результаты группируются по параметрам «ключ/значение», сворачиваются в один блок и отправляются на главный узел, который формирует окончательное решение задачи. На рис.1 представлена упрощенная модель функционирования MapReduce.
Рис. 1. Упрощенная модель функционирования MapReduce
255
Несмотря на простоту реализации вычислений, модуль MapReduce имеет достаточно важный недостаток. Это невозможность решения итеративных задач в режиме реального времени, что достаточно важно для классификации данных с использованием методов машинного обучения. То есть запись промежуточных результатов, полученных на шаге Map, не происходит, что не дает возможность использовать опыт предыдущих вычислений.
Для устранения этих недостатков сообществом программистов был разработан модуль Apache Spark. Данный модуль - это универсальная и высокопроизводительная вычислительная платформа, которая способна практически в режиме реального времени обрабатывать как структурированные, так и не структурированные данные. Основные компоненты Apache Spark представлены на рис. 2.
Spark SQL Spark Streaming Mlib GraphX
(обработка структурирован ных данных) [обработка данных в режиме реального времени) (SuGnuOTehäM^iüJMHHOrO общения) |cf3pat^T>:a графов)
Spark Core
Standalone Scheduler YAHN IHadoop cluster) Meios
Рис. 2. Основные компоненты Apache Spark
Управляющим модулем в Apache Spark является модуль Spark Core. Он реализует основные функциональные возможности Apache Spark, включая компоненты, осуществляющие планирование заданий, управления памятью, обработку ошибок, взаимодействие с системами хранения данных, например, HDFS. Такие компоненты, как YARN, Mesos, Standalone Scheduler являются диспетчерами кластера. Они обеспечивают эффективное горизонтальное масштабирование от одного узла до многих тысяч узлов. Apache Spark может работать с любым из приведенных выше диспетчеров кластера [5].
Также в Apache Spark входит множество инструментов для обработки данных такие, как Spark SQL - это пакет для работы со структурированными данными. Он позволяет извлекать данные с помощью инструкций на языке SQL. Spark Streaming - это компонент для обработки потоковых данных (файлы журналов веб-серверов, очереди сообщений, посылаемых пользователями веб-служб). MLlib - это библиотека, реализующая механизмы машинного обучения. GraphX - это библиотека обобщенных алгоритмов работы с графами [5].
Главным преимуществом Apache Spark является то, что он создавался с целью унификации использования на различных кластерных платформах и охвата как можно большего функционала по работе с большими данными (приложения пакетной обработки, интерактивные запросы, потоковая обработка) [5].
В табл. 1 рассмотрены основные возможности MapReduce и Apache Spark по работе с распределенными данными.
Таблица 1
Сравнение возможностей фреймворков MapReduce и Apache Spark
Возможности Hadoop MapReduce Apache Spark
Распараллеливание задач + +
Применение горизонтальной масштабируемость + +
Обработка структурированный и неструктурированных данных + +
Окончание табл. 1
Возможности Hadoop MapReduce Apache Spark
Обработка данных в режиме реального времени (потоковая обработка) - +
Работа с дисковой памятью (запись промежуточных результатов вычислений на диск) + +
Возможность запуска итеративных программ (проведение итеративного анализа) +
Возможность управления ресурсами + -
Использование оперативной памяти для промежуточных вычислений - +
Реализация алгоритмов машинного обучения - +
Простота настройки для обработки больших данных + -
Количество реализованных возможностей 6 8
Количество не реализованных возможностей 4 2
В результате сравнения видно, что при разработке Apache Spark были устранены некоторые недостатки Hadoop MapReduce. В частности, появилась возможность работы с итеративными программами, также появились инструменты для работы с алгоритмами машинного обучения, а именно библиотека MLlib.
Не смотря на явное преимущество, Apache Spark не является универсальным инструментом для работы с данными, потому что для каждой конкретной задачи необходимо его конфигурирование [6].
Пример применения модуля Apache Spark для классификации данных В рамках исследования возможностей применения модуля Apache Spark для интеллектуальной обработки больших данных был разработан стенд, представленный на рис.3.
Рис. 3. Структурная схема макета вычислительного кластера, в состав которого входит модуль Apache Spark
257
В рамках статьи подробно рассматривается модуль обработки данных. На стенде он представлен в виде вычислительного кластера на базе платформы Apache Ha-doop. В состав кластера входит три узла: один управляющий и два рабочих. На каждом из узлов была установлена файловая система HDFS. На управляющем узле был установлен менеджер кластера Hadoop YARN. Также на каждый узел были установлены основные компоненты Apache Spark. На управляющем узле дополнительно была настроена служба SparkMaster, на рабочих узлах - SparkWorker.
В Apache Spark все вычисления представляются в виде операций с коллекциями данных, которые автоматически распараллеливаются в кластере. Эти коллекции называются устойчивыми наборами данных (RDD). К RDD можно применять операции преобразования и действия. Операции преобразования такие, как, например, map(), fil-ter(), groupByKey(), union() и другие, в результате действия возвращают новые наборы RDD. Операции действия, reduce(), count(), first(), save() и другие, возвращают конкретное значение.
В результате исследования технической документации от разработчиков Apache Spark было выявлено, что все данные операции работают с уже известными заранее наборами данных [6]. В случае, когда исследователь заранее не может предположить, какого вида информацию ему придется анализировать, используется машинное обучение. Для этого в Apache Spark настраивается специализированная библиотека MLlib. В данной библиотеке реализовано большое количество алгоритмов классификации с учителем: логистическая регрессия, классификатор дерева решений, многослойный персептронный классификатор, метод градиентного спуска, метод опорных векторов, наивный Байесовский классификатор и т.д. [6]. В рамках задачи анализа возможностей использования модуля Apache Spark для классификации больших данных с использованием машинного обучения было необходимо провести эксперимент по классификации статей с использованием разработанного стенда и стороннего программного обеспечения MapReduce.
Исследование литературы [7,8] показало, что для решения задачи классификации в рамках работы актуальным является применение метода опорных векторов. Это связанно с тем, что для расчетов не требуется больших вычислительных затрат. Также у данного метода достаточно высокая устойчивость к ошибкам. Результаты сравнения методов классификации представлены в табл. 2.
Таблица 2
Сравнение методов классификации текстов
Методы Легкость интерпретации Простота реализации Вычислительные затраты Скорость вычисления Устойчивость к шумам
Наивный Байесовский классификатор высокая высокая низкие высокая низкая
Дерево принятия решений низкая высокая высокие зависит от объема данных низкая
К- ближайших соседей низкая средняя высокие зависит от объема данных средняя
Опорных векторов высокая средняя низкие высокая высокая
Постановка задачи метода опорных векторов формулируется следующим образом:
Дано: |хрХ2,.. .,ХП } - множество статей; {СрС2,.. .,СП } - множество классов.
Необходимо найти такую целевую функцию J, которая определяла, к
какому классу отнести конкретную статью.
Формализованный вид целевой функции можно представить формулой под цифрой 1.
0,еслих £ с.
1 -1 (1)
1,еслих. ес. 1 j
F| x ,x ^ J
Функция F[ Xj,Xj ) показывает, принадлежит конкретная статья к одному из
заданных классов. Следовательно, если Xl,Xj ) = 0 - статья не принадлежит классу, X1,Xj ^ = 1 - статья принадлежит к классу. В результате вычислений строиться
если
матрица, где столбцы соответствуют конкретной статье, строка - одному из заданных классов. Данная матрица представлена под цифрой 2.
х
n
c1 1 0 0 1 ...... 0 ... 1 (2)
c2 0 1 10 ...... 1 ... 0
В качестве объектов классификации используются статьи из нескольких информационных источников, заранее собранные и размещенные в файловой системе HDFS разработанного стенда. В рамках исследования было использовано 70 статей из нескольких источников форматов .txt и .doc. Средний объем одного документа приблизительно равен 25 Кб.
Классы, на которые будут разбиваться статьи, заданы следующие:
- протестная активность, характеризующаяся количеством проведенных митингов, собраний, выступлений с обращениями к органам государственной власти;
- оценка деятельности органов государственной власти, характеризующаяся количеством положительных или отрицательных отзывов об органах государственной власти.
После того, как были определены исходные данные, строится обучающая вы-
б°рка Ixpcj (x2,c2, (xn,cn J} где Ц^! Ц,с21-, (xn,cn J
- множество статей, распределенных по заданным классам.
В результате работы метода опорных векторов получаем классифицирующую функцию F(x) = sign((w,x) + bJ, где (w,x)- скалярное произведение, w - нормальный вектор к разделяющей гиперплоскости, b -вспомогательный параметр. Выбор именно такой функции неслучаен: любая гиперплоскость может быть задана в виде ((w,x) + b) = 0. Также решение задачи можно представить графически в виде гиперплоскости с нанесенными на нее точками, объектами классификации, и разделяющей прямой, которая делит объекты на классы. На рис. 4 представлен результат решения поставленной задачи.
Таким образом, к первому классу было отнесено 29 статей, ко второму - 31 статья. Также наблюдается множество объектов, которые нельзя отнести к одному из классов. Для того, чтобы повысить точность классификации, проведем еще одну итерацию. Результаты представлены на рис. 5.
Х2 Х4
х10
Рис. 4. Результат классификации методом опорных векторов
(1 итерация)
Рис. 5. Результат классификации методом опорныгх векторов
(2 итерация)
Здесь количество статей, не попавших ни в один класс, уменьшилось. Это значит, что обучающая выборка была не точной. Таким образом, с помощью данного метода удалось достаточно точно классифицировать статьи по двум классам. Однако, присутствует небольшой выброс значений, то есть во множестве объектов остались ряд статей, которые не подходят ни к одному классу. Среднее значение времени выполнения данной задачи с помощью Apache Spark равно 0,75 минуты.
При использовании MapReduce были проклассифицированы те же статьи, но с использованием механизмов Map и Reduce. Перед выполнением этапа Map задаются соответствующие характеристики классов, то есть упоминания о различных митингах, выступлениях, общественных собраниях и отзывы граждан о власти. То есть, на этапе Map каждая статья разбивалась по строкам в соответствии с заданными классами. На этапе Reduce подсчитывалось количество строк каждого типа и объединяются в конечный результат. В результате описанной выше последовательности действий получилось, что статьи разделились по классам почти поровну. Однако, те статьи, которые не подходили не к одному классу по результатам предыдущего опыта, здесь были классифицированы в один из классов. Результат представлен на рис. 6.
Рис. 6. Результат классификации статей с помощью MapReduce (1 итерация)
260
Чтобы повысить точность, было проведено еще две итерации. Результаты данных итерация представлены на рис.7.
■ 1 ■ 2 ■ 1 ■ 2 ■ 3
Рис. 7. Результат классификации статей с помощью MapReduce
(2,3 итерации)
Как видно из графиков классификация объектов изменилась. На второй итерации несколько объектов 2 класса были отнесены в первый. А на третьей итерации были определены статьи, которые не должны входить не в один из заданных классов. Среднее значение времени выполнения данной задачи с помощью MapReduce равно 1,2 минуты.
В результате исследования получилось, что время, затраченное на классификацию 70 статей с использованием Apache Spark меньше, чем при использовании MapReduce. Результат работы представлен на рис.8.
Время, затраченное на классификацию статей
м
MapReduce Apache Spark
Рис. 8. Время, затраченное на классификацию статей с использованием MapReduce и Apache Spark
Таким образом, в рамках задачи было экспериментально подтверждено, что Apache Spark качественнее и быстрее производить классификацию статей, чем MapReduce.
Список литературы
1. Vorobiev А.А., Makeev S.M., Grushevaya E.V., Mysin O.D., Shnibaev V.V. Method of configuring modules for collection, storage and processing of big data on the basis of free software. Modern informatization problems in the technological and telecommunication systems analysis and synthesis (MIP-2019'AS): Proceedings of the XXIV-th International Open Science Conference (Yelm, WA, USA, January 2019)/ Editor in Chief Dr. Sci., Prof. O.Ja. Kravets. Yelm, WA, USA: Science Book Publishing House, 2019. P. 382-387
261
2. Клименков П.А., Кузнецов С.Д. Большие данные: современные подходы к хранению и обработке. М.: Труды института системного программирования РАН, 2018. Том 3
3. Дэви Силен, Арно Мейсман Основы Data Scienca и Big Data. Санкт-Петербург: Библиотека программиста, 2017. 336 с.
4. Apache Spark - как MapReduce, но быстрее: [Электронный ресурс]. [сайт]. URL: https://dis-group.ru/company-news/articles/6-faktov-ob-apache-spark-kotorye-nuzhno-znat-kazhdomu (дата обращения: 10.01.2019).
5. Холден Карау Изучаем Spark. Молниеносный анализ данных / Энди Конвин-ски, Патрик Венделл, Холден Карау, Матей Захария // М.: ДМК пресс, 2015. 304 с.
6. Официальный сайт разработчиков Apache Spark [Электронный ресурс] // Классификация и регрессия: [сайт]. URL: https://spark.apache.org/docs/latest/ml-classification-regression.html (дата обращения: 10.01.2019)
7. Артиков М.Э. Анализ эффективности применения методов классификации // Международный научный журнал «Технологии, техника и инженерия». М., 2017. № 3.1 С. 6-7.
8. Кутуков Д. С. Применение методов кластеризации для обработки новостного потока // Международная заочная конференция «Технические науки: проблемы и перспективы». Санкт-Петербург, 2011. С. 77-83.
Макеев Сергей Михайлович, канд. техн. наук, сотрудник, maksm5 7@yandex. ru, Россия, Орёл, Академия ФСО России,
Воробьев Андрей Анатольевич, канд. техн. наук, доцент, сотрудник, [email protected], Россия, Орёл, Академия ФСО России,
Грушевая Екатерина Васильевна, [email protected], сотрудник, Россия, Орёл, Академия ФСО России
RESEARCH OF APPLICATION SPARK MODULE FOR INTELLECTUAL PROCESSING
OF HETEROGENEOUS DATA
S.M. Makeev, A.A. Vorobiev, E. V. Grushevaya
The article discusses the possibility of using the module with the free license Apache Spark for intelligent processing of big data on the example of classifying articles from information systems using machine learning.
Key words: heterogeneous data, Apache Hadoop, Apache Spark module, MapRe-duce, support vector machine.
Makeev Sergey Mihaylovich, candidate of technical science, employee, maksm5 7@yandex. ru, Russia, Orel, The Academy of Federal Security Guard Service of the Russian Federation,
Vorobiev Andrey Anatolevich, candidate of technical science, docent, employee, [email protected], Russia, Orel, The Academy of Federal Security Guard Service of the Russian Federation,
Grushevaya Ekaterina Vasilyevna, employee, leshinsckaya. kat@yandex. ru, Russia, Orel, The Academy of Federal Security Guard Service of the Russian Federation