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

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

Установите точку по оси Х

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

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

edit maxArrivalDelayMapper.m

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

Выполните mapreduce

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

mapreducer(0);
MaxMapReduceExample

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

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

Шаг через функцию Map

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

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

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

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

  4. Завершите отладку функции map, удалив точку останова и закрыв файл 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 смотрите в Отладка и анализ.

См. также

Похожие темы