Метод ускорения объединения распределенных наборов данных по заданному критерию
Ключевые слова:
распределенные вычисления, MapReduce, аналитические системыАннотация
Введение: быстро растущие объемы информации бросают новые вызовы современным технологиям анализа данных. В настоящее время, исходя из соображений стоимости и производительности, обработка данных обычно выполняется в кластерных системах. Одной из самых распространенных сопутствующих операций в аналитике является объединение наборов данных. Объединение – это крайне дорогостоящая операция, которая тяжело поддается масштабируемости и повышению эффективности в распределенных базах данных или системах, основанных на парадигме MapReduce. Несмотря на то, что приложено много усилий на повышение производительности данной операции, зачастую предлагаемые методы либо требуют фундаментальных изменений в структуре MapReduce, либо направлены на снижение накладных расходов выполнения операции, таких как балансировка нагрузки на сети. Цель исследования: разработать алгоритм, позволяющий ускорить объединение наборов данных в распределенных системах. Результаты: проведен обзор архитектуры Apache Spark и особенностей распределенных вычислений в распределенных системах на основе MapReduce, проанализированы типовые методы объединения наборов данных, приведены основные рекомендации по оптимизации операции объединения данных, приведен алгоритм, позволяющий ускорить частный случай объединения, реализованный в Apache Spark. Данный алгоритм использует приемы партиционирования и частичной передачи наборов на вычислительные узлы кластера, таким образом, чтобы использовать одновременно преимущества merge и broadcast объединений. Представленные экспериментальные данные демонстрируют, что метод тем более эффективен, чем больше объем входных данных. Так для 2Tb сжатых данных было получено ускорение до ~37% в сравнении со стандартным механизмом Spark SQL.