Статья: Моделирование приложений для обработки больших данных

Внимание! Если размещение файла нарушает Ваши авторские права, то обязательно сообщите нам

Моделирование приложений для обработки больших данных

Полежаев П.Н., Бахарева Н.Ф., д.т.н., проф., Шухман А.Е., к.п.н., доцент, Ушаков Ю.А., к.т.н., доцент, Легашев Л.В.

ФГБОУ ВО «Оренбургский государственный университет», г. Оренбург

В настоящее время большие данные (big data) [1] находят применение в различных сферах деятельности человека, включая анализ сетевого трафика, журналов работы компонентов компьютерных инфраструктур, транзакций в банковской сфере (поиск мошеннических операций), а также в медицинской (ДНК, снимки томографии пациентов), экономической и картографической информации. Все больше крупных и средних компаний разрабатывают приложения для обработки больших данных, позволяющих повысить эффективность бизнес-процессов и получить дополнительную прибыль. Для обработки больших данных нередко применяют технологии облачных вычислений (cloud computing), в частности, возможно использование услуг одного или нескольких провайдеров публичных облачных услуг IaaS (Infrastructure as a Service). Виртуальные машины и сети могут быть использованы для развертывания отказоустойчивой масштабируемой инфраструктуры по обработке больших данных с гибкой системой оплаты (pay-as-you-go).

Каждое приложение (задача) для обработки больших данных, отправляемое в вычислительный сервис (Computations as a Service), может быть формализовано в виде следующего вектора:

облачный вычисление обработка данные

где - множество заданий приложения, которые выполняются последовательно, например, последовательные запросы к источникам данных или несколько последовательных Map-Reduce преобразований; - конкретные источники входных данных и хранилища для сохранения результатов вычислений (файлы из распределенной файловой системы, например, HDFS - Hadoop Distributed File System [2]), данные из хранилища BLOBS (Binary Large Objects), из реляционной или NoSQL базы данных); - пользователь-владелец задачи, - максимальное время исполнения, заданное пользователем задачи.

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

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

Вычислительная стадия формализуется в виде кортежа следующего вида:

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

Предложенный подход позволяет моделировать Map-Reduce приложения [3], в этом случае вычислительные стадии могут быть представлены в виде множества из двух стадий:

Здесь включает в себя вычислительные задачи по выполнению загрузки и отображения данных, а - задания по их редукции и сохранению результатов.

Также предложенная модель позволяет учитывать обработку данных (выполнение трансформаций и действий) над наборами RDD (Resilient Distributed Dataset) в библиотеке Spark [4]. В этом случае, может включать в себя типовые трансформации, например: map (отображение), reduce (редукцию), filter (фильтрация), groupByKey (группировка), union (объединение), join (соединение), sortByKey (сортировка) и др.

Данная модель также может учитывать динамическую составляющую выполнения приложений, в частности, может собираться статистика их выполнения на различных уровнях (с помощью стандартных инструментов Hadoop или Spark).

На уровне всего приложения , задания и вычислительной стадии :

а) , , - реальное время выполнения;

б) , , - средняя загрузка вычислительных ядер;

в) , , - пиковый размер суммарной потребляемой оперативной памяти за все время выполнения приложения;

г) , , - пиковый размер суммарной потребляемой дисковой памяти за все время выполнения приложения;

д) , , и , , - соответственно суммарные объемы входных и выходных данных.

Знание данных значений имеет большое значения для:

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

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

Далее рассмотрим подходы к прогнозированию данных значений.

Для уровня всего приложения обозначим вектор прогнозируемых значений:

. (1)

Прогнозирование будет осуществляться на основе следующих параметров, собираемых для :

а) - имя исполняемого файла приложения;

б) - имя пользователя, запускающего приложение;

в) - время поступления задачи в очередь;

г) - размер входных данных;

д) - вектор признаков ресурсов (виртуальных машин), используемых для выполнения приложения. Здесь - количество виртуальных машин -го типа конфигурации.

Обозначим вектор данных признаков в виде .

Возникает задача построения модели машинного обучения , которая способна предсказывать по :

Это задача регрессии. Для построения данной модели необходимо подготовить набор обучающих размеченных данных (обучение с учителем):

Его формирование может производиться автоматически за счет собираемой статистики предыдущих запусков работы приложений.

Для решения данной задачи могут быть использованы:

а) глубокие нейронные сети - Deep Neural Networks;

б) метод опорных векторов - Support Vector Regression;

в) логистическая регрессия - Logistic Regression;

г) решающие деревья - Decision Tree Regression;

д) бустинг деревьев - Tree Boosting;

в) ансамблевые варианты, комбинирующие результаты данных методов.

При недостаточном размере набора или его неполноте (запускается совершенно новая задача), могут быть использованы эвристики для получения первичных оценок сверху для прогнозируемых параметров.

На уровне задания прогнозирование может осуществляться с помощью системы массового обслуживания, которая может быть реализована на базе дискретного событийно-управляемого симулятора :

, (2)

где - вектор прогнозируемых значений, аналогичный вектору (см. формулу (1)).

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

Кроме того, данный симулятор может быть модифицирован для прогнозирования значений, на уровне приложения, поэтому формула (2) может быть уточнена следующим образом:

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

На уровне стадии , если она представляет собой простую или типовую операцию над данными (например, трансформацию над RDD в Spark), возможно использование методов машинного обучения, аналогично уровню приложения. При этом будет составляться вектор признаков , а обученная регрессионная модель будет вычислять вектор предсказываемых значений:

На следующем этапе исследования планируется провести сравнение эффективности работы предложенных методов прогнозирования параметров на разных уровне с использованием реально собранных данных. При этом для моделей машинного обучения должна использоваться техника кросс-валидации (cross validation). Также предполагается подстройка гиперпараметров моделей машинного обучения за счет использования алгоритма grid search.

Достоинства предложенной модели приложений для обработки больших данных:

а) учет параллелизма на уровне заданий и отдельных стадий;

б) совмещение параллелизма по задачам (на уровне приложения - последовательное выполнение заданий, на уровне задания - ориентированный ацикличный граф стадий) и по данным (в задачах на уровне отдельной стадии);

в) возможность моделировать современные приложения для обработки больших данных, включая Map-Reduce (приложения Hadoop) и Spark;

г) возможность учитывать не только структурные, но и динамические параметры приложений.

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

Источник: https://otherreferats.allbest.ru/download/1154567/