Поддерживаемая платформа: Linux® только.
Этот пример показывает вам, как использовать приложение Hadoop Compiler, чтобы создать развертываемый архив, состоящий из map и reduce функций MATLAB® и затем передать развертываемый архив в качестве аргумента полезной нагрузки к заданию, представленному кластеру Hadoop®.
Цель: Вычислите максимальную задержку прибытия авиакомпании от данного набора данных.
Набор данных: | airlinesmall.csv |
Описание: |
Отъезд авиакомпании и информация о прибытии от 1987-2008. |
Местоположение : | /usr/local/MATLAB/R2020b/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/v99
как местоположение папки MATLAB Runtime.
Если у вас нет MATLAB Runtime, можно загрузить его с веб-сайта в: https://www.mathworks.com/products/compiler/mcr
.
Примечание
Для получения информации о номерах версий MATLAB Runtime соответствующие релизы MATLAB см. этот список.
Скопируйте функцию карты maxArrivalDelayMapper.m
от /usr/local/MATLAB/R2020b/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/v99/toolbox/mlhadoop/jar/a2.2.0/mwmapreduce.jar \
com.mathworks.hadoop.MWMapReduceDriver \
-D mw.mcrroot=/usr/local/MATLAB/MATLAB_Runtime/v99 \
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/v99 \
-D mw.mcrroot=/usr/local/MATLAB/MATLAB_Runtime/v99 \
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