Отладка алгоритмов 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 смотрите Отладку и Анализ.

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

Похожие темы