Поддерживаемая платформа: только 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 в папку, доступную каждому рабочему узлу кластера Hadoop. В этом примере используется /usr/local/MATLAB/MATLAB_Runtime/v910 в качестве расположения папки среды выполнения MATLAB.
Если у вас нет среды выполнения MATLAB, вы можете загрузить ее с веб-сайта по адресу: https://www.mathworks.com/products/compiler/mcr.
Примечание
Для получения информации о номерах версий среды выполнения MATLAB, соответствующих выпускам MATLAB, см. этот список.
Копирование функции карты maxArrivalDelayMapper.m от /usr/local/MATLAB/R2021a/toolbox/matlab/demos в рабочую папку.
Дополнительные сведения см. в разделе Запись функции карты.
Копирование функции сокращения maxArrivalDelayReducer.m от в рабочую папку.matlabroot/toolbox/matlab/demos
Дополнительные сведения см. в разделе Запись функции уменьшения.
Создание каталога /user/ при HDFS™ и копировании файла <username>/datasetsairlinesmall.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 с помощью командной строки MATLAB (>> hadoopCompiler) или через галерею приложений.

В разделе «Функция сопоставления» панели инструментов нажмите кнопку «плюс», чтобы добавить файл сопоставления. maxArrivalDelayMapper.m.
В разделе «Уменьшить функцию» панели инструментов нажмите кнопку «плюс», чтобы добавить файл редуктора. maxArrivalDelayReducer.m.
В разделе «Файл хранилища данных» нажмите кнопку «плюс», чтобы добавить .mat файл infoAboutDataset.mat содержащий datastore объект.
В разделе «Типы вывода» выберите keyvalue как тип вывода. Выбор keyvalue поскольку тип выходного документа означает, что результаты могут быть прочитаны только в MATLAB. Если необходимо, чтобы результаты были доступны вне MATLAB, выберите тип вывода как tabulartext.
Переименование информации полезной нагрузки задания MapReduce в maxArrivalDelay.
Щелкните Пакет, чтобы создать развертываемый архив.
Приложение компилятора Hadoop создает файл журнала 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, и сократите функции в задание восстановления карты 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, и сократить функции в задание сокращения Hadoop с помощью сценария оболочки, созданного приложением компилятора Hadoop. В оболочке 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]Другие примеры функций отображения и сокращения доступны по адресу toolbox/matlab/demos папка. Можно использовать другие примеры для прототипа подобных развертываемых архивов для запуска в кластере Hadoop. Дополнительные сведения см. в разделе Создание эффективных алгоритмов с помощью MapReduce.
datastore | deploytool | KeyValueDatastore | TabularTextDatastore