Управляемый mapreduce в кластере Hadoop

Подготовка кластера

Прежде чем вы сможете запустить mapreduce на Hadoop® убедитесь, что кластер и клиентская машина настроены правильно. Обратитесь к системному администратору или см. раздел Настройка кластера Hadoop (MATLAB Parallel Server).

Формат и порядок выхода

При запуске mapreduce на кластере Hadoop с двоичным выходом (по умолчанию), результат KeyValueDatastore указывает на файлы Hadoop Sequence, вместо двоичных MAT-файлов, сгенерированных mapreduce в других окружениях. Для получения дополнительной информации смотрите 'OutputType' описание аргумента на mapreduce страница с описанием.

При запуске mapreduce в кластере Hadoop порядок пар "ключ-значение" в выходе отличается от порядка выполнения mapreduce в других окружениях. Если ваше приложение зависит от расположения данных в выходе, необходимо отсортировать данные в соответствии с вашими собственными требованиями.

Вычисление средней задержки

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

Во-первых, вы должны задать переменные окружения и свойства кластера как соответствующие для вашего конкретного строения Hadoop. Значения этих и других свойств, необходимых для отправки заданий в кластер, см. у системного администратора.

setenv('HADOOP_HOME', '/path/to/hadoop/install')
cluster = parallel.cluster.Hadoop;

Примечание

Заданное outputFolder не должен уже существовать. The mapreduce выход из кластера Hadoop не может перезаписать существующую папку.

Вы потеряете свои данные, если mapreducer изменяется или удаляется.

Создайте объект MapReducer, чтобы указать, что mapreduce следует использовать кластер Hadoop.

mr = mapreducer(cluster);

Создайте и предварительный просмотр datastore. Набор данных доступен в matlabroot/ toolbox/matlab/demos.

ds = datastore('airlinesmall.csv','TreatAsMissing','NA',...
     'SelectedVariableNames','ArrDelay','ReadSize',1000);
preview(ds)
    ArrDelay
    ________

     8
     8
    21
    13
     4
    59
     3
    11

Далее укажите свою выходную папку, вывод outds и звоните mapreduce для выполнения на кластере Hadoop, заданном mr. Функции map и reduce доступны в matlabroot/ toolbox/matlab/demos.

outputFolder = 'hdfs:///home/myuser/out1';
outds = mapreduce(ds,@myMapperFcn,@myReducerFcn,'OutputFolder',outputFolder);
meanDelay = mapreduce(ds,@meanArrivalDelayMapper,@meanArrivalDelayReducer,mr,...
            'OutputFolder',outputFolder)
Parallel mapreduce execution on the Hadoop cluster:
********************************
*      MAPREDUCE PROGRESS      *
********************************
Map   0% Reduce   0%
Map  66% Reduce   0%
Map 100% Reduce  66%
Map 100% Reduce 100%

meanDelay =

  KeyValueDatastore with properties:

       Files: {
              ' .../tmp/alafleur/tpc00621b1_4eef_4abc_8078_646aa916e7d9/part0.seq'
              }
    ReadSize: 1 key-value pairs
    FileType: 'seq'

Прочитайте результат.

readall(meanDelay)
           Key             Value
    __________________    ________

    'MeanArrivalDelay'    [7.1201]

Хотя в демонстрационных целях этот пример использует локальный набор данных, вероятно, при использовании Hadoop ваш набор данных хранится в HDFS™ файловой системе. Кроме того, вы можете быть обязаны хранить mapreduce выход в HDFS. Для получения дополнительной информации о доступе к HDFS в MATLAB, смотрите Работа с удаленными данными.

См. также

Функции

Похожие примеры

Подробнее о