Поддерживаемая платформа: Linux® только.
В этом примере показано, как использовать mcc
команда для создания развертываемого архива, состоящего из 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, смотрите этот список.
Скопируйте функцию map maxArrivalDelayMapper.m
от /usr/local/MATLAB/R2021a/toolbox/matlab/demos
папка в рабочую папку.
Для получения дополнительной информации смотрите Запись функции Map.
Скопируйте функцию reduce 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
пуст, проверьте раздел « Необходимые условия» выше, чтобы увидеть, как можно задать 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
созданный на предыдущем шаге, тип выхода данных, имя функции map и имя функции reduce.
mw.ds.in.type = tabulartext mw.ds.in.format = infoAboutDataset.mat mw.ds.out.type = keyvalue mw.mapper = maxArrivalDelayMapper mw.reducer = maxArrivalDelayReducer
Используйте mcc
команда со -m
флаг для создания развертываемого архива. The -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
.
Включите развертываемый архив, содержащий карту 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
Также можно включить развертываемый архив, содержащий карту 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