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

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

Этот пример показывает вам, как создать автономное приложение MapReduce MATLAB® с помощью 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. Скопируйте функцию карты maxArrivalDelayMapper.m от /usr/local/MATLAB/R2021a/toolbox/matlab/demos папка к папке работы.

     maxArrivalDelayMapper.m

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

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

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

  3. Создайте a 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

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

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

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

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

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

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

 depMapRedStandAlone.m

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

| | | |

Похожие темы