Пример Используя рабочий процесс приложения Hadoop Compiler

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

Этот пример показывает вам, как использовать приложение Hadoop Compiler, чтобы создать развертываемый архив, состоящий из map и reduce функций MATLAB® и затем передать развертываемый архив в качестве аргумента полезной нагрузки к заданию, представленному кластеру 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. Создание 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. Запустите приложение Hadoop Compiler через командную строку MATLAB (>> hadoopCompiler) или через галерею Apps.

  4. В разделе Map Function панели инструментов щелкните плюс кнопка, чтобы добавить файл картопостроителя maxArrivalDelayMapper.m.

  5. В разделе Reduce Function панели инструментов щелкните плюс кнопка, чтобы добавить файл редуктора maxArrivalDelayReducer.m.

  6. В разделе Datastore File щелкните плюс кнопка, чтобы добавить .mat файл infoAboutDataset.mat содержа datastore объект.

  7. В разделе Output Types выберите keyvalue как выходной тип. Выбор keyvalue когда ваш выходной тип означает, что ваши результаты могут только быть считаны в MATLAB. Если вы хотите свои результаты быть доступными за пределами MATLAB, выберите выходной тип как tabulartext.

  8. Переименуйте MapReduce job payload information в maxArrivalDelay.

  9. Нажмите Package, чтобы создать развертываемый архив.

    Приложение Hadoop Compiler создает файл журнала PackagingLog.txt и две папки for_redistribution и for_testing.

    for_redistributionfor_testing
    readme.txtreadme.txt
    maxArrivalDelay.ctfmaxArrivalDelay.ctf
    run_maxArrivalDelay.shrun_maxArrivalDelay.sh
     mccExcludedFiles.log
     requiredMCRProducts.txt

    Можно использовать файл журнала PackagingLog.txt видеть точное mcc синтаксис раньше группировал развертываемый архив.

  10. Из Linux интерпретатор перешли к for_redistribution папка.

    1. Включите развертываемый архив, содержащий map и reduce функции MATLAB в задание mapreduce 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. Альтернативно, можно включить развертываемый архив, содержащий map и reduce функции MATLAB в задание mapreduce Hadoop с помощью сценария оболочки, сгенерированного приложением Hadoop Compiler. В 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
  11. Чтобы исследовать результаты, переключитесь на рабочий стол 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.

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

| | |

Похожие темы