55
08 MapReduce - Приемы и стратегии реализации О.В. Сухорослов [email protected] 13.04.2012 О.В. Сухорослов 08 MapReduce - Приемы и стратегии реализации 13.04.2012 1 / 55

О.В.Сухорослов "MapReduce: приемы и стратегии реализации"

  • Upload
    yandex

  • View
    2.575

  • Download
    2

Embed Size (px)

DESCRIPTION

О.В.Сухорослов "MapReduce: приемы и стратегии реализации", 13.03.2012, место показа МФТИ, Школа анализа данных (ШАД)

Citation preview

Page 1: О.В.Сухорослов "MapReduce: приемы и стратегии реализации"

08 MapReduce - Приемы и стратегии реализации

О.В. Сухорослов

[email protected]

13.04.2012

О.В. Сухорослов ()08 MapReduce - Приемы и стратегии реализации 13.04.2012 1 / 55

Page 2: О.В.Сухорослов "MapReduce: приемы и стратегии реализации"

План лекции

Приемы и стратегии реализации MapReduce-программПодробности про Hadoop Java APIHadoop StreamingДЗ №3

О.В. Сухорослов ()08 MapReduce - Приемы и стратегии реализации 13.04.2012 2 / 55

Page 3: О.В.Сухорослов "MapReduce: приемы и стратегии реализации"

Приемы и стратегии

О.В. Сухорослов ()08 MapReduce - Приемы и стратегии реализации 13.04.2012 3 / 55

Page 4: О.В.Сухорослов "MapReduce: приемы и стратегии реализации"

Ограничения

Достаточно жесткая модель вычислений

Синхронизация между задачами только в фазе shuffle

Ограниченный контроль над тем, где, когда и какие данные будетобрабатывать конкретная задача

О.В. Сухорослов ()08 MapReduce - Приемы и стратегии реализации 13.04.2012 4 / 55

Page 5: О.В.Сухорослов "MapReduce: приемы и стратегии реализации"

Возможности

Использование сложных ключей и значений для управленияпроцессом вычислений

Выполнение заданного кода при инициализации и завершенииmap- и reduce-задач

Сохранение состояния внутри map- и reduce-задач при обработкегруппы записей

Определение порядка сортировки промежуточных ключей

Определение разбиения пространства промежуточных ключеймежду reduce-задачами

Композиция нескольких MapReduce-заданий

О.В. Сухорослов ()08 MapReduce - Приемы и стратегии реализации 13.04.2012 5 / 55

Page 6: О.В.Сухорослов "MapReduce: приемы и стратегии реализации"

Показатели качества MapReduce-программ

МасштабируемостьВ идеале - линейная

При двукратном увеличении объема данных происходитдвукратное увеличение времени работыПри двукратном увеличении количества машин происходитдвукратное уменьшение времени работы

Эффективное использование ресурсов кластера

О.В. Сухорослов ()08 MapReduce - Приемы и стратегии реализации 13.04.2012 6 / 55

Page 7: О.В.Сухорослов "MapReduce: приемы и стратегии реализации"

Локальная агрегация промежуточных данных

Ключевой прием при реализации эффективныхMapReduce-программ

Позволяет уменьшить накладные расходы на передачу данныхмежду задачами

Сохрание данных на дискПередача по сети

Позволяет сбалансировать reduce-задачи

О.В. Сухорослов ()08 MapReduce - Приемы и стратегии реализации 13.04.2012 7 / 55

Page 8: О.В.Сухорослов "MapReduce: приемы и стратегии реализации"

Combiner

Для ассоциативных и коммутативных реализаций reducecombiner == reducer

Не должен менять типы ключей и значений между map и reduceНа входе - выходные типы для mapНа выходе - входные типы для reduce

Hadoop: динамически использует combine как дополнительнуюоптимизацию

Может вообще не запускаться или запускаться несколько раз,в том числе на стороне reduce

О.В. Сухорослов ()08 MapReduce - Приемы и стратегии реализации 13.04.2012 8 / 55

Page 9: О.В.Сухорослов "MapReduce: приемы и стратегии реализации"

In-mapper Combining

Hadoop: Mappervoid setup(Mapper.Context context)void map(K1 key, V1 value, Mapper.Context context)void cleanup(Mapper.Context context)

О.В. Сухорослов ()08 MapReduce - Приемы и стратегии реализации 13.04.2012 9 / 55

Page 10: О.В.Сухорослов "MapReduce: приемы и стратегии реализации"

In-mapper Combining

ПреимуществаНе требуется отдельный combinerПолный контроль над тем когда и как происходит локальнаяаггрегацияОбычно более эффективен, чем combiner

НедостаткиНарушает функциональную парадигму

Хранение состояния может привести к зависмости поведенияпрограммы от порядка обработки записей

Для хранения промежуточных результатов требуется достаточныйобъем памяти

Становится узким местом при масштабированииСброс агрегированных данных через каждые N записей или придостижении лимита памяти

О.В. Сухорослов ()08 MapReduce - Приемы и стратегии реализации 13.04.2012 10 / 55

Page 11: О.В.Сухорослов "MapReduce: приемы и стратегии реализации"

Пример

Вычисление среднего значения для каждого ключа

На входе: (string key, int val)На выходе: (string key, int avg_val)

Нельзя использовать reduce в качестве combine!

О.В. Сухорослов ()08 MapReduce - Приемы и стратегии реализации 13.04.2012 11 / 55

Page 12: О.В.Сухорослов "MapReduce: приемы и стратегии реализации"

Вариант 1

О.В. Сухорослов ()08 MapReduce - Приемы и стратегии реализации 13.04.2012 12 / 55

Page 13: О.В.Сухорослов "MapReduce: приемы и стратегии реализации"

Вариант 2

О.В. Сухорослов ()08 MapReduce - Приемы и стратегии реализации 13.04.2012 13 / 55

Page 14: О.В.Сухорослов "MapReduce: приемы и стратегии реализации"

Вариант 3

О.В. Сухорослов ()08 MapReduce - Приемы и стратегии реализации 13.04.2012 14 / 55

Page 15: О.В.Сухорослов "MapReduce: приемы и стратегии реализации"

Стратегии Pairs и Stripes

Пример: Вычиcление word co-occurence matrixМатрица M размера NxN, где N - количество слов в коллекциидокументовЭлемент M(i , j) содержит количество раз слова wi и wj

встречаются вместе в некотором контексте (предложение,параграф, документ...)

О.В. Сухорослов ()08 MapReduce - Приемы и стратегии реализации 13.04.2012 15 / 55

Page 16: О.В.Сухорослов "MapReduce: приемы и стратегии реализации"

Стратегия Pairs

О.В. Сухорослов ()08 MapReduce - Приемы и стратегии реализации 13.04.2012 16 / 55

Page 17: О.В.Сухорослов "MapReduce: приемы и стратегии реализации"

Стратегия Stripes

О.В. Сухорослов ()08 MapReduce - Приемы и стратегии реализации 13.04.2012 17 / 55

Page 18: О.В.Сухорослов "MapReduce: приемы и стратегии реализации"

Какая стратегия лучше?

Эффективнее / быстрее?

Лучше масштабируется?

О.В. Сухорослов ()08 MapReduce - Приемы и стратегии реализации 13.04.2012 18 / 55

Page 19: О.В.Сухорослов "MapReduce: приемы и стратегии реализации"

Сравнение

Pairs генерирует гораздо больше записей и данных

Stripes генерирует меньше промежуточных ключей и используетболее компактный ключ, но сложное значение

В Stripes больше возможностей для применения локальнойагрегации

Stripes предъявляет бОльшие требования к доступной памятиЭти требования могут расти с ростом данных

О.В. Сухорослов ()08 MapReduce - Приемы и стратегии реализации 13.04.2012 19 / 55

Page 20: О.В.Сухорослов "MapReduce: приемы и стратегии реализации"

Существуют ли промежуточные стратегии?

О.В. Сухорослов ()08 MapReduce - Приемы и стратегии реализации 13.04.2012 20 / 55

Page 21: О.В.Сухорослов "MapReduce: приемы и стратегии реализации"

Нормализация значений co-occurence matrix

Относительная частота

Реализация для стратегии Stripes?Реализация для стратегии Pairs?

О.В. Сухорослов ()08 MapReduce - Приемы и стратегии реализации 13.04.2012 21 / 55

Page 22: О.В.Сухорослов "MapReduce: приемы и стратегии реализации"

Reduce для стратегии Pairs

Прием Order inversionРаспределение промежуточных ключей с одинаковым первымсловом на один reducerВыдача в Map вспомогательных записей с ключами (wi , ∗)Сортировка промежуточных ключей по первому слову так, чтобывспомогательные значения были первымиХранение внутреннего состояния в Reduce

О.В. Сухорослов ()08 MapReduce - Приемы и стратегии реализации 13.04.2012 22 / 55

Page 23: О.В.Сухорослов "MapReduce: приемы и стратегии реализации"

Hadoop: Сложный тип ключа

1 public static class Bigram2 implements WritableComparable <Bigram > {3

4 private String first;5 private String second;6

7 public void set(String first , String second) {8 this.first = first;9 this.second = second;

10 }11

12 public String getFirst () {13 return first;14 }15

16 public String getSecond () {17 return second;18 }

О.В. Сухорослов ()08 MapReduce - Приемы и стратегии реализации 13.04.2012 23 / 55

Page 24: О.В.Сухорослов "MapReduce: приемы и стратегии реализации"

Hadoop: Сложный тип ключа (Сериализация)

1 @Override2 public void readFields(DataInput in) throws IOException {3 first = in.readUTF ();4 second = in.readUTF ();5 }6

7 @Override8 public void write(DataOutput out) throws IOException {9 out.writeUTF(first);

10 out.writeUTF(second );11 }

О.В. Сухорослов ()08 MapReduce - Приемы и стратегии реализации 13.04.2012 24 / 55

Page 25: О.В.Сухорослов "MapReduce: приемы и стратегии реализации"

Hadoop: Сложный тип ключа (Сравнение)

1 @Override2 public int compareTo(Bigram o) {3 if (!first.equals(o.first )) {4 return first.compareTo(o.first);5 } else {6 return second.compareTo(o.second );7 }8 }

О.В. Сухорослов ()08 MapReduce - Приемы и стратегии реализации 13.04.2012 25 / 55

Page 26: О.В.Сухорослов "MapReduce: приемы и стратегии реализации"

Hadoop: Сложный тип ключа (Строковый вид, Хэш)

1 @Override2 public String toString () {3 return first + "+" + second;4 }5

6 @Override7 public int hashCode () {8 return toString (). hashCode ();9 }

О.В. Сухорослов ()08 MapReduce - Приемы и стратегии реализации 13.04.2012 26 / 55

Page 27: О.В.Сухорослов "MapReduce: приемы и стратегии реализации"

Hadoop: Сложный тип значения

... implements Writable

О.В. Сухорослов ()08 MapReduce - Приемы и стратегии реализации 13.04.2012 27 / 55

Page 28: О.В.Сухорослов "MapReduce: приемы и стратегии реализации"

Hadoop: Partitioner

Класс org.apache.hadoop.mapreduce.Partitioner<K,V>1 abstract int getPartition(K key , V value , int numPartitions)

По умолчанию используется реализация HashPartitioner

1 (key.hashCode () & Integer.MAX_VALUE) % numReduceTasks

Пример своей реализации см. в коде к лекции

О.В. Сухорослов ()08 MapReduce - Приемы и стратегии реализации 13.04.2012 28 / 55

Page 29: О.В.Сухорослов "MapReduce: приемы и стратегии реализации"

Hadoop: Sort Comparator

Используется дляпереопределения порядка сортировки ключейоптимизации

RawComparator, не требующий десериализации ключей в объекты

Job.setSortComparatorClass(...)

Готовые реализацииLongWritable.DecreasingComparator

Собственная реализацияСм. пример в коде к лекции

О.В. Сухорослов ()08 MapReduce - Приемы и стратегии реализации 13.04.2012 29 / 55

Page 30: О.В.Сухорослов "MapReduce: приемы и стратегии реализации"

Secondary Sorting

Иногда требуется упорядочить промежуточные значения дляданного ключа на входе Reduce

Возможные решенияСортировка в памяти внутри ReduceValue-to-key conversion:

(key, value) => (<key,subkey>, value)

Hadoop:Использование GroupingComparator для вызова reduce один раздля каждого значения keyСм. пример в дистрибутиве Hadoop:/src/examples/org/apache/hadoop/examples/SecondarySort.java

О.В. Сухорослов ()08 MapReduce - Приемы и стратегии реализации 13.04.2012 30 / 55

Page 31: О.В.Сухорослов "MapReduce: приемы и стратегии реализации"

JOIN

Reduce-side join

Map-side join

Memory-backed join

Distributed memory

О.В. Сухорослов ()08 MapReduce - Приемы и стратегии реализации 13.04.2012 31 / 55

Page 32: О.В.Сухорослов "MapReduce: приемы и стратегии реализации"

Подробности про Hadoop Java API

О.В. Сухорослов ()08 MapReduce - Приемы и стратегии реализации 13.04.2012 32 / 55

Page 33: О.В.Сухорослов "MapReduce: приемы и стратегии реализации"

Количество Map- и Reduce-задач

Большое количество задачулучшает балансировку нагрузки между узламиуменьшает время восстановления после отказовНО увеличивает накладные расходы

Время выполнения задачи должно быть не менее 30-40 секунд

О.В. Сухорослов ()08 MapReduce - Приемы и стратегии реализации 13.04.2012 33 / 55

Page 34: О.В.Сухорослов "MapReduce: приемы и стратегии реализации"

Количество Map-задач

10-100 maps / nodeКратное количеству map-слотов на кластере

Опция -D mapred.map.tasks=NМетод job.setNumMapTasks(int)

Определяется кол-вом порций (splits), на которые разбиваютсявходные данные

Размер порции определяется на основе нескольких параметровРазмер блока HDFS (128 Mb)Параметр mapred.max.split.size (=Long.MAX)Параметр mapred.min.split.size (=0)

split_size = max(min_split_size, min(max_split_size, dfs_block_size))

Каждая порция может включать содержимое только 1 файлаНесколько больших файлов лучше, чем много мелких

О.В. Сухорослов ()08 MapReduce - Приемы и стратегии реализации 13.04.2012 34 / 55

Page 35: О.В.Сухорослов "MapReduce: приемы и стратегии реализации"

Количество Reduce-задач

По умолчанию 1 (всегда в локальном режиме)

Опция -D mapred.reduce.tasks=NМетод job.setNumReduceTasks(int)

Подбирается опытным путемНемного меньше числа reduce-слотов на кластере (одна волна)Несколько “волн”, если reduce-задачи очень большие

0, если Reduce не нуженРезультаты map записываются напрямую в HDFS

О.В. Сухорослов ()08 MapReduce - Приемы и стратегии реализации 13.04.2012 35 / 55

Page 36: О.В.Сухорослов "MapReduce: приемы и стратегии реализации"

Объект Context

Передается в Map и Reduce

Предоставляет доступ к конфигурации заданияContext.getConfiguration()

Принимает пары (key,value) на выходеContext.write(key, value)

Позволяет обновлять статус задания и счетчики

О.В. Сухорослов ()08 MapReduce - Приемы и стратегии реализации 13.04.2012 36 / 55

Page 37: О.В.Сухорослов "MapReduce: приемы и стратегии реализации"

Повторное использование Writable-объектов

1 public void map (...) {2 ...3 for (String word : words) {4 context.write(new Text(word), new IntWritable (1));5 }6 }

1 class MyMapper ... {2 Text wordText = new Text ();3 IntWritable one = new IntWritable (1);4 public void map (...) {5 ...6 for (String word : words) {7 wordText.set(word);8 context.write(word , one);9 }

10 }11 }

О.В. Сухорослов ()08 MapReduce - Приемы и стратегии реализации 13.04.2012 37 / 55

Page 38: О.В.Сухорослов "MapReduce: приемы и стратегии реализации"

Статус и счетчики

Уведомление мастера о том, что задача “жива”mapreduce.task.timeout = 10 минут по умолчанию

Обновление статуса задачи

1 context.setStatus(String status)

Глобальные счетчики

1 static enum Counters { INPUT_WORDS , ... }2 ...3 context.getCounter(Counters.INPUT_WORDS ). increment (1)

О.В. Сухорослов ()08 MapReduce - Приемы и стратегии реализации 13.04.2012 38 / 55

Page 39: О.В.Сухорослов "MapReduce: приемы и стратегии реализации"

Distributed Cache 1

Загрузка дополнительных файлов на узлы кластера вместе сзаданием

Вспомогательные данные, текстовые файлы, архивы, библиотеки

Файлы должны быть предварительно размещены в HDFSИли переданы пути к локальным файлам с помощью

Опций командной строки -files, -archives, -libjarsJava API:

1 conf.set(" tmpfiles(tmparchives ,tmpjars)", "file :// path ...")

Файлы копируются один раз перед началом выполнения задания

Не допускается изменение данных файлов во время выполнениязадания

1http://hadoop.apache.org/mapreduce/docs/current/mapred_tutorial.html#DistributedCache

О.В. Сухорослов ()08 MapReduce - Приемы и стратегии реализации 13.04.2012 39 / 55

Page 40: О.В.Сухорослов "MapReduce: приемы и стратегии реализации"

Разнородные данные на входе и выходе

Входные данныеПо умолчанию все файлы имеют один формат и обрабатываютсяодним Map-классомorg.apache.hadoop.mapreduce.lib.input.MultipleInputs

Несколько наборов входных файловДля каждого набора можно указать свой формат и Map-класс

Выходные данныеПо умолчанию один файл на reducer

part-00000, part-00001, ...org.apache.hadoop.mapreduce.lib.output.MultipleOutputs

Несколько файлов на выходеКаждый файл может иметь свой формат и типы ключей-значений

О.В. Сухорослов ()08 MapReduce - Приемы и стратегии реализации 13.04.2012 40 / 55

Page 41: О.В.Сухорослов "MapReduce: приемы и стратегии реализации"

Композиция MapReduce-заданий

Цепочки заданийВыходные данные задания являются входными для следующегозадания

Объединение map-функций в один maporg.apache.hadoop.mapreduce.lib.chain.ChainMapper/ChainReducer[MAP+ / REDUCE MAP*]

Более сложные зависимости между заданиями (DAG)См. пакет org.apache.hadoop.mapreduce.lib.jobcontrol

О.В. Сухорослов ()08 MapReduce - Приемы и стратегии реализации 13.04.2012 41 / 55

Page 42: О.В.Сухорослов "MapReduce: приемы и стратегии реализации"

Task JVM Reuse

Конфигурационный параметр mapreduce.job.jvm.numtasks1 - JVM запускается заново для каждой задачи-1 - JVM используется повторно неограниченное количество раз(для задач данного задания)

1 Job.getConfiguration (). setInt (" mapreduce.job.jvm.numtasks", int)

О.В. Сухорослов ()08 MapReduce - Приемы и стратегии реализации 13.04.2012 42 / 55

Page 43: О.В.Сухорослов "MapReduce: приемы и стратегии реализации"

Отладка программ

ЛогиСодержимое stdout и stderr задач можно просмотреть черезWeb-интерфейс MapReduce

Счетчики

Profiling2

-D mapred.task.profile=true

Debugging3

2http://hadoop.apache.org/mapreduce/docs/current/mapred_tutorial.html#Profiling3http://hadoop.apache.org/mapreduce/docs/current/mapred_tutorial.html#Debugging

О.В. Сухорослов ()08 MapReduce - Приемы и стратегии реализации 13.04.2012 43 / 55

Page 44: О.В.Сухорослов "MapReduce: приемы и стратегии реализации"

Учебный пример (BigramCount + BigramSort)

Доступ к конфигурации задания в Mapper/Reduce.configure()Реализация сложных типов ключейРеализация PartitionerРеализация ComparatorСтатус и счетчикиПередача дополнительных файлов (DistributedCache)

In-mapper combiningPairsSecondary Sorting

О.В. Сухорослов ()08 MapReduce - Приемы и стратегии реализации 13.04.2012 44 / 55

Page 45: О.В.Сухорослов "MapReduce: приемы и стратегии реализации"

Запуск примера

BigramCount - подсчет всех биграмм

1 hadoop jar bigram.jar lecture8.BigramCount \2 -D mapred.reduce.tasks =150 \3 /data/wiki/en/articles /user/USER/enwiki -bg skip.en

BigramSort - выдача TOP биграмм для каждого слова

1 hadoop jar bigram.jar lecture8.BigramTop \2 -D mapred.reduce.tasks =1 \3 /user/USER/enwiki -bg /user/USER/enwiki -bg -top 100 10

О.В. Сухорослов ()08 MapReduce - Приемы и стратегии реализации 13.04.2012 45 / 55

Page 46: О.В.Сухорослов "MapReduce: приемы и стратегии реализации"

Старый и новый Java API4

Новый APIПакет org.apache.hadoop.mapreduceРекомендуется использоватьВсе примеры на лекциях используют новый API

Старый APIПакет org.apache.hadoop.mapredРекомендуется использовать только, если не хватает возможностейнового APIСкоро может стать deprecated

Не рекомендуется использовать в одной программе оба API

4http://hadoop.apache.org/mapreduce/docs/current/api/О.В. Сухорослов ()08 MapReduce - Приемы и стратегии реализации 13.04.2012 46 / 55

Page 47: О.В.Сухорослов "MapReduce: приемы и стратегии реализации"

Hadoop Streaming5

Позволяет использовать в качестве реализаций Map и Reduceпроизвольные программы и скрипты

Обмен данными между Hadoop и программой происходит черезстандартные потоки ввода-вывода

stdin: входные данные в виде строк key [tab] valuestdout: выходные данные в виде строк key [tab] value

5http://hadoop.apache.org/mapreduce/docs/current/streaming.htmlО.В. Сухорослов ()08 MapReduce - Приемы и стратегии реализации 13.04.2012 47 / 55

Page 48: О.В.Сухорослов "MapReduce: приемы и стратегии реализации"

Пример: mapper.py

1 #!/usr/bin/env python2

3 import sys4

5 for line in sys.stdin:6 line = line.strip (). lower ()7 words = line.split()8 for word in words:9 print ’%s\t%s’ % (word , 1)

О.В. Сухорослов ()08 MapReduce - Приемы и стратегии реализации 13.04.2012 48 / 55

Page 49: О.В.Сухорослов "MapReduce: приемы и стратегии реализации"

Пример: reducer.py

1 #!/usr/bin/env python2 import sys3

4 word2count = {}5

6 for line in sys.stdin:7 line = line.strip()8

9 word , count = line.split(’\t’, 1)10 try:11 count = int(count)12 except ValueError:13 continue14

15 try:16 word2count[word] = word2count[word] + count17 except:18 word2count[word] = count19

20 for word in word2count.keys ():21 print ’%s\t%s’ % (word , word2count[word])

О.В. Сухорослов ()08 MapReduce - Приемы и стратегии реализации 13.04.2012 49 / 55

Page 50: О.В.Сухорослов "MapReduce: приемы и стратегии реализации"

Запуск примера

Локальный тест1 $ cat text | python mapper.py | sort | python reducer.py

Запуск на кластере1 $ hadoop jar2 /usr/lib/hadoop/contrib/streaming/hadoop -streaming -0.20.2 - cdh3u3.jar3 -file ./ mapper.py -mapper ./ mapper.py4 -file ./ reducer.py -reducer ./ reducer.py5 -input /data/wiki/ru/articles -output ru-count6 -numReduceTasks 75

О.В. Сухорослов ()08 MapReduce - Приемы и стратегии реализации 13.04.2012 50 / 55

Page 51: О.В.Сухорослов "MapReduce: приемы и стратегии реализации"

Домашнее задание №3

Задача 1 Определить 20 наиболее часто встречающихся слов врусской (только русские слова) и английской Википедиях

Задача 2 Построить инвертированный индекс для русской ианглийской Википедий

Формат индекса:word [tab] title1 [tab] tf-idf1 [tab] title2 [tab] tf-idf2 ...Статьи должны быть отсортированы в порядке убывания tf-idf6

Разумно ограничить список N наиболее релевантными статьямиИз индекса следует исключить высокочастотные слова,полученные при решении Задачи 1

Срок - 2 недели

6http://en.wikipedia.org/wiki/Tf-idfО.В. Сухорослов ()08 MapReduce - Приемы и стратегии реализации 13.04.2012 51 / 55

Page 52: О.В.Сухорослов "MapReduce: приемы и стратегии реализации"

Данные

/data/wiki/ru/articles1,501,046 статей, 4.7 GB(/data/wiki/ru/raw: 2.2M страниц, 8.7 GB)Фрагмент для отладки: /data/wiki/ru/articles-part

/data/wiki/en/articles3,946,725 статей, 11 GB(/data/wiki/en/raw: 12M страниц, 35 GB)Фрагмент для отладки: /data/wiki/en/articles-part

Формат: каждая статья в виде строкиtitle [tab] content

О.В. Сухорослов ()08 MapReduce - Приемы и стратегии реализации 13.04.2012 52 / 55

Page 53: О.В.Сухорослов "MapReduce: приемы и стратегии реализации"

Отчет к ДЗ должен включать

Описание решенийИсходный код программПараметры запуска MapReduce-заданийВремя выполнения заданийПути к результатам в HDFS

О.В. Сухорослов ()08 MapReduce - Приемы и стратегии реализации 13.04.2012 53 / 55

Page 54: О.В.Сухорослов "MapReduce: приемы и стратегии реализации"

Ограничение на объем памяти

Лимит памяти для map- и reduce-задач: 1 Gb

О.В. Сухорослов ()08 MapReduce - Приемы и стратегии реализации 13.04.2012 54 / 55

Page 55: О.В.Сухорослов "MapReduce: приемы и стратегии реализации"

MapReduce-очереди

defaultИспользуется по-умолчаниюСодержит, как минимум, половину слотов кластера

152 map / 76 reduceДопускает одновременное выполнение нескольких заданийРекомендуется использовать для отладочных запусков

singleГарантированно доступна половина слотов кластераДопускает одновременное выполнение только одного заданияРекомендуется использовать для корректного измерения временивыполнения задания

В web-интерфейсе отображается полное время, включая ожиданиев очередиНачало выполнения задания можно отсчитывать с моментазапуска первой map-задачи

Запуск задания в очереди singleОпция ’-D mapred.job.queue.name=single’

О.В. Сухорослов ()08 MapReduce - Приемы и стратегии реализации 13.04.2012 55 / 55