Поддерживаемая платформа: Linux® только.
Этот пример показывает вам, как создать автономное приложение MapReduce MATLAB® с помощью mcc
команда и запуск это против кластера 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
переменная окружения.
Создайте новый скрипт MATLAB с именем depMapRedStandAlone.m
. Вы добавите код, перечисленный на шагах, описанных ниже к этому файлу скрипта.
Создайте a datastore
это указывает на данные авиакомпании в Распределенной файловой системе Hadoop (HDFS).
ds = datastore('hdfs:///user/username/datasets/airlinesmall.csv',... 'TreatAsMissing','NA',... 'SelectedVariableNames',{'UniqueCarrier','ArrDelay'});
Для получения дополнительной информации смотрите работу с Удаленными данными.
Сконфигурируйте приложение для развертывания против Hadoop с настройками по умолчанию.
config = matlab.mapreduce.DeployHadoopMapReducer;
Класс matlab.mapreduce.DeployHadoopMapReducer
может использоваться, чтобы сконфигурировать автономное приложение на основе среды Hadoop, где это будет развернутым.
Например, если вы хотите задать местоположение MATLAB Runtime на каждом из узлов рабочего в кластере, включайте строку кода, похожую на это:
config = matlab.mapreduce.DeployHadoopMapReducer('MCRRoot','/opt/MATLAB/MATLAB_Runtime/v910');
/opt/MATLAB/MATLAB_Runtime
на узлах рабочего.Для получения информации об определении дополнительных кластерных определенных свойств смотрите matlab.mapreduce.DeployHadoopMapReducer
.
Примечание
Определение местоположения MATLAB Runtime как часть класса matlab.mapreduce.DeployHadoopMapReducer
заменит любое местоположение MATLAB Runtime, заданное во время выполнения автономного приложения.
Задайте среду выполнения с помощью mapreducer
.
mr = mapreducer(config);
Примените mapreduce
функция.
result = mapreduce(... ds,... @maxArrivalDelayMapper,@maxArrivalDelayReducer,... mr,... 'OutputType','Binary', ... 'OutputFolder','hdfs:///user/<username>/results/myresults');
Примечание
Директория HDFS, такая как .../myresults
может быть записан в только однажды. Если вы планируете запуск вашего автономного приложения многократно против кластера Hadoop, убедитесь, что вы удаляете .../myresults
директория на HDFS до каждого выполнения. Другая опция должна изменить название .../myresults
директория в коде MATLAB и перекомпилировала приложение.
Считайте результат получившегося datastore.
myAppResult = readall(result)
Используйте mcc
команда с -m
отметьте, чтобы создать автономное приложение.
mcc -m depMapRedStandAlone.m
-m
флаг создает стандартный исполняемый файл, который может быть запущен из командной строки. Однако mcc
команда не может группировать результаты в инсталляторе.
Запустите автономное приложение от интерпретатора Linux используя следующую команду:
$ ./run_depMapRedStandAlone.sh /usr/local/MATLAB/MATLAB_Runtime/v910
/usr/local/MATLAB/MATLAB_Runtime/v910
аргумент, указывающий на местоположение MATLAB Runtime.
До выполнения вышеупомянутой команды проверьте что HADOOP_PREFIX
переменная окружения установлена в Терминале путем ввода:
$ echo $HADOOP_PREFIX
echo
подходит пустой, смотрите раздел Prerequisites выше, чтобы видеть, как можно установить HADOOP_PREFIX
переменная окружения.Ваше приложение не выполнится если HADOOP_PREFIX
переменная окружения не установлена.
Вы будете видеть следующий выход:
myAppResult = Key Value _________________ ______ 'MaxArrivalDelay' [1014]
Другие примеры map
и reduce
функции доступны в toolbox/matlab/demos
папка. Можно использовать другие примеры, чтобы моделировать подобные автономные приложения, которые запускаются против Hadoop. Для получения дополнительной информации смотрите Сборку Эффективные Алгоритмы с MapReduce.
Полный код для автономного приложения depMapRedStandAlone
может быть найден здесь:
datastore
| KeyValueDatastore
| matlab.mapreduce.DeployHadoopMapReducer
| mcc
| TabularTextDatastore