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

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

Этот пример показывает вам, как создать автономное приложение MapReduce MATLAB® с помощью команды mcc и запустить ее против кластера Hadoop®.

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

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

Отъезд авиакомпании и информация о прибытии от 1987-2008.

Местоположение :/usr/local/MATLAB/R2019a/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/v96 в качестве местоположения папки MATLAB Runtime.

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

    Примечание

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

  4. Скопируйте функцию карты maxArrivalDelayMapper.m от папки /usr/local/MATLAB/R2019a/toolbox/matlab/demos до папки работы.

     maxArrivalDelayMapper.m

    Для получения дополнительной информации смотрите Запись Функция Карты (MATLAB).

  5. Скопируйте уменьшать функциональный maxArrivalDelayReducer.m от папки matlabroot/toolbox/matlab/demos до папки работы.

     maxArrivalDelayReducer.m

    Для получения дополнительной информации смотрите Запись Уменьшать Функция (MATLAB).

  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 пуст, рассмотрите раздел Prerequisites выше, чтобы видеть, как можно установить переменную окружения HADOOP_PREFIX.

  2. Создайте новый скрипт MATLAB с именем depMapRedStandAlone.m. Вы добавите код, перечисленный на шагах, описанных ниже к этому файлу скрипта.

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

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

    Для получения дополнительной информации смотрите работу с Удаленными данными (MATLAB).

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

    config = matlab.mapreduce.DeployHadoopMapReducer;

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

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

    config = matlab.mapreduce.DeployHadoopMapReducer('MCRRoot','/opt/MATLAB/MATLAB_Runtime/v96');
    В этом сценарии мы принимаем, что 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

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

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

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

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

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

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

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

  10. Вы будете видеть следующий вывод:

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

Другие примеры map и функций reduce доступны в папке toolbox/matlab/demos. Можно использовать другие примеры, чтобы моделировать подобные автономные приложения, которые запускаются против Hadoop. Для получения дополнительной информации смотрите Сборку Эффективные Алгоритмы с MapReduce (MATLAB).

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

 depMapRedStandAlone.m

Смотрите также

| | | |

Похожие темы