mapreduce
в кластере HadoopПрежде чем можно будет запуститься mapreduce
на Hadoop® кластер, убедитесь, что кластер и клиентская машина правильно сконфигурированы. Консультируйтесь со своим системным администратором или смотрите, Конфигурируют Кластер Hadoop (MATLAB Parallel Server).
При выполнении mapreduce
в кластере Hadoop с двоичным выходом (значение по умолчанию), получившийся KeyValueDatastore
точки к файлам Последовательности Hadoop, вместо бинарных MAT-файлов, как сгенерировано mapreduce
в других средах. Для получения дополнительной информации смотрите 'OutputType'
описание аргумента на mapreduce
страница с описанием.
При выполнении mapreduce
в кластере Hadoop порядок пар "ключ-значение" в выходе отличается по сравнению с выполнением mapreduce
в других средах. Если ваше приложение зависит от расположения данных в выходе, необходимо отсортировать данные согласно собственным требованиям.
В этом примере показано, как изменить MATLAB® пример для вычисления средней авиакомпании задерживается, чтобы работать на кластере Hadoop.
Во-первых, необходимо установить переменные окружения и кластерные свойства как подходящие для определенной настройки Hadoop. Смотрите своего системного администратора для значений для этих и других свойств, необходимых для представления заданий к вашему кластеру.
setenv('HADOOP_HOME', '/path/to/hadoop/install') cluster = parallel.cluster.Hadoop;
Примечание
Заданный outputFolder
не должен уже существовать. mapreduce
выход от кластера Hadoop не может перезаписать существующую папку.
Вы потеряете свои данные, если mapreducer
изменен или удален.
Создайте объект MapReducer задать это mapreduce
должен использовать ваш кластер Hadoop.
mr = mapreducer(cluster);
Создайте и предварительно просмотрите datastore. Набор данных доступен в
.matlabroot
/toolbox/matlab/demos
ds = datastore('airlinesmall.csv','TreatAsMissing','NA',... 'SelectedVariableNames','ArrDelay','ReadSize',1000); preview(ds)
ArrDelay ________ 8 8 21 13 4 59 3 11
Затем задайте свою выходную папку, выход outds
и вызовите mapreduce
выполниться в кластере Hadoop, заданном mr
. Map и reduce функции доступны в
.matlabroot
/toolbox/matlab/demos
outputFolder = 'hdfs:///home/myuser/out1'; outds = mapreduce(ds,@myMapperFcn,@myReducerFcn,'OutputFolder',outputFolder); meanDelay = mapreduce(ds,@meanArrivalDelayMapper,@meanArrivalDelayReducer,mr,... 'OutputFolder',outputFolder)
Parallel mapreduce execution on the Hadoop cluster: ******************************** * MAPREDUCE PROGRESS * ******************************** Map 0% Reduce 0% Map 66% Reduce 0% Map 100% Reduce 66% Map 100% Reduce 100% meanDelay = KeyValueDatastore with properties: Files: { ' .../tmp/alafleur/tpc00621b1_4eef_4abc_8078_646aa916e7d9/part0.seq' } ReadSize: 1 key-value pairs FileType: 'seq'
Считайте результат.
readall(meanDelay)
Key Value __________________ ________ 'MeanArrivalDelay' [7.1201]
Несмотря на то, что в демонстрационных целях этот пример использует локальный набор данных, вероятно при использовании Hadoop, что ваш набор данных хранится в файловой системе HDFS™. Аналогично, вы можете быть обязаны хранить mapreduce
выведите в HDFS. Для получения дополнительной информации о доступе к HDFS в MATLAB, смотрите работу с Удаленными данными.