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

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

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

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

Откройте файл maxArrivalDelayMapper.m.

edit maxArrivalDelayMapper.m

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

Выполнение mapreduce

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

mapreducer(0);
MaxMapReduceExample

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

В этом случае отображение указывает, что пока еще нет никаких пар "ключ-значение" в intermKVStore.

Продвиньтесь через функцию карты

  1. Продолжите мимо точки останова. Можно использовать dbstep, чтобы выполнить одну строку или dbcont, чтобы продолжить выполнение, пока MATLAB не сталкивается с другой точкой останова. Также можно нажать Step или Continue во вкладке Editor. Для получения дополнительной информации обо всех доступных параметрах, смотрите Отладку программа MATLAB.

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

  2. Теперь, используйте dbcont (или нажмите Continue) продолжать выполнение 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 (или нажмите Continue) усовершенствовать выполнение, позволяя примеру закончить запускаться. mapreduce возвращает конечные результаты.

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

Для полного руководства по отладке в MATLAB смотрите Отладку и Анализ.

Смотрите также

Похожие темы