Поддерживаемая платформа: Linux® только.
Этот пример показывает вам, как использовать mcc
команда, чтобы создать развертываемый архив, состоящий из map и reduce функций MATLAB® и затем передать развертываемый архив в качестве аргумента полезной нагрузки к заданию, представленному кластеру Hadoop®.
Цель: Вычислите максимальную задержку прибытия авиакомпании от данного набора данных.
Набор данных: | airlinesmall.csv |
Описание: |
Отъезд авиакомпании и информация о прибытии от 1987-2008. |
Местоположение : | /usr/local/MATLAB/R2021a/toolbox/matlab/demos |
Примечание
Когда по сравнению с рабочим процессом приложения Hadoop Compiler, этот рабочий процесс требует явного создания файла настроек Hadoop. Последуйте примеру для деталей.
Необходимые условия
Запустите этот пример путем создания новой папки работы, которая отображается к пути поиска файлов MATLAB.
Прежде чем стартовый 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')
Установите MATLAB Runtime в папке, которая доступна каждым узлом рабочего в кластере Hadoop. Этот пример использует /usr/local/MATLAB/MATLAB_Runtime/v910
как местоположение папки MATLAB Runtime.
Если у вас нет MATLAB Runtime, можно загрузить его с веб-сайта в: https://www.mathworks.com/products/compiler/mcr
.
Примечание
Для получения информации о номерах версий MATLAB Runtime соответствующие релизы MATLAB см. этот список.
Скопируйте функцию карты maxArrivalDelayMapper.m
от /usr/local/MATLAB/R2021a/toolbox/matlab/demos
папка к папке работы.
Для получения дополнительной информации смотрите Запись Функция Карты.
Скопируйте уменьшать функциональный maxArrivalDelayReducer.m
от
папка к папке работы.matlabroot
/toolbox/matlab/demos
Для получения дополнительной информации смотрите Запись Уменьшать Функция.
Создайте директорию,/user/
на HDFS™ и копии файл <username>
/ наборы данныхairlinesmall.csv
к той директории. Здесь
относится к вашему имени пользователя в HDFS. <username>
$ ./hadoop fs -copyFromLocal airlinesmall.csv hdfs://host:54310/user/<username>
/datasets
Процедура
Запустите MATLAB и проверьте что HADOOP_PREFIX
переменная окружения была установлена. В командной строке введите:
>> getenv('HADOOP_PREFIX')
Если ans
пусто, рассмотрите раздел Prerequisites выше, чтобы видеть, как можно установить HADOOP_PREFIX
переменная окружения.
Создание 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 являются тем же самым.
Создайте конфигурационный файл (config.txt
) это задает входной тип данных, формат данных, заданных datastore
созданный на предыдущем шаге, выходной тип данных, имя функции карты и имя уменьшают функцию.
mw.ds.in.type = tabulartext mw.ds.in.format = infoAboutDataset.mat mw.ds.out.type = keyvalue mw.mapper = maxArrivalDelayMapper mw.reducer = maxArrivalDelayReducer
Используйте mcc
команда с -m
отметьте, чтобы создать развертываемый архив. -m
флаг создает стандартный исполняемый файл, который может быть запущен из командной строки. Однако mcc
команда не может группировать результаты в инсталляторе. Команда должна быть введена как одна строка.
mcc -H -W 'hadoop:maxArrivalDelay,CONFIG:config.txt' maxArrivalDelayMapper.m maxArrivalDelayReducer.m -a infoAboutDataset.mat
Для получения дополнительной информации смотрите mcc
.
MATLAB Compiler™ создает сценарий оболочки run_maxarrivaldelay.sh
, развертываемый архив airlinesmall.ctf
, и файл журнала mccExcludedfiles.log
.
Включите развертываемый архив, содержащий 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
Альтернативно, можно включить развертываемый архив, содержащий 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
Чтобы исследовать результаты, переключитесь на рабочий стол 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.
datastore
| deploytool
| KeyValueDatastore
| mcc
| TabularTextDatastore