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