Поддерживаемая платформа: Linux® только.
Этот пример показывает вам, как создать автономное приложение MapReduce MATLAB® с помощью mcc
команда и запуск это против кластера Hadoop®.
Цель: Вычислите максимальную задержку прибытия авиакомпании от данного набора данных.
Набор данных: | airlinesmall.csv |
Описание: |
Отъезд авиакомпании и информация о прибытии от 1987-2008. |
Местоположение : | /usr/local/MATLAB/R2020a/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/v98
как местоположение папки MATLAB Runtime.
Если у вас нет MATLAB Runtime, можно загрузить его с веб-сайта в: https://www.mathworks.com/products/compiler/mcr
.
Для получения информации о номерах версий MATLAB Runtime соответствующие релизы MATLAB см. этот список.
Скопируйте функцию карты maxArrivalDelayMapper.m
от /usr/local/MATLAB/R2020a/toolbox/matlab/demos
папка к папке работы.
Для получения дополнительной информации смотрите Запись Функция Карты (MATLAB).
Скопируйте уменьшать функциональный maxArrivalDelayReducer.m
от
папка к папке работы.matlabroot
/toolbox/matlab/demos
Для получения дополнительной информации смотрите Запись Уменьшать Функция (MATLAB).
Создайте директорию,/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
. Вы добавите код, перечисленный на шагах, описанных ниже к этому файлу скрипта.
Создание Datastore
это указывает на данные авиакомпании в Распределенной файловой системе Hadoop (HDFS).
ds = datastore('hdfs:///user/username/datasets/airlinesmall.csv',... 'TreatAsMissing','NA',... 'SelectedVariableNames',{'UniqueCarrier','ArrDelay'});
Для получения дополнительной информации смотрите работу с Удаленными данными (MATLAB).
Сконфигурируйте приложение для развертывания против Hadoop с настройками по умолчанию.
config = matlab.mapreduce.DeployHadoopMapReducer;
Класс matlab.mapreduce.DeployHadoopMapReducer
может использоваться, чтобы сконфигурировать автономное приложение на основе среды Hadoop, где это будет развернутым.
Например, если вы хотите задать местоположение MATLAB Runtime на каждом из узлов рабочего на кластере, включайте строку кода, похожую на это:
config = matlab.mapreduce.DeployHadoopMapReducer('MCRRoot','/opt/MATLAB/MATLAB_Runtime/v98');
/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/v98
/usr/local/MATLAB/MATLAB_Runtime/v98
аргумент, указывающий на местоположение 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 (MATLAB).
Полный код для автономного приложения depMapRedStandAlone
может быть найден здесь:
KeyValueDatastore
| TabularTextDatastore
| datastore
| matlab.mapreduce.DeployHadoopMapReducer
| mcc