Лекция 5. Hadoop Streaming (1185406)
Текст из файла
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.
Характеристики
Тип файла PDF
PDF-формат наиболее широко используется для просмотра любого типа файлов на любом устройстве. В него можно сохранить документ, таблицы, презентацию, текст, чертежи, вычисления, графики и всё остальное, что можно показать на экране любого устройства. Именно его лучше всего использовать для печати.
Например, если Вам нужно распечатать чертёж из автокада, Вы сохраните чертёж на флешку, но будет ли автокад в пункте печати? А если будет, то нужная версия с нужными библиотеками? Именно для этого и нужен формат PDF - в нём точно будет показано верно вне зависимости от того, в какой программе создали PDF-файл и есть ли нужная программа для его просмотра.