exponenta event banner

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

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

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

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

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

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

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

Примечание

По сравнению с рабочим процессом приложения компилятора Hadoop этот рабочий процесс требует явного создания файла параметров 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 в папку, доступную каждому рабочему узлу кластера 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. Создание файла конфигурации (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. Включите развертываемый архив, содержащий карту 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
  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.

См. также

| | | |

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