Выполнение 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).

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

Функции

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

Больше о