exponenta event banner

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

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

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

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

При выполнении 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);

Создание и предварительный просмотр хранилища данных. Набор данных доступен в 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. Функции карты и сокращения доступны в 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 см. в разделе Работа с удаленными данными.

См. также

Функции

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

Подробнее