Пример включения карты MATLAB и сокращения функций в задание Hadoop

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

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

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

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

Информация о вылете и прибытии из 1987-2008.

Расположение:/usr/local/MATLAB/R2021a/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/v910 как расположение папки MATLAB Runtime.

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

    Примечание

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

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

     maxArrivalDelayMapper.m

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

  5. Скопируйте функцию reduce 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 пуст, проверьте раздел « Необходимые условия» выше, чтобы увидеть, как можно задать 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 созданный на предыдущем шаге, тип выхода данных, имя функции map и имя функции reduce.

    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 флаг для создания развертываемого архива. The -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. Включите развертываемый архив, содержащий карту MATLAB, и уменьшите функции в задание mapreduce Hadoop из интерпретатора Linux с помощью следующей команды:

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

      $ ./run_maxArrivalDelay.sh \
      /usr/local/MATLAB/MATLAB_Runtime/v910 \
      -D mw.mcrroot=/usr/local/MATLAB/MATLAB_Runtime/v910 \
      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».

См. также

| | | |

Похожие темы