exponenta event banner

Отладка алгоритмов MapReduce

В этом примере показано, как отладить mapreduce алгоритмы в MATLAB ® с использованием простого примера файла ,MaxMapReduceExample.m. Отладка позволяет отслеживать перемещение данных между различными фазами mapreduce выполнение и проверка состояния всех промежуточных переменных.

Установить точку останова

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

Открыть файл maxArrivalDelayMapper.m.

edit maxArrivalDelayMapper.m

Установите точку останова в строке 9. Эта точка останова вызывает выполнение mapreduce пауза непосредственно перед каждым вызовом функции карты добавляет пару ключ-значение к промежуточному KeyValueStore объект, имя intermKVStore.

Выполнить mapreduction

Запустить mapreduce пример файла MaxMapReduceExample.m. Определить mapreducer(0) чтобы гарантировать, что алгоритм не работает параллельно, так как параллельное выполнение mapreduce использование параллельного вычисления Toolbox™ игнорирует точки останова.

mapreducer(0);
MaxMapReduceExample

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

В этом случае на дисплее отображается, что пока пары «ключ-значение» отсутствуют в intermKVStore.

Пошаговая функция сопоставления

  1. Продолжить мимо точки останова. Вы можете использовать dbstep для выполнения одной строки или dbcont для продолжения выполнения до тех пор, пока MATLAB не встретит другую точку останова. Можно также щелкнуть Шаг (Step) или Продолжить (Continue) на вкладке Редактор (Editor). Дополнительные сведения обо всех доступных параметрах см. в разделе Отладка программы MATLAB.

    В этом случае используйте dbstep (или нажмите Step), чтобы выполнить только строку 9, которая добавляет пару ключ-значение к intermKVStore. Проверьте новый экран для intermKVStore.

  2. Теперь используйте dbcont (или нажмите Продолжить ), чтобы продолжить выполнение mapreduce. Во время следующего вызова функции карты MATLAB снова останавливается на линии 9. Новый экран для intermKVStore указывает, что он не содержит пар ключ-значение, поскольку отображение предназначено для отображения только самых последних пар ключ-значение, которые добавлены в текущем вызове функции отображения (или уменьшения).

  3. Повторите шаг после строки 9 с помощью dbstep (или нажмите Step), чтобы добавить следующую пару ключ-значение в intermKVStoreи проверьте новое отображение переменной. MATLAB отображает только пару ключ-значение, добавленную во время текущего вызова функции карты.

  4. Выполните отладку функции карты, удалив точку останова и закрыв файл maxArrivalDelayMapper.m.

Шаг до уменьшения функции

  1. Этот же процесс можно использовать для установки точек останова и пошагового выполнения функции уменьшения. Функция уменьшения для этого примера maxArrivalDelayReducer.m. Откройте этот файл для редактирования.

    edit maxArrivalDelayReducer.m
  2. Установите две точки останова: одну на линии 10 и одну на линии 13. Это позволяет проверить ValueIterator и конечные пары ключ-значение, добавленные к выходу, outKVStore.

  3. Запустите файл основного примера.

    MaxMapReduceExample
  4. Выполнение примера приостанавливается при обнаружении точки останова на линии 10. Экран отладки для ValueIterator указывает активный ключ и остается ли получить какие-либо значения.

  5. Теперь удалите точку останова в строке 10 и используйте dbcont (или нажмите Continue ), чтобы продолжить выполнение примера до достижения следующей точки останова (в строке 13). Поскольку эта функция уменьшения непрерывно сравнивает каждое новое значение из ValueIterator до глобального максимума, mapreduce выполнение завершается добавлением одной пары ключ-значение к outKVStore.

  6. Использовать dbstep (или нажмите Step), чтобы выполнить только строку 13. Дисплей для outKVStore показывает глобальное максимальное значение, которое mapreduce вернется в качестве окончательного ответа.

  7. Теперь используйте dbcont (или нажмите кнопку «Продолжить»), чтобы продолжить выполнение, позволяя примеру завершить выполнение. mapreduce возвращает окончательные результаты.

    Map 100% Reduce 100%
    
    ans = 
    
               Key           Value 
        _________________    ______
    
        'MaxArrivalDelay'    [1014]

Полное руководство по отладке в MATLAB см. в разделе Отладка и анализ.

См. также

Связанные темы