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