Поддерживаемая платформа: только Linux ®.
В этом примере показано, как использовать mcc для создания развертываемого архива, состоящего из MATLAB ® map и сокращения функций, а затем передачи развертываемого архива в качестве аргумента полезной нагрузки заданию, отправленному в кластер Hadoop ®.
Цель: Рассчитать максимальную задержку прибытия авиакомпании из данного набора данных.
| Набор данных: | airlinesmall.csv |
| Описание: |
Информация о вылете и прилете авиакомпании из 1987-2008. |
| Расположение: | /usr/local/MATLAB/R2021a/toolbox/matlab/demos |
Примечание
По сравнению с рабочим процессом приложения компилятора Hadoop этот рабочий процесс требует явного создания файла параметров 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 в папку, доступную каждому рабочему узлу кластера 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 совпадают.
Создание файла конфигурации (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.
Включите развертываемый архив, содержащий карту 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]Другие примеры map и reduce функции доступны по адресу toolbox/matlab/demos папка. Можно использовать другие примеры для прототипа подобных развертываемых архивов, работающих в Hadoop. Дополнительные сведения см. в разделе Создание эффективных алгоритмов с помощью MapReduce.
datastore | deploytool | KeyValueDatastore | mcc | TabularTextDatastore