Лекция 5. Hadoop Streaming (2014 Лекции)
Описание файла
Файл "Лекция 5. Hadoop Streaming" внутри архива находится в папке "2014 Лекции". PDF-файл из архива "2014 Лекции", который расположен в категории "". Всё это находится в предмете "(смрхиод) современные методы распределенного хранения и обработки данных" из 10 семестр (2 семестр магистратуры), которые можно найти в файловом архиве МГУ им. Ломоносова. Не смотря на прямую связь этого архива с МГУ им. Ломоносова, его также можно найти и в других разделах. .
Просмотр PDF-файла онлайн
Текст из PDF
Hadoop Streaminghttp://bigdata.cs.msu.ruВведение• Желание– Пользовать Hadoop для обработки Big Data• Ограничения– Поверхностные знания о Java (ЯП, платформа)• Что есть– Понимание принципов работы Hadoop– Навыки работы с другим(и) ЯПhttp://bigdata.cs.msu.ruЭлементарное понимание• Шаг отображения (Map)shellMapper.sh• Шаг свертки (Reduce)shellReducer.sh• Сцепкаcat someInputFile | shellMapper.sh |shellReducer.sh > someOutputFilehttp://bigdata.cs.msu.ruРешение• Утилита, распространяемая вместе с Hadoop$HADOOP_HOME/hadoop-streaming.jar• Позволяет использовать для отображения исвертки любые «команды»– Требуются минимальные знания о Javahttp://bigdata.cs.msu.ruКак работает Streaming• Каждая задача отображения и/или сверткизапускает заданную программу вотдельном процессе– Исполняемый файл (бинарный или скрипт)– Программа на интерпретируемом языке• Взаимодействие через стандартные потокиhttp://bigdata.cs.msu.ruПример запуска$ hadoop jar \$HADOOP_HOME/hadoop-streaming.jar \-input “/logs/1402*/*”-output /output-mapper cat-reducer wchttp://bigdata.cs.msu.ruОбработка входных данныхK1, V1InputFormatInputSplitRecordReaderMapperInputSplitRecordReaderMapperInputSplitRecordReaderMapper• InputFormat разбивает данные ипредоставляет RecordReader для чтениязаписей• Один сплит — одна задача отображенияhttp://bigdata.cs.msu.ruОбработка входных данныхK1, V1InputFormatInputSplitRecordReaderMapperInputSplitRecordReaderMapperInputSplitRecordReaderMapper• По умолчанию TextInputFormat• <LongWritable,Text> — смещение и строкаhttp://bigdata.cs.msu.ruШаги отображения и свертки• PipeMapper, PipeReducer — «мосты»между фреймворком и внешнейпрограммой• PipeMapRed — общая функциональность:доступ к конфигурации текущей задачи,запуск переданной пользователемкоманды в начале работы, назначениепотоковhttp://bigdata.cs.msu.ruШаги отображения и свертки• PipeMapRed#configure– Запуск команды в отдельном процессе– Получение потоков для взаимодействия• PipeMapRed#startOutputThreads– Создание нитей для прослушивания stdout иstderr процесса и формирования выходныхпарhttp://bigdata.cs.msu.ruШаг MapK1, V1PipeMapperK1, V1MROutputThreadK2, V2InputWriterOutputReaderK1 +\t + V1K2 +\t + V2Mapper process• InputWriter, OutputReader — сериализация идесериализация• Сбор записей с STDOUT процесса осуществляется вотдельном потокеhttp://bigdata.cs.msu.ruK2, V2Шаг ReduceK2, [V21, … ]PipeReducerK2, V2iMROutputThreadK3, V3K3, V3iInputWriterOutputReaderK2 +\t + V2iK3 +\t + V3iReducer process• PipeReducer передает InputWriter каждую запись• Процесс пользователя не имеет информации о границахгруппhttp://bigdata.cs.msu.ruЗавершение• PipeMapper, PipeReducer– PipeMapRed#mapRedFinished()сбрасывает и закрывает потоки– PipeMapRed#waitOutputThreadsдожидается завершения процесса, после чегодожидается завершения нитей обработкиstdout и stderrhttp://bigdata.cs.msu.ruКастомизация задачи Streaming• Задание параметров при запуске:-D property=value• Позволяет задавать InputWriter,OutputReader:stream.map.input.writer.classstream.map.output.reader.classstream.reduce.input.writer.classstream.reduce.output.reader.classhttp://bigdata.cs.msu.ruКастомизация задачи Streaming• RawBytesInputWriter пишет в потокдлину объекта в байтах и объект• RawBytesInputReader считываетдлину, затем нужное число байтhttp://bigdata.cs.msu.ruКастомизация задачи Streaming• TextInputWriter, TextOutputReaderиспользуются по умолчанию• TextInputWriter записывает ключ,разделитель и значениеhttp://bigdata.cs.msu.ruКастомизация задачи Streaming• Ключ имеет несколько полей, записанныхчерез разделитель• Если TextOutputReader не находитнужного числа разделителей, то вся строкасчитается ключом, значение равно Text()http://bigdata.cs.msu.ruКастомизация задачи Streaming• Задание значения разделителя-D stream.reduce.input.field.separator=‘.’• Задание числа полей ключа-D stream.map.output.key.fields=2http://bigdata.cs.msu.ruКастомизация задачи Streaming• Иногда нужен только шаг Map• -D mapred.reduce.tasks=0• Вывод шага Map будет записан в HDFShttp://bigdata.cs.msu.ruКастомизация задачи StreamingОпция -file• Позволяет передавать файлы на машины вкластере• Необходима, если в качестве команд указаныисполняемые файлы, отсутствующие намашинах-mapper mapper.py \-file /path/to/mapper.pyhttp://bigdata.cs.msu.ruИспользование утилиты$> hadoop jar \$HADOOP_HOME/hadoop-streaming.jar \[genericOptions] [streamingOptions]http://bigdata.cs.msu.rugenericOptionsПараметрПояснения-conf configuration_file Задание конфигурационного файла-D property=valueЗадание значению свойству-filesЗадание списка файлов (череззапятую) для копирования наMap/Reduce-кластерhttp://bigdata.cs.msu.rustreamingOptions (1)ПараметрПояснения-input directoryname orfilename-output directorynameВходные данные для mapper-mapper executable orJavaClassName-reducer executable orJavaClassName-file filenamehttp://bigdata.cs.msu.ruВыходной каталог для reducerstreamingOptions (2)ПараметрПояснения-inputformatJavaClassNameПользовательский класс, отдающийтекстовые пары.
По умолчаниюTextInputFormatПользовательский класс,принимающий текстовые пары. Поумолчанию TextOutputformatЧисло reducer-ов-outputformatJavaClassName-numReduceTaskshttp://bigdata.cs.msu.ruЗаключение• Плюсы– Возможностьиспользоватьдругие языки,кроме Java– Простотаразработкиhttp://bigdata.cs.msu.ru• Минусы– Накладные расходына взаимодействиемежду процессами– Ограниченныевозможности посравнению с Java API.