Запустите mapreduce на кластере Hadoop

Кластерная подготовка

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

Выходной формат и порядок

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

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

Вычислите среднюю задержку

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

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

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

Примечание

Заданный outputFolder не должен уже существовать. 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, смотрите работу с Удаленными данными (MATLAB).

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

Функции

Связанные примеры

Больше о