2015 Теормин (1185421), страница 3
Текст из файла (страница 3)
Volume, Velocity, Variety, Veracity ((не)достоверность)
23. Основные математические задачи машинного обучения.
Классификация, прогнозирование, кластеризация, обнаружение аномалий…
24. Примеры практических применений больших данных сегодня.
Интернет-реклама, кредитный скоринг, астрофизика.
Лекция 6.
25. GFS. Компоненты, их функции и взаимодействие, ключевые понятия, операции.
-
Дешевое ненадежное оборудование.
-
Эффективная работа с большим числом (миллионы) больших файлов (от 100МБ). Поддержка небольших файлов.
-
Эффективное последовательное чтение большими порциями (от 1 МБ). Редкое чтение по произвольному смещению.
-
Эффективное последовательное дописывание (append) большими порциями. Редкая запись по произвольному смещению.
-
Эффективная реализации модели producer-consumer при массовом дописовании файла (сотни producers). Consumer может читать данные как после завершения всез записей, так и параллельно с ними с минимальными издержками на синхронизацию.
-
Высокая пропускная способность вместо быстрого отклика.
Master
-
Метаданные - хранятся в оперативной памяти
-
Имена
-
Маппинги: файл -> чанки
-
Текущее местоположение реплик
-
Права доступа
-
Журнал операций
Репликация журнала операций master
Контрольные точки
Операции Master
-
Управление атомарностью
-
Сборка мусора (чанков удаленных файлов)
-
Ререпликация
Гарантия атомарности (создание файла, множественный append)
Контроль целостности данных на chunkservers
Резервные копии (Snapshots)
26. MapReduce. Компоненты, их функции и взаимодействие, ключевые понятия. Стадии MapReduce.
“...MapReduce - модель вычислений и ее реализация для обработки и генерации больших наборов данных. Пользователю достаточно задать функции
map (k1,v1) → list(k2,v2)
и
reduce (k2,list(v2)) → list(v3)
Программы, написанные в таком функциональном стиле могут быть автоматически распараллелены и исполнены на больших кластерах.”
“...Система исполнения позаботится о разбиении входных данных, планировании вычислений, ситуациях отказа оборудования, необходимом взаимодействии между узлами. Это позволяет программисту без опыта написания параллельных и распределенных программ, с легкостью использовать ресурсы кластера для решения больших вычислительных задач.”
Входные данные разбиваются на M частей (M - определяется числом блоков заданной длины
в данных)
2. Стартуют master (основная программа + планировщик) и workers
3. Master разбивает исходные данные на M splits и назначет M map заданий workers (опираясь
на GFS locality chunk’ов, входящих в каждый split)
4. Worker, получивший map задание, читает и распарсивает свой split и многократно вызывает
функцию map с выделенными key,value. И получает от функции список key2,value2, которые
накапливает в ОЗУ
5. Периодически списки key2,value2 записываются в локальные файлы с номерами hash(key2)%
R, их имена передаются master для оповещения reducers.
6. Master оповещает reducer’ов о появлении файлов и с этого момента reducers начинают
получают списки своих key2,value2 через сеть. После получения всех данных reducers
выполняют сортировку по ключу (при необходимости внешнюю)
7. После сортировки reducer запускает последовательный проход по отсортированным данным
и вызов функции reduce для групп значений, относящихся к общему ключу.
Лекция 7.
27. HDFS. Компоненты, их функции и взаимодействие. Операции. Отличия от GFS.
GFS | HDFS |
Параллельный append | Read-append по модели “читатель-писатель” |
Есть random access read/write | Нет random access read/write |
NameNode
В ОЗУ:
Метаданные
Размещение блоков по DataNodes
В виде файлов:
Метаданные - fsimage
Журнал изменений - edits
28. HDFS. Защита от сбоев (включая механизмы HDFS 2.0)
Write Ahead Log (WAL)
При создании, перемещении файла:
1. обновляется журнал изменений
2. обновляются метаданные в ОЗУ
fsimage - не обновляется!
При (ре)старте Namenode:
DataNodes сообщают о хранящихся на них блоках
edits накатываются на fsimage и последний обновляется на диске и загружается в ОЗУ
Secondary NameNode
Проблема: журнал изменений разрастается, увеличивается время восстановления после рестарта NameNode. Ухудшается доступность.
Решение:
контрольные точки - периодическое “проигрывание” edits текущей версии fsimage на Secondary NameNode.
HDFS 2.0: Высокая доступность (High Availability) - быстрое переключение на резервный NameNode в случае отказа основного NameNode○
Разделение на Active/Standby
Общее хранилище для edits
Standby непрерывно актуализирует свои метаданные
Запланированное/незапланированное преодоление сбоя
Изоляция при сбоях
29. HDFS 2.0
HDFS Federation - возможность добавления NameNode, управляющих своей частью иерархии каталогов
Независимые иерархии файлов
Общий пул блоков (общее множество DataNodes)
30. HDFS. Последовательность действий при чтении и записи, стратегия размещения реплик.
Чтение:
Запись:
Алгоритм по умолчанию
1я реплика - на узле клиента (если клиент не в кластере - на случайном узле)
2я реплика - на случайном узле в любой другой стойке.
3я реплика - в случайном узле той же стойки, где находится 2я реплика.
Последующие реплики - в случайных узлах кластера (без перегрузки стоек)
31. Hadoop MapReduce. Компоненты, их функции и взаимодействие. Стадии Hadoop MapReduce. Детали реализации стадии «Тасовка».
Распределитель (Mapper)
Редуктор(Reducer)
Combiner
32. Hadoop MapReduce. Типы для поддержки сериализации. Роль RawComparator.
RawComparator сравнивает побитовым образом: не нужно проводить десериализацию, а значит, увеличивается скорость работы.
33. Hadoop MapReduce. Входные форматы (InputFormat), примеры существующих реализаций. Подробности TextInputFormat. Разбиение (splitting). Размер сплита в случае FileInputFormat. Структура классов Hadoop Java API для реализации своего InputFormat.
InputFormat | Описание |
TextInputFormat | Ключ: смещение начала строки в байтах (LongWritable) Значение: Строка (Text) |
KeyValueTextInputFormat | Первый разделитель (key.value.separator.in.input.line, поумолчанию \t) делит строку на ключ (Text) и значение (Text) |
SequenceFileInputFormat<K,V> | Двоичный сжатый формат (для сцепления задач) |
NLineInputFormat | То же, что и TextInputFormat, но порциями по N строк (mapred.line.input. format.linespermap, по умолчанию 1) |
Число Mappers = Число сплитов
Название свойства | Тип | По умолчанию | Описание |
mapreduce.input.fileinputformat.split.minsize | int | 1 | Минимальный размер сплита в байтах |
mapreduce.input.fileinputformat.split.maxsize | long | Long.MAX_VALUE | Максимальный размер сплита в байтах |
dfs.blocksize | long | 128 МБ(134217728) | Размер блока HDFS |
34. Hadoop MapReduce. Распределитель (Mapper). Функции распределителя. Число распределителей.
Число Mappers = Число сплитов
35. Hadoop MapReduce. Редуктор (Reducer). Комбинатор (Combiner). Функции редуктора и комбинатора. Число редукторов. Типы агрегационных функций с т.зр. применимости комбинатора. Стадии MapReduce, на которых работают комбинаторы. Преимущества от использования комбинатора.
См. картинку в 31
Типы агрегатных функций | Примеры | Описание |
Дистрибутивные | max, min, sum, count | Функцию можно вычислять рекурсивно на подмножествах данных |
Алгебраические | avg, var | Функция можно вычислить на подмножествах данных с помощью нескольких дистрибутивных функций |
Холистические | median, quantiles | Функцию нельзя вычислить рекурсивно на подмножествах данных |
36. Разделитель (Partitioner). Функции разделителя. Реализация по умолчанию. Структура классов для реализации своего разделителя.
package org.apache.hadoop.mapreduce
public abstract class Partitioner<K,V> {
public abstract int getPartition(K key, V value, int numPartitions);
}
Лекция 8
37. SequenceFiles: устройство, типы, предпосылки к появлению. Использование сжатия данных в Hadoop (на каких этапах, какие типы архиваторов, достоинства и недостатки от использования сжатия).
sync маркер - между записями
формат без/c сжатием
сжатие записей/блоков записей
SequenceFileInputFormat<K,V>
Вероятность коллизии при использовании 16-байтового MD5 маркера в 1 ПБ файле – 10^-23
Входные данные могут поступать в сжатом виде (архивы)
Сжатие выходных данных Mapper’ов
Архивирование выходных данных программы
Формат сжатия | Программа | Алгоритм | Расширение | Поддержка разбиения |
DEFLATE | DEFLATE | .dflated | Нет | |
gzip | gzip | DEFLATE | .gz | Нет |
bzip2 | bzip2 | bzip2 | .bz2 | Да |
LZO | LZOp | LZO | .LZO | Нет (только при предварительном индексировании) |
LZ4 | - | LZ4 | .lz4 | Нет |
Snappy | - | Snappy | .snappy | Нет |
38. Обработка ошибок и сбоев оборудования в Hadoop MapReduce
Таймауты, макс. число попыток перезапуска.
39. Обеспечение глобальной сортировки результатов.
CustomPartitioner
40. Вторичная сортировка (Secondary Sort).
SecondarySort