Пример при слиянии map и reduce функций MATLAB в Хэдупа Джоба

Поддерживаемая платформа: Linux® только.

Этот пример показывает вам, как использовать mcc команда, чтобы создать развертываемый архив, состоящий из MATLAB® map и reduce функции и затем передают развертываемый архив в качестве аргумента полезной нагрузки к заданию, представленному Hadoop® кластер.

Цель: Вычислите максимальную задержку прибытия авиакомпании от данного набора данных.

Набор данных:airlinesmall.csv
Описание:

Отъезд авиакомпании и информация о прибытии от 1987-2008.

Местоположение :/usr/local/MATLAB/R2021b/toolbox/matlab/demos

Примечание

Когда по сравнению с рабочим процессом приложения Hadoop Compiler, этот рабочий процесс требует явного создания файла настроек Hadoop. Последуйте примеру для деталей.

Необходимые условия

  1. Запустите этот пример путем создания новой папки работы, которая отображается к пути поиска файлов MATLAB.

  2. Прежде чем стартовый MATLAB, на терминале, установил переменную окружения HADOOP_PREFIX указать на папку установки Hadoop. Например:

    ShellКоманда
    csh / tcsh

    % setenv HADOOP_PREFIX /usr/lib/hadoop

    удар

    $ export HADOOP_PREFIX=/usr/lib/hadoop

    Примечание

    Этот пример использует /usr/lib/hadoop как директория, где Hadoop установлен. Ваша директория установки Hadoop, возможно, отличающаяся.

    Если вы забываете устанавливать HADOOP_PREFIX переменная окружения до стартового MATLAB, набор это использование функции MATLAB setenv в командной строке MATLAB, как только вы запускаете MATLAB. Например:

    setenv('HADOOP_PREFIX','/usr/lib/hadoop')

  3. Установите MATLAB Runtime в папке, которая доступна каждым узлом рабочего в кластере Hadoop. Этот пример использует /usr/local/MATLAB/MATLAB_Runtime/v911 как местоположение папки MATLAB Runtime.

    Если у вас нет MATLAB Runtime, можно загрузить его с веб-сайта в: https://www.mathworks.com/products/compiler/mcr.

    Примечание

    Для получения информации о номерах версий MATLAB Runtime соответствующие релизы MATLAB см. этот список.

  4. Скопируйте функцию карты maxArrivalDelayMapper.m от /usr/local/MATLAB/R2021b/toolbox/matlab/demos папка к папке работы.

     maxArrivalDelayMapper.m

    Для получения дополнительной информации смотрите Запись Функция Карты.

  5. Скопируйте уменьшать функциональный maxArrivalDelayReducer.m от matlabroot/toolbox/matlab/demos папка к папке работы.

     maxArrivalDelayReducer.m

    Для получения дополнительной информации смотрите Запись Уменьшать Функция.

  6. Создайте директорию,/user/<username>/ наборы данных на HDFS™ и копии файл airlinesmall.csv к той директории. Здесь <username> относится к вашему имени пользователя в HDFS.

    $ ./hadoop fs -copyFromLocal airlinesmall.csv hdfs://host:54310/user/<username>/datasets

Процедура

  1. Запустите MATLAB и проверьте что HADOOP_PREFIX переменная окружения была установлена. В командной строке введите:

    >> getenv('HADOOP_PREFIX')

    Если ans пусто, рассмотрите раздел Prerequisites выше, чтобы видеть, как можно установить HADOOP_PREFIX переменная окружения.

  2. Создание Datastore к файлу airlinesmall.csv и сохраните его в .mat файл. Этот datastore объект предназначается, чтобы получить структуру вашего фактического набора данных на HDFS.

    ds = datastore('airlinesmall.csv','TreatAsMissing','NA',...
         'SelectedVariableNames','ArrDelay','ReadSize',1000);
    
    save('infoAboutDataset.mat','ds')

    В большинстве случаев вы начнетесь путем работы над набором данных небольшой выборки, находящимся на локальной машине, которая является представительной для фактического набора данных в кластере. Этот демонстрационный набор данных имеет ту же структуру и переменные как фактический набор данных в кластере. Путем создания datastore возразите против набора данных, находящегося на вашей локальной машине, вы берете снимок состояния той структуры. При наличии доступа к этому datastore объект, задание Hadoop, выполняющееся в кластере, будет знать, как получить доступ и обработать фактический набор данных, находящийся на HDFS.

    Примечание

    В этом примере демонстрационный (локальный) набор данных и фактический набор данных на HDFS являются тем же самым.

  3. Создайте конфигурационный файл (config.txt) это задает входной тип данных, формат данных, заданных datastore созданный на предыдущем шаге, выходной тип данных, имя функции карты и имя уменьшают функцию.

    mw.ds.in.type = tabulartext
    mw.ds.in.format = infoAboutDataset.mat
    mw.ds.out.type = keyvalue
    mw.mapper = maxArrivalDelayMapper
    mw.reducer = maxArrivalDelayReducer
    Для получения дополнительной информации смотрите Конфигурационный файл для Создания Развертываемого Архива Используя Команду MCC.

  4. Используйте mcc команда с -m отметьте, чтобы создать развертываемый архив. -m флаг создает стандартный исполняемый файл, который может быть запущен из командной строки. Однако mcc команда не может группировать результаты в инсталляторе. Команда должна быть введена как одна строка.

    mcc -H -W 'hadoop:maxArrivalDelay,CONFIG:config.txt'
      maxArrivalDelayMapper.m maxArrivalDelayReducer.m
       -a infoAboutDataset.mat

    Для получения дополнительной информации смотрите mcc.

    MATLAB Compiler™ создает сценарий оболочки run_maxarrivaldelay.sh, развертываемый архив airlinesmall.ctf, и файл журнала mccExcludedfiles.log.

    1. Включите развертываемый архив, содержащий map и reduce функции MATLAB в задание mapreduce Hadoop от интерпретатора Linux используя следующую команду:

      $ hadoop \
      jar /usr/local/MATLAB/MATLAB_Runtime/v911/toolbox/mlhadoop/jar/a2.2.0/mwmapreduce.jar \
      com.mathworks.hadoop.MWMapReduceDriver \
      -D mw.mcrroot=/usr/local/MATLAB/MATLAB_Runtime/v911 \
      maxArrivalDelay.ctf \
      hdfs://host:54310/user/<username>/datasets/airlinesmall.csv \
      hdfs://host:54310/user/<username>/results
    2. Альтернативно, можно включить развертываемый архив, содержащий map и reduce функции MATLAB в задание mapreduce Hadoop с помощью сценария оболочки, сгенерированного приложением Hadoop Compiler. В Linux интерпретатор вводят следующую команду:

      $ ./run_maxArrivalDelay.sh \
      /usr/local/MATLAB/MATLAB_Runtime/v911 \
      -D mw.mcrroot=/usr/local/MATLAB/MATLAB_Runtime/v911 \
      hdfs://host:54310/user/username/datasets/airlinesmall.csv \
      hdfs://host:54310/user/<username>/results
  5. Чтобы исследовать результаты, переключитесь на рабочий стол MATLAB и создайте datastore к результатам на HDFS. Можно затем просмотреть результаты с помощью read метод.

    d = datastore('hdfs:///user/<username>/results/part*');
    read(d)
    ans = 
    
               Key           Value 
        _________________    ______
    
        'MaxArrivalDelay'    [1014]

Другие примеры map и reduce функции доступны в toolbox/matlab/demos папка. Можно использовать другие примеры, чтобы моделировать подобные развертываемые архивы, которые запускаются против Hadoop. Для получения дополнительной информации смотрите Сборку Эффективные Алгоритмы с MapReduce.

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

| | | |

Похожие темы