23
Борьба за место в MapReduce Иван Комаров Яндекс 26 ноября 2013 года

Komarov borba za-miesto-urfu_2013

  • Upload
    yandex

  • View
    238

  • Download
    3

Embed Size (px)

DESCRIPTION

Иван Комаров на Я.Студенте в УрФУ. Борьба за место в MapReduce

Citation preview

Page 1: Komarov borba za-miesto-urfu_2013

Борьба за место в MapReduce

Иван Комаров

Яндекс

26 ноября 2013 года

Page 2: Komarov borba za-miesto-urfu_2013

Большие данные

Суммарный объём данных, хранящихся в MapReduce вЯндексе, — около 15 петабайт.

I Тысячи машин.I Несколько терабайт данных на каждой.I Сотни разработчиков, которые ежедневно работают с

этими данными.

Page 3: Komarov borba za-miesto-urfu_2013

Примеры данных

Пользовательские логи8 терабайт за день.

I Поисковые запросы ко всем сервисам Яндекса.I Показанные результаты.I Клики по результатам.

Twitter Firehose1,2 терабайт за день — все твиты в мире с дополнительнойметаинформацией.

Логи поискового паука2 терабайта за день — информация о том, какие страницыбыли скачаны (без содержимого самих страниц).

Page 4: Komarov borba za-miesto-urfu_2013

Нужно больше золота

. . . цена вопроса — шоколадка или немного квотына MapReduce. (из рабочей переписки)

Что делать, если места не хватает?I Закупать дополнительные машины.I Просить разработчиков избавиться от ненужных данных.I Хранить данные более компактно.

Page 5: Komarov borba za-miesto-urfu_2013

Модель данных

I Пользователи работают с таблицами.I Каждая таблица — это набор ключей и значений.

вконтакте http://vk.com; https://twitter.com/vkontakteновости http://ria.ru; http://lenta.ru, http://vesti.ruпогода http://pogoda.yandex.ru; http://weather.rambler.ru

I Данные в таблице уже пожаты каким-то алгоритмомобщего назначения (lzma, zlib, . . .).

Page 6: Komarov borba za-miesto-urfu_2013

План лекции

Page 7: Komarov borba za-miesto-urfu_2013

Часть 1

Сжатие метаданных

Page 8: Komarov borba za-miesto-urfu_2013

Исходные требования

I Алгоритм жмёт лучше, чем алгоритмы сжатия общегоназначения.

I Время записи несжатых данных > время сжатия + времязаписи сжатых данных.

Page 9: Komarov borba za-miesto-urfu_2013

Предварительные преобразования

Двойное дельта-кодированиеПереходим от значений к разностям между соседнимизначениями.

∆0 24756436, 24756486, 24756531, 24756577, 24756584, 24756630, 24756680

∆1 50, 45, 46, 7, 46, 50∆2 -5, 1, -39, 39, 4

Зигзаг-кодированиеБиекция Z→ N (для удобства дальнейших преобразований).

0,−1, 1,−2, 2,−3, 3 . . . 7→ 1, 2, 3, 4, 5, 6, 7 . . .

Page 10: Komarov borba za-miesto-urfu_2013

γ-кодирование Элиаса

Унарное кодирование

1 7→ 1, 5 7→ 00001, 7 7→ 0000001

Бинарное кодирование

1 7→ 1, 5 7→ 101, 7 7→ 111

(почти) γ-кодирование Элиаса

1 7→ 11, 5 7→ 001101, 7 7→ 001111, 16 7→ 0000110000

Page 11: Komarov borba za-miesto-urfu_2013

γ-кодирование Элиаса

Дополнительное требованиеПоследовательные записи с одинаковыми длинами должныкодироваться максимально экономно.

НаблюдениеПервый бит синей части всегда равен единице.разница длин зигзаг почти γ γ

0 1 11 12 5 001101 001013 7 001111 00111-8 16 0000110000 000010000

Page 12: Komarov borba za-miesto-urfu_2013

δ-кодирование Элиаса

НаблюдениеКрасную часть можно закодировать γ-кодированием.

γ l(γ) δ l(δ)

1 1 1 1 1

5 001 01 5 01 1 01 5

7 001 11 5 01 1 11 5

16 00001 0000 9 001 01 0000 9

200 00000001 1001000 15 0001 000 1001000 14

1024 00000000001 0000000000 21 0001 011 0000000000 17

2048 000000000001 00000000000 23 0001 100 00000000000 18

8000 0000000000001 111101000000 25 0001 101 111101000000 19

Page 13: Komarov borba za-miesto-urfu_2013

ω-кодирование Элиаса

Наблюдениеγ-кодирование можно применять рекурсивно.Главное — вовремя остановиться!

Page 14: Komarov borba za-miesto-urfu_2013

Коды Голомба–Райса

Дополнительные условия

I Длина ключа ограничена сверху 4 килобайтами.I Длины ключей разнятся на сотни байт.

Кодирование числа n

I Выбираем параметр M = 2k (например, M = 256).I Записываем q =

⌊nM

⌋+ 1 в унарном коде.

I Далее в k битах записываем r = n mod M в бинарномкоде.

Пример

1000 7→ 000111101000

(q = 3, r = 232)

Page 15: Komarov borba za-miesto-urfu_2013

Коды Голомба–Райса

δ l(δ) GR l(GR)

100 001 11 100100 11 1 01100100 9

200 0001 000 1001000 14 1 11001000 9

300 0001 001 00101100 15 01 00101100 10

500 0001 001 11110100 15 01 11110100 10

1000 0001 010 111101000 16 0001 11101000 12

2000 0001 011 1111010000 17 00000001 11010000 16

Page 16: Komarov borba za-miesto-urfu_2013

Результаты

I Чем больше мы знаем о природе наших данных, темэффективнее мы можем их сжимать.

I Небольшой, но видимый выигрыш места почти бесплатно.

Page 17: Komarov borba za-miesto-urfu_2013

Часть 2

Избавление от тройнойрепликации

Page 18: Komarov borba za-miesto-urfu_2013

Кодирование Рида–Соломона

Идея

I Разобьём каждый чанк на n частей, каждую частьположим на отдельную машину.

I Создадим дополнительные k восстанавливающих частей итоже разложим на отдельные машины.

I Если не более k из n + k частей пропадут, мы сможем потому, что осталось, восстановить исходные n частей.

РезультатЕсли, например, k = n

2 , то мы получаем двукратную экономиюпо сравнению с тройной репликацией. На практике n = 6, k = 3.

Page 19: Komarov borba za-miesto-urfu_2013

Конечные поля

Для простоты будем считать, что каждая часть — это одинбайт.

GF (28)

I Чтобы Рид с Соломоном работали, нужно, чтобы байтыобразовывали поле.

I Конечные поля GF (pn) существуют для любого простого pи для любого n.

I В GF (28) можно очень быстро складывать и умножать.

Page 20: Komarov borba za-miesto-urfu_2013

Матрица Вандермонда

αi — i-й элемент GF (28).1 α1 α2

1 · · · αn−11

1 α2 α22 · · · αn−1

2

1 α3 α23 · · · αn−1

3...

......

1 αn+m α2n+m · · · αn−1

n+m

Любая квадратная подматрица матрицы Вандермондаобратима, поскольку имеет ненулевой определитель.

Vn =∏

1≤i<j≤n

(αj − αi )

Page 21: Komarov borba za-miesto-urfu_2013

Восстановление после пропажи частей

di – исходные байты, ci – востанавливающие байты.

AD = E

1 0 · · · 00 1 · · · 0...

......

0 0 · · · 1an+1,1 an+1,2 · · · an+1,n

an+2,1 an+2,2 · · · an+2,n...

......

an+k,1 an+k,2 · · · an+k,n

×

d1d2...dn

=

d1d2...dnc1c2...ck

НаблюдениеПоскольку после удаления любых k строк из A получившаясяматрица будет обратима, то мы можем восстановить D.

Page 22: Komarov borba za-miesto-urfu_2013

Результаты

I Двукратная экономия места.I Даётся далеко не бесплатно: работа с данными становится

менее удобной и быстрой.

Page 23: Komarov borba za-miesto-urfu_2013

Вопросы?