exponenta event banner

Пример запуска автономного приложения MATLAB MapReduce

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

В этом примере показано, как создать автономное приложение MATLAB ® MapReduce с помощью mcc и запустите его в кластере 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. Создание нового сценария MATLAB с именем depMapRedStandAlone.m. В этот файл сценария будет добавлен код, указанный ниже.

  3. Создать datastore указывает на данные авиакомпании в распределенной файловой системе Hadoop (HDFS).

    ds = datastore('hdfs:///user/username/datasets/airlinesmall.csv',...
    'TreatAsMissing','NA',...
    'SelectedVariableNames',{'UniqueCarrier','ArrDelay'});

    Дополнительные сведения см. в разделе Работа с удаленными данными.

  4. Настройте приложение для развертывания в Hadoop с параметрами по умолчанию.

    config = matlab.mapreduce.DeployHadoopMapReducer;

    Класс matlab.mapreduce.DeployHadoopMapReducer может использоваться для настройки автономного приложения на основе среды Hadoop, в которой оно будет развернуто.

    Например, если необходимо указать расположение среды выполнения MATLAB на каждом из рабочих узлов кластера, включите строку кода, аналогичную следующей:

    config = matlab.mapreduce.DeployHadoopMapReducer('MCRRoot','/opt/MATLAB/MATLAB_Runtime/v910');
    В этом сценарии предполагается, что среда выполнения MATLAB установлена в нестандартном местоположении, например, /opt/MATLAB/MATLAB_Runtime на рабочих узлах.

    Сведения об указании дополнительных свойств кластера см. в разделе matlab.mapreduce.DeployHadoopMapReducer.

    Примечание

    Указание местоположения среды выполнения MATLAB как части класса matlab.mapreduce.DeployHadoopMapReducer переопределяет любое расположение среды выполнения MATLAB, указанное во время выполнения автономного приложения.

  5. Определите среду выполнения с помощью mapreducer.

    mr = mapreducer(config);
  6. Применить mapreduce функция.

    result = mapreduce(...
        ds,...
        @maxArrivalDelayMapper,@maxArrivalDelayReducer,...
        mr,...
        'OutputType','Binary', ...
        'OutputFolder','hdfs:///user/<username>/results/myresults');

    Примечание

    Каталог HDFS, например .../myresults может быть записано в только один раз. Если вы планируете запустить автономное приложение несколько раз в кластере Hadoop, убедитесь, что вы удалили .../myresults каталог на HDFS перед каждым выполнением. Другой вариант - изменить имя .../myresults в коде MATLAB и перекомпилировать приложение.

  7. Считывание результата из результирующего хранилища данных.

    myAppResult = readall(result)
  8. Используйте mcc с помощью команды -m для создания автономного приложения.

    mcc -m depMapRedStandAlone.m

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

  9. Запустите автономное приложение из оболочки Linux с помощью следующей команды:

    $ ./run_depMapRedStandAlone.sh /usr/local/MATLAB/MATLAB_Runtime/v910

    /usr/local/MATLAB/MATLAB_Runtime/v910 является аргументом, указывающим местоположение среды выполнения MATLAB.

    Перед выполнением вышеуказанной команды убедитесь, что HADOOP_PREFIX переменная среды устанавливается в терминале путем ввода:

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

    Приложение не будет выполнено, если HADOOP_PREFIX переменная среды не задана.

  10. Вы увидите следующие выходные данные:

    myAppResult = 
    
               Key           Value 
        _________________    ______
    
        'MaxArrivalDelay'    [1014]

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

Полный код для автономного приложения depMapRedStandAlone можно найти здесь:

 depMapRedStandAlone.m

См. также

| | | |

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