Поддерживаемая платформа: 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