MapReduce и параллельные СУБД




Конвейеризация


Во всех параллельных СУБД во время компиляции запроса создается план его выполнения, который во время выполнения запроса распределяется по соответствующим узлам. При выполнении запроса каждая операция плана должна посылать данные следующей операции, независимо от того, выполняются они в одном и том же узле или же в разных узлах, т.е. данные "проталкиваются" первой операцией во вторую операцию. Таким образом, организуется поток данных от их производителя к потребителю. Промежуточные данные никогда не записываются на диск. Возникающее в работающей системе сопротивление потока (back-pressure) заставит производителя данных приостановиться до того, как у него возникнет возможность переполнить данными потребителя. Этот метод потокового выполнения запросов отличается от подхода, используемого в MR, где производитель записывает промежуточные результаты в локальные структуры данных, а потребитель впоследствии "затягивает" к себе эти данные. Такие структуры данных часто бывают достаточно крупными, так что системе приходится записывать их на диск, что создает потенциальное узкое место. Хотя запись структур на диск представляет Hadoop удобный способ установки контрольных точек для результатов промежуточных заданий Map, что повышает отказоустойчивость, наши исследования показывают, что этот подход приводит к порождению накладных расходов, способствующих снижению производительности.




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