Поддерживаемая платформа: Linux® только.
Этот пример показывает вам, как использовать приложение Hadoop Compiler, чтобы создать развертываемый архив, состоящий из map и reduce функций 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 см. этот список.
Скопируйте функцию карты maxArrivalDelayMapper.m
от /usr/local/MATLAB/R2021a/toolbox/matlab/demos
папка к папке работы.
Для получения дополнительной информации смотрите Запись Функция Карты.
Скопируйте уменьшать функциональный 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
пусто, рассмотрите раздел Prerequisites выше, чтобы видеть, как можно установить 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 панели инструментов щелкните плюс кнопка, чтобы добавить файл картопостроителя 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
папка.
Включите развертываемый архив, содержащий map и reduce функции 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
Альтернативно, можно включить развертываемый архив, содержащий map и reduce функции 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