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

Поддерживаемая платформа: 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 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. Запустите приложение Hadoop Compiler через командную строку MATLAB (>> hadoopCompiler) или через галерею Apps.

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

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

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

  7. В Output Types разделе выберите keyvalue как тип выхода. Выбор keyvalue поскольку ваш тип выхода означает, что результаты могут быть считаны только в MATLAB. Если вы хотите, чтобы ваши результаты были доступны за пределами MATLAB, выберите тип выхода следующим tabulartext.

  8. Переименуйте MapReduce job payload information в maxArrivalDelay.

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

    Приложение Hadoop Compiler создает файл журнала 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, и уменьшите функции в задание 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
  11. Чтобы изучить результаты, переключитесь на рабочий стол 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».

См. также

| | |

Похожие темы