exponenta event banner

Пример использования рабочего процесса компилятора Hadoop

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

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

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

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

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

Расположение:/usr/local/MATLAB/R2021a/toolbox/matlab/demos

Предпосылки

  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 в папку, доступную каждому рабочему узлу кластера Hadoop. В этом примере используется /usr/local/MATLAB/MATLAB_Runtime/v910 в качестве расположения папки среды выполнения MATLAB.

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

    Примечание

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

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

     maxArrivalDelayMapper.m

    Дополнительные сведения см. в разделе Запись функции карты.

  5. Копирование функции сокращения maxArrivalDelayReducer.m от matlabroot/toolbox/matlab/demos в рабочую папку.

     maxArrivalDelayReducer.m

    Дополнительные сведения см. в разделе Запись функции уменьшения.

  6. Создание каталога /user/<username>/datasets при 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. Запустите приложение компилятора Hadoop с помощью командной строки MATLAB (>> hadoopCompiler) или через галерею приложений.

  4. В разделе «Функция сопоставления» панели инструментов нажмите кнопку «плюс», чтобы добавить файл сопоставления. maxArrivalDelayMapper.m.

  5. В разделе «Уменьшить функцию» панели инструментов нажмите кнопку «плюс», чтобы добавить файл редуктора. maxArrivalDelayReducer.m.

  6. В разделе «Файл хранилища данных» нажмите кнопку «плюс», чтобы добавить .mat файл infoAboutDataset.mat содержащий datastore объект.

  7. В разделе «Типы вывода» выберите keyvalue как тип вывода. Выбор keyvalue поскольку тип выходного документа означает, что результаты могут быть прочитаны только в MATLAB. Если необходимо, чтобы результаты были доступны вне MATLAB, выберите тип вывода как tabulartext.

  8. Переименование информации полезной нагрузки задания MapReduce в maxArrivalDelay.

  9. Щелкните Пакет, чтобы создать развертываемый архив.

    Приложение компилятора Hadoop создает файл журнала PackagingLog.txt и две папки for_redistribution и for_testing.

    for_redistributionfor_testing
    readme.txtreadme.txt
    maxArrivalDelay.ctfmaxArrivalDelay.ctf
    run_maxArrivalDelay.shrun_maxArrivalDelay.sh
     mccExcludedFiles.log
     requiredMCRProducts.txt

    Можно использовать файл журнала PackagingLog.txt чтобы увидеть точное mcc синтаксис, используемый для упаковки развертываемого архива.

  10. Из оболочки Linux перейдите к for_redistribution папка.

    1. Включите развертываемый архив, содержащий карту MATLAB, и сократите функции в задание восстановления карты 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, и сократить функции в задание сокращения Hadoop с помощью сценария оболочки, созданного приложением компилятора Hadoop. В оболочке 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
  11. Чтобы проверить результаты, переключитесь на рабочий стол MATLAB и создайте datastore к результатам на HDFS. Затем можно просмотреть результаты с помощью read способ.

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

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

См. также

| | |

Связанные темы