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

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

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

    Примечание

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

  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. Считайте результат из получившегося datastore.

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

    mcc -m depMapRedStandAlone.m

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

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

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

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

    Перед выполнением вышеуказанной команды проверьте, что 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

См. также

| | | |

Похожие темы