Поддерживаемая платформа: Linux® только.
В этом примере показано, как использовать приложение Hadoop Compiler для создания развертываемого архива, состоящего из MATLAB® сопоставить и уменьшить функции, а затем передать развертываемый архив в качестве аргумента полезной нагрузки заданию, отправленному в Hadoop® кластер.
Цель: Вычислите максимальную задержку прибытия авиакомпании из данного набора данных.
Набор данных: | airlinesmall.csv |
Описание: |
Информация о вылете и прибытии из 1987-2008. |
Расположение: | /usr/local/MATLAB/R2021a/toolbox/matlab/demos |
Начните этот пример, создав новую рабочую папку, которая видна по путь поиска файлов 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 совпадают.
Запустите приложение Hadoop Compiler через командную строку MATLAB (>> hadoopCompiler
) или через галерею Apps.
В Map Function разделе панели инструментов нажмите кнопку «плюс», чтобы добавить файл mapper maxArrivalDelayMapper.m
.
В Reduce Function разделе панели инструментов нажмите кнопку «плюс», чтобы добавить файл редуктора maxArrivalDelayReducer.m
.
В разделе Datastore File нажмите кнопку «плюс», чтобы добавить .mat
файловой infoAboutDataset.mat
содержащий datastore
объект.
В Output Types разделе выберите keyvalue
как тип выхода. Выбор keyvalue
поскольку ваш тип выхода означает, что результаты могут быть считаны только в MATLAB. Если вы хотите, чтобы ваши результаты были доступны за пределами MATLAB, выберите тип выхода следующим tabulartext
.
Переименуйте MapReduce job payload information в maxArrivalDelay
.
Щелкните Package, чтобы создать развертываемый архив.
Приложение Hadoop Compiler создает файл журнала PackagingLog.txt
и две папки for_redistribution
и for_testing
.
for_redistribution | for_testing |
---|---|
readme.txt | readme.txt |
maxArrivalDelay.ctf | maxArrivalDelay.ctf |
run_maxArrivalDelay.sh | run_maxArrivalDelay.sh |
mccExcludedFiles.log | |
requiredMCRProducts.txt |
Можно использовать файл журнала PackagingLog.txt
чтобы увидеть точное mcc
синтаксис, используемый для упаковки развертываемого архива.
Из интерпретатора Linux перейдите к for_redistribution
папка.
Включите развертываемый архив, содержащий карту 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
| TabularTextDatastore