HadoopDB архитектурный гибрид технологий



             

От SQL к MapReduce и планировщику SQL (SMS) - часть 2


Оптимизатор перестраивает план запроса, образуя более оптимизированный план. Например, он проталкивает операции фильтрации ближе к операциям сканирования таблиц. Основной функцией оптимизатора является разбиение плана на фазы Map и Reduce. В частности, он добавляет перед операциями соединения и группировки операцию переразделения, называемую также операцией Reduce Sink. Эти операции отделяют фазу Map от фазы Reduce плана запроса. Оптимизатор Hive – это простой, бесхитростный оптимизатор, основанный на правилах (rule-based). В нем не используются методы оценочной (cost-based) оптимизации. Поэтому он не всегда генерирует эффективные планы запросов. Это создает еще одно преимущество для проталкивания как можно большей части логики обработки запросов в СУБД, в которых имеются более сложные адаптивные или оценочные оптимизаторы.

  • Наконец, генератор физических планов преобразует логический план запроса в физический план, который можно выполнить в виде одного или нескольких заданий MapReduce. Первая (и каждая аналогичная) операция Reduce Sink помечает переход от фазы Map к фазе Reduce некоторого задания MapReduce, а остальные операции Reduce Sink помечают начало следующего задания MapReduce. Для приведенного выше запроса образуется одно задание MapReduce с физическим планом, показанным на рис. 2(a). Прямоугольники обозначают операции, а стрелки – потоки данных.

  • Каждый DAG, ограниченный некоторым заданием MapReduce, сериализуется в XML-представление. Затем драйвер Hive выпоолняет задание Hadoop. Задания считываются из XML-плана, и создаются все требуемые объекты, сканирующие данные в таблицах HDFS и покортежно обрабатывающие данные.

  • Рис. 2. (a) Задание MapReduce, генерируемое Hive; (b) задание MapReduce, генерируемое SMS, если таблица sales разделена по YEAR(saleDate) (пока эта возможность не поддерживается); (c) задание MapReduce, генерируемое SMS, если таблица sales не разделена.

    Планировщик SMS является модификацией Hive. В частности, мы вмешиваемся в обычный порядок операций Hive в двух основных областях:




    Содержание  Назад  Вперед