SlideShare a Scribd company logo
1 of 23
Download to read offline
Борьба за место в MapReduce
Иван Комаров
Яндекс

26 ноября 2013 года
Большие данные

Суммарный объём данных, хранящихся в MapReduce в
Яндексе, — около 15 петабайт.
Тысячи машин.
Несколько терабайт данных на каждой.
Сотни разработчиков, которые ежедневно работают с
этими данными.
Примеры данных
Пользовательские логи
8 терабайт за день.
Поисковые запросы ко всем сервисам Яндекса.
Показанные результаты.
Клики по результатам.

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

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

. . . цена вопроса — шоколадка или немного квоты
на MapReduce.
(из рабочей переписки)
Что делать, если места не хватает?
Закупать дополнительные машины.
Просить разработчиков избавиться от ненужных данных.
Хранить данные более компактно.
Модель данных

Пользователи работают с таблицами.
Каждая таблица — это набор ключей и значений.
вконтакте http://vk.com; https://twitter.com/vkontakte
новости
http://ria.ru; http://lenta.ru, http://vesti.ru
погода
http://pogoda.yandex.ru; http://weather.rambler.ru
Данные в таблице уже пожаты каким-то алгоритмом
общего назначения (lzma, zlib, . . .).
План лекции
Часть 1

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

Алгоритм жмёт лучше, чем алгоритмы сжатия общего
назначения.
Время записи несжатых данных > время сжатия + время
записи сжатых данных.
Предварительные преобразования

Двойное дельта-кодирование
Переходим от значений к разностям между соседними
значениями.
∆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 . . . → 1, 2, 3, 4, 5, 6, 7 . . .
γ-кодирование Элиаса
Унарное кодирование
1 → 1,

5 → 00001,

7 → 0000001

Бинарное кодирование
1 → 1,

5 → 101,

7 → 111

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

1 → 11,

5 → 001101,

7 → 001111,

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

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

Наблюдение
Первый бит синей части
разница длин зигзаг
0
1
2
5
3
7
-8
16

всегда равен
почти γ
11
001101
001111
0000110000

единице.
γ
1
00101
00111
000010000
δ-кодирование Элиаса

Наблюдение
Красную часть можно закодировать γ-кодированием.
γ
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
ω-кодирование Элиаса

Наблюдение
γ-кодирование можно применять рекурсивно.
Главное — вовремя остановиться!
Коды Голомба–Райса
Дополнительные условия
Длина ключа ограничена сверху 4 килобайтами.
Длины ключей разнятся на сотни байт.

Кодирование числа n
Выбираем параметр M = 2k (например, M = 256).
Записываем q =

n
M

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

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

Пример
1000 → 000111101000
(q = 3, r = 232)
Коды Голомба–Райса

δ

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
Результаты

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

Избавление от тройной
репликации
Кодирование Рида–Соломона

Идея
Разобьём каждый чанк на n частей, каждую часть
положим на отдельную машину.
Создадим дополнительные k восстанавливающих частей и
тоже разложим на отдельные машины.
Если не более k из n + k частей пропадут, мы сможем по
тому, что осталось, восстановить исходные n частей.

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

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

GF (28 )
Чтобы Рид с Соломоном работали, нужно, чтобы байты
образовывали поле.
Конечные поля GF (p n ) существуют для любого простого p
и для любого n.
В GF (28 ) можно очень быстро складывать и умножать.
Матрица Вандермонда
αi — i-й элемент GF (28 ).

1
α1
1
α2

1
α3

.
.
.
.
.
.

2
α1
2
α2
2
α3

···
···
···
.
.
.

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

n−1 
α1
n−1
α2 

n−1
α3 



n−1
αn+m

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

Vn =
1≤i<j≤n
Восстановление после пропажи частей
di – исходные байты, ci – востанавливающие байты.
AD = E


1
0
.
.
.






 0

an+1,1

an+2,1

 .
 .
.

0
1
.
.
.

···
···

0
···
an+1,2 · · ·
an+2,2 · · ·
.
.
.

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

 
d1
 d2 

    
.

d1
.

   .
1  d2  dn 
× = 
.
an+1,n   .   c1 
.
 

 c2 

an+2,n 
dn
 
.
. 
. 
.
.
.
0
0
.
.
.

an+k,n



ck

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

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

More Related Content

What's hot

Дракон в мешке: от LLVM к C++ и проблемам неопределенного поведения
Дракон в мешке: от LLVM к C++ и проблемам неопределенного поведенияДракон в мешке: от LLVM к C++ и проблемам неопределенного поведения
Дракон в мешке: от LLVM к C++ и проблемам неопределенного поведенияPlatonov Sergey
 
Семинар 11. Параллельное программирование на MPI (часть 4)
Семинар 11. Параллельное программирование на MPI (часть 4)Семинар 11. Параллельное программирование на MPI (часть 4)
Семинар 11. Параллельное программирование на MPI (часть 4)Mikhail Kurnosov
 
Евгений Крутько — Опыт внедрения технологий параллельных вычислений для повыш...
Евгений Крутько — Опыт внедрения технологий параллельных вычислений для повыш...Евгений Крутько — Опыт внедрения технологий параллельных вычислений для повыш...
Евгений Крутько — Опыт внедрения технологий параллельных вычислений для повыш...Yandex
 
Как впихнуть утро в сосновом лесу в 4 килобайта. Иван Авдеев. UNIGINE Open Ai...
Как впихнуть утро в сосновом лесу в 4 килобайта. Иван Авдеев. UNIGINE Open Ai...Как впихнуть утро в сосновом лесу в 4 килобайта. Иван Авдеев. UNIGINE Open Ai...
Как впихнуть утро в сосновом лесу в 4 килобайта. Иван Авдеев. UNIGINE Open Ai...Unigine Corp.
 
Семинар 5. Многопоточное программирование на OpenMP (часть 5)
Семинар 5. Многопоточное программирование на OpenMP (часть 5)Семинар 5. Многопоточное программирование на OpenMP (часть 5)
Семинар 5. Многопоточное программирование на OpenMP (часть 5)Mikhail Kurnosov
 
Лекция 8: Многопоточное программирование: Intel Threading Building Blocks
Лекция 8: Многопоточное программирование: Intel Threading Building BlocksЛекция 8: Многопоточное программирование: Intel Threading Building Blocks
Лекция 8: Многопоточное программирование: Intel Threading Building BlocksMikhail Kurnosov
 
интегралы
интегралыинтегралы
интегралыtomik1044
 
разработка серверов и серверных приложений лекция №2
разработка серверов и серверных приложений лекция №2разработка серверов и серверных приложений лекция №2
разработка серверов и серверных приложений лекция №2Eugeniy Tyumentcev
 
Семинар 3. Многопоточное программирование на OpenMP (часть 3)
Семинар 3. Многопоточное программирование на OpenMP (часть 3)Семинар 3. Многопоточное программирование на OpenMP (часть 3)
Семинар 3. Многопоточное программирование на OpenMP (часть 3)Mikhail Kurnosov
 
разработка серверов и серверных приложений лекция №3
разработка серверов и серверных приложений лекция №3разработка серверов и серверных приложений лекция №3
разработка серверов и серверных приложений лекция №3Eugeniy Tyumentcev
 
ПВТ - весна 2015 - Лекция 1. Актуальность параллельных вычислений. Анализ пар...
ПВТ - весна 2015 - Лекция 1. Актуальность параллельных вычислений. Анализ пар...ПВТ - весна 2015 - Лекция 1. Актуальность параллельных вычислений. Анализ пар...
ПВТ - весна 2015 - Лекция 1. Актуальность параллельных вычислений. Анализ пар...Alexey Paznikov
 
Виртуальная память
Виртуальная памятьВиртуальная память
Виртуальная памятьEvgeniy Mironov
 
Pervoobraznaya i neopredelennyj_integral
Pervoobraznaya i neopredelennyj_integralPervoobraznaya i neopredelennyj_integral
Pervoobraznaya i neopredelennyj_integraldimonz9
 
Семинар 4. Многопоточное программирование на OpenMP (часть 4)
Семинар 4. Многопоточное программирование на OpenMP (часть 4)Семинар 4. Многопоточное программирование на OpenMP (часть 4)
Семинар 4. Многопоточное программирование на OpenMP (часть 4)Mikhail Kurnosov
 
Семинар 2. Многопоточное программирование на OpenMP (часть 2)
Семинар 2. Многопоточное программирование на OpenMP (часть 2)Семинар 2. Многопоточное программирование на OpenMP (часть 2)
Семинар 2. Многопоточное программирование на OpenMP (часть 2)Mikhail Kurnosov
 
Семинар 12. Параллельное программирование на MPI (часть 5)
Семинар 12. Параллельное программирование на MPI (часть 5)Семинар 12. Параллельное программирование на MPI (часть 5)
Семинар 12. Параллельное программирование на MPI (часть 5)Mikhail Kurnosov
 
Низкоуровневые оптимизации. Андрей Аксенов. Unigine Open Air 2013
Низкоуровневые оптимизации. Андрей Аксенов. Unigine Open Air 2013Низкоуровневые оптимизации. Андрей Аксенов. Unigine Open Air 2013
Низкоуровневые оптимизации. Андрей Аксенов. Unigine Open Air 2013Unigine Corp.
 
Алексей Куканов — Параллелизм в C++: управляйте приложением, а не потоками!
Алексей Куканов — Параллелизм в C++: управляйте приложением, а не потоками!Алексей Куканов — Параллелизм в C++: управляйте приложением, а не потоками!
Алексей Куканов — Параллелизм в C++: управляйте приложением, а не потоками!Yandex
 
Лекция 2. Оптимизация ветвлений и циклов (Branch prediction and loop optimiz...
Лекция 2. Оптимизация ветвлений и циклов (Branch prediction and loop optimiz...Лекция 2. Оптимизация ветвлений и циклов (Branch prediction and loop optimiz...
Лекция 2. Оптимизация ветвлений и циклов (Branch prediction and loop optimiz...Mikhail Kurnosov
 

What's hot (20)

Дракон в мешке: от LLVM к C++ и проблемам неопределенного поведения
Дракон в мешке: от LLVM к C++ и проблемам неопределенного поведенияДракон в мешке: от LLVM к C++ и проблемам неопределенного поведения
Дракон в мешке: от LLVM к C++ и проблемам неопределенного поведения
 
Семинар 11. Параллельное программирование на MPI (часть 4)
Семинар 11. Параллельное программирование на MPI (часть 4)Семинар 11. Параллельное программирование на MPI (часть 4)
Семинар 11. Параллельное программирование на MPI (часть 4)
 
Евгений Крутько — Опыт внедрения технологий параллельных вычислений для повыш...
Евгений Крутько — Опыт внедрения технологий параллельных вычислений для повыш...Евгений Крутько — Опыт внедрения технологий параллельных вычислений для повыш...
Евгений Крутько — Опыт внедрения технологий параллельных вычислений для повыш...
 
Как впихнуть утро в сосновом лесу в 4 килобайта. Иван Авдеев. UNIGINE Open Ai...
Как впихнуть утро в сосновом лесу в 4 килобайта. Иван Авдеев. UNIGINE Open Ai...Как впихнуть утро в сосновом лесу в 4 килобайта. Иван Авдеев. UNIGINE Open Ai...
Как впихнуть утро в сосновом лесу в 4 килобайта. Иван Авдеев. UNIGINE Open Ai...
 
Семинар 5. Многопоточное программирование на OpenMP (часть 5)
Семинар 5. Многопоточное программирование на OpenMP (часть 5)Семинар 5. Многопоточное программирование на OpenMP (часть 5)
Семинар 5. Многопоточное программирование на OpenMP (часть 5)
 
Лекция 8: Многопоточное программирование: Intel Threading Building Blocks
Лекция 8: Многопоточное программирование: Intel Threading Building BlocksЛекция 8: Многопоточное программирование: Intel Threading Building Blocks
Лекция 8: Многопоточное программирование: Intel Threading Building Blocks
 
интегралы
интегралыинтегралы
интегралы
 
разработка серверов и серверных приложений лекция №2
разработка серверов и серверных приложений лекция №2разработка серверов и серверных приложений лекция №2
разработка серверов и серверных приложений лекция №2
 
Семинар 3. Многопоточное программирование на OpenMP (часть 3)
Семинар 3. Многопоточное программирование на OpenMP (часть 3)Семинар 3. Многопоточное программирование на OpenMP (часть 3)
Семинар 3. Многопоточное программирование на OpenMP (часть 3)
 
Conflux: GPGPU .NET
Conflux: GPGPU .NETConflux: GPGPU .NET
Conflux: GPGPU .NET
 
разработка серверов и серверных приложений лекция №3
разработка серверов и серверных приложений лекция №3разработка серверов и серверных приложений лекция №3
разработка серверов и серверных приложений лекция №3
 
ПВТ - весна 2015 - Лекция 1. Актуальность параллельных вычислений. Анализ пар...
ПВТ - весна 2015 - Лекция 1. Актуальность параллельных вычислений. Анализ пар...ПВТ - весна 2015 - Лекция 1. Актуальность параллельных вычислений. Анализ пар...
ПВТ - весна 2015 - Лекция 1. Актуальность параллельных вычислений. Анализ пар...
 
Виртуальная память
Виртуальная памятьВиртуальная память
Виртуальная память
 
Pervoobraznaya i neopredelennyj_integral
Pervoobraznaya i neopredelennyj_integralPervoobraznaya i neopredelennyj_integral
Pervoobraznaya i neopredelennyj_integral
 
Семинар 4. Многопоточное программирование на OpenMP (часть 4)
Семинар 4. Многопоточное программирование на OpenMP (часть 4)Семинар 4. Многопоточное программирование на OpenMP (часть 4)
Семинар 4. Многопоточное программирование на OpenMP (часть 4)
 
Семинар 2. Многопоточное программирование на OpenMP (часть 2)
Семинар 2. Многопоточное программирование на OpenMP (часть 2)Семинар 2. Многопоточное программирование на OpenMP (часть 2)
Семинар 2. Многопоточное программирование на OpenMP (часть 2)
 
Семинар 12. Параллельное программирование на MPI (часть 5)
Семинар 12. Параллельное программирование на MPI (часть 5)Семинар 12. Параллельное программирование на MPI (часть 5)
Семинар 12. Параллельное программирование на MPI (часть 5)
 
Низкоуровневые оптимизации. Андрей Аксенов. Unigine Open Air 2013
Низкоуровневые оптимизации. Андрей Аксенов. Unigine Open Air 2013Низкоуровневые оптимизации. Андрей Аксенов. Unigine Open Air 2013
Низкоуровневые оптимизации. Андрей Аксенов. Unigine Open Air 2013
 
Алексей Куканов — Параллелизм в C++: управляйте приложением, а не потоками!
Алексей Куканов — Параллелизм в C++: управляйте приложением, а не потоками!Алексей Куканов — Параллелизм в C++: управляйте приложением, а не потоками!
Алексей Куканов — Параллелизм в C++: управляйте приложением, а не потоками!
 
Лекция 2. Оптимизация ветвлений и циклов (Branch prediction and loop optimiz...
Лекция 2. Оптимизация ветвлений и циклов (Branch prediction and loop optimiz...Лекция 2. Оптимизация ветвлений и циклов (Branch prediction and loop optimiz...
Лекция 2. Оптимизация ветвлений и циклов (Branch prediction and loop optimiz...
 

Viewers also liked

20131217крайнов
20131217крайнов20131217крайнов
20131217крайновYandex
 
грачева армарчук безопасность в интернете для школьников
грачева армарчук   безопасность в интернете для школьниковграчева армарчук   безопасность в интернете для школьников
грачева армарчук безопасность в интернете для школьниковYandex
 
An Introduction to Red Hat Enterprise Linux OpenStack Platform
An Introduction to Red Hat Enterprise Linux OpenStack PlatformAn Introduction to Red Hat Enterprise Linux OpenStack Platform
An Introduction to Red Hat Enterprise Linux OpenStack PlatformYandex
 
Булат Каримов - Как создать остров для интернет-магазина и успешно пройти мод...
Булат Каримов - Как создать остров для интернет-магазина и успешно пройти мод...Булат Каримов - Как создать остров для интернет-магазина и успешно пройти мод...
Булат Каримов - Как создать остров для интернет-магазина и успешно пройти мод...Yandex
 
Яндекс.Диск: взгляд изнутри — Ксения Аникеева
Яндекс.Диск: взгляд изнутри — Ксения АникееваЯндекс.Диск: взгляд изнутри — Ксения Аникеева
Яндекс.Диск: взгляд изнутри — Ксения АникееваYandex
 
Собираем из кубиков OpenStack нормальный IaaS
Собираем из кубиков OpenStack нормальный IaaSСобираем из кубиков OpenStack нормальный IaaS
Собираем из кубиков OpenStack нормальный IaaSYandex
 
Стабильны ли ваши приложения в облаках?
Стабильны ли ваши приложения в облаках?Стабильны ли ваши приложения в облаках?
Стабильны ли ваши приложения в облаках?Yandex
 
Theo de Raadt: The bane of backwards compatibility
Theo de Raadt: The bane of backwards compatibilityTheo de Raadt: The bane of backwards compatibility
Theo de Raadt: The bane of backwards compatibilityYandex
 

Viewers also liked (8)

20131217крайнов
20131217крайнов20131217крайнов
20131217крайнов
 
грачева армарчук безопасность в интернете для школьников
грачева армарчук   безопасность в интернете для школьниковграчева армарчук   безопасность в интернете для школьников
грачева армарчук безопасность в интернете для школьников
 
An Introduction to Red Hat Enterprise Linux OpenStack Platform
An Introduction to Red Hat Enterprise Linux OpenStack PlatformAn Introduction to Red Hat Enterprise Linux OpenStack Platform
An Introduction to Red Hat Enterprise Linux OpenStack Platform
 
Булат Каримов - Как создать остров для интернет-магазина и успешно пройти мод...
Булат Каримов - Как создать остров для интернет-магазина и успешно пройти мод...Булат Каримов - Как создать остров для интернет-магазина и успешно пройти мод...
Булат Каримов - Как создать остров для интернет-магазина и успешно пройти мод...
 
Яндекс.Диск: взгляд изнутри — Ксения Аникеева
Яндекс.Диск: взгляд изнутри — Ксения АникееваЯндекс.Диск: взгляд изнутри — Ксения Аникеева
Яндекс.Диск: взгляд изнутри — Ксения Аникеева
 
Собираем из кубиков OpenStack нормальный IaaS
Собираем из кубиков OpenStack нормальный IaaSСобираем из кубиков OpenStack нормальный IaaS
Собираем из кубиков OpenStack нормальный IaaS
 
Стабильны ли ваши приложения в облаках?
Стабильны ли ваши приложения в облаках?Стабильны ли ваши приложения в облаках?
Стабильны ли ваши приложения в облаках?
 
Theo de Raadt: The bane of backwards compatibility
Theo de Raadt: The bane of backwards compatibilityTheo de Raadt: The bane of backwards compatibility
Theo de Raadt: The bane of backwards compatibility
 

Similar to Komarov borba za-miesto-urfu_2013

Продолжаем говорить про арифметику
Продолжаем говорить про арифметикуПродолжаем говорить про арифметику
Продолжаем говорить про арифметикуAndrey Akinshin
 
PG Day'14 Russia, PostgreSQL как платформа для разработки приложений, часть 3...
PG Day'14 Russia, PostgreSQL как платформа для разработки приложений, часть 3...PG Day'14 Russia, PostgreSQL как платформа для разработки приложений, часть 3...
PG Day'14 Russia, PostgreSQL как платформа для разработки приложений, часть 3...pgdayrussia
 
Советский суперкомпьютер К-340А и секретные вычисления
Советский суперкомпьютер К-340А и секретные вычисленияСоветский суперкомпьютер К-340А и секретные вычисления
Советский суперкомпьютер К-340А и секретные вычисленияPositive Hack Days
 
2013-01-05 01 Леонид Евдокимов. Web scale. Взорвется все
2013-01-05 01 Леонид Евдокимов. Web scale. Взорвется все2013-01-05 01 Леонид Евдокимов. Web scale. Взорвется все
2013-01-05 01 Леонид Евдокимов. Web scale. Взорвется всеОмские ИТ-субботники
 
Ренессанс графики на клиенте
Ренессанс графики на клиентеРенессанс графики на клиенте
Ренессанс графики на клиентеAnton Korzunov
 
CSEDays. Александр Семенов
CSEDays. Александр СеменовCSEDays. Александр Семенов
CSEDays. Александр СеменовLiloSEA
 
Кулагин И.И., Пазников А.А., Курносов М.Г. Оптимизация информационных обменов...
Кулагин И.И., Пазников А.А., Курносов М.Г. Оптимизация информационных обменов...Кулагин И.И., Пазников А.А., Курносов М.Г. Оптимизация информационных обменов...
Кулагин И.И., Пазников А.А., Курносов М.Г. Оптимизация информационных обменов...Alexey Paznikov
 
Лекция 7: Многопоточное программирование: часть 3 (OpenMP)
Лекция 7: Многопоточное программирование: часть 3 (OpenMP)Лекция 7: Многопоточное программирование: часть 3 (OpenMP)
Лекция 7: Многопоточное программирование: часть 3 (OpenMP)Mikhail Kurnosov
 
Лекция 7: Фибоначчиевы кучи (Fibonacci heaps)
Лекция 7: Фибоначчиевы кучи (Fibonacci heaps)Лекция 7: Фибоначчиевы кучи (Fibonacci heaps)
Лекция 7: Фибоначчиевы кучи (Fibonacci heaps)Mikhail Kurnosov
 
Введение в машинное обучение. Кластеризация (Bitworks Software, Кирилл Жданов)
Введение в машинное обучение. Кластеризация (Bitworks Software, Кирилл Жданов)Введение в машинное обучение. Кластеризация (Bitworks Software, Кирилл Жданов)
Введение в машинное обучение. Кластеризация (Bitworks Software, Кирилл Жданов)Dmitry Kornev
 
Введение в машинное обучение. Кластеризация (Bitworks Software, Кирилл Жданов)
Введение в машинное обучение. Кластеризация (Bitworks Software, Кирилл Жданов)Введение в машинное обучение. Кластеризация (Bitworks Software, Кирилл Жданов)
Введение в машинное обучение. Кластеризация (Bitworks Software, Кирилл Жданов)Bitworks Software
 
Введение в Clojure (Никита Прокопов)
Введение в Clojure (Никита Прокопов)Введение в Clojure (Никита Прокопов)
Введение в Clojure (Никита Прокопов)mainstreamless
 
егэ часть а
егэ часть аегэ часть а
егэ часть аdasha2012
 
Address Sanitizer или как сделать программы на c/с++ надежнее и безопаснее (К...
Address Sanitizer или как сделать программы на c/с++ надежнее и безопаснее (К...Address Sanitizer или как сделать программы на c/с++ надежнее и безопаснее (К...
Address Sanitizer или как сделать программы на c/с++ надежнее и безопаснее (К...Ontico
 
Лекция 11: Методы разработки алгоритмов
Лекция 11: Методы разработки алгоритмовЛекция 11: Методы разработки алгоритмов
Лекция 11: Методы разработки алгоритмовMikhail Kurnosov
 
20130429 dynamic c_c++_program_analysis-alexey_samsonov
20130429 dynamic c_c++_program_analysis-alexey_samsonov20130429 dynamic c_c++_program_analysis-alexey_samsonov
20130429 dynamic c_c++_program_analysis-alexey_samsonovComputer Science Club
 
E. Ostheimer, V. G. Labunets, D. E. Komarov, T. S. Fedorova and V. V. Ganzha ...
E. Ostheimer, V. G. Labunets, D. E. Komarov, T. S. Fedorova and V. V. Ganzha ...E. Ostheimer, V. G. Labunets, D. E. Komarov, T. S. Fedorova and V. V. Ganzha ...
E. Ostheimer, V. G. Labunets, D. E. Komarov, T. S. Fedorova and V. V. Ganzha ...AIST
 
Гарантированное уничтожение информации
Гарантированное уничтожение информацииГарантированное уничтожение информации
Гарантированное уничтожение информацииVitaly Balashov
 

Similar to Komarov borba za-miesto-urfu_2013 (20)

Продолжаем говорить про арифметику
Продолжаем говорить про арифметикуПродолжаем говорить про арифметику
Продолжаем говорить про арифметику
 
PG Day'14 Russia, PostgreSQL как платформа для разработки приложений, часть 3...
PG Day'14 Russia, PostgreSQL как платформа для разработки приложений, часть 3...PG Day'14 Russia, PostgreSQL как платформа для разработки приложений, часть 3...
PG Day'14 Russia, PostgreSQL как платформа для разработки приложений, часть 3...
 
Советский суперкомпьютер К-340А и секретные вычисления
Советский суперкомпьютер К-340А и секретные вычисленияСоветский суперкомпьютер К-340А и секретные вычисления
Советский суперкомпьютер К-340А и секретные вычисления
 
2013-01-05 01 Леонид Евдокимов. Web scale. Взорвется все
2013-01-05 01 Леонид Евдокимов. Web scale. Взорвется все2013-01-05 01 Леонид Евдокимов. Web scale. Взорвется все
2013-01-05 01 Леонид Евдокимов. Web scale. Взорвется все
 
лекция 7
лекция 7лекция 7
лекция 7
 
Ренессанс графики на клиенте
Ренессанс графики на клиентеРенессанс графики на клиенте
Ренессанс графики на клиенте
 
CSEDays. Александр Семенов
CSEDays. Александр СеменовCSEDays. Александр Семенов
CSEDays. Александр Семенов
 
Кулагин И.И., Пазников А.А., Курносов М.Г. Оптимизация информационных обменов...
Кулагин И.И., Пазников А.А., Курносов М.Г. Оптимизация информационных обменов...Кулагин И.И., Пазников А.А., Курносов М.Г. Оптимизация информационных обменов...
Кулагин И.И., Пазников А.А., Курносов М.Г. Оптимизация информационных обменов...
 
Лекция 7: Многопоточное программирование: часть 3 (OpenMP)
Лекция 7: Многопоточное программирование: часть 3 (OpenMP)Лекция 7: Многопоточное программирование: часть 3 (OpenMP)
Лекция 7: Многопоточное программирование: часть 3 (OpenMP)
 
Лекция 7: Фибоначчиевы кучи (Fibonacci heaps)
Лекция 7: Фибоначчиевы кучи (Fibonacci heaps)Лекция 7: Фибоначчиевы кучи (Fibonacci heaps)
Лекция 7: Фибоначчиевы кучи (Fibonacci heaps)
 
9 ср1
9 ср19 ср1
9 ср1
 
Введение в машинное обучение. Кластеризация (Bitworks Software, Кирилл Жданов)
Введение в машинное обучение. Кластеризация (Bitworks Software, Кирилл Жданов)Введение в машинное обучение. Кластеризация (Bitworks Software, Кирилл Жданов)
Введение в машинное обучение. Кластеризация (Bitworks Software, Кирилл Жданов)
 
Введение в машинное обучение. Кластеризация (Bitworks Software, Кирилл Жданов)
Введение в машинное обучение. Кластеризация (Bitworks Software, Кирилл Жданов)Введение в машинное обучение. Кластеризация (Bitworks Software, Кирилл Жданов)
Введение в машинное обучение. Кластеризация (Bitworks Software, Кирилл Жданов)
 
Введение в Clojure (Никита Прокопов)
Введение в Clojure (Никита Прокопов)Введение в Clojure (Никита Прокопов)
Введение в Clojure (Никита Прокопов)
 
егэ часть а
егэ часть аегэ часть а
егэ часть а
 
Address Sanitizer или как сделать программы на c/с++ надежнее и безопаснее (К...
Address Sanitizer или как сделать программы на c/с++ надежнее и безопаснее (К...Address Sanitizer или как сделать программы на c/с++ надежнее и безопаснее (К...
Address Sanitizer или как сделать программы на c/с++ надежнее и безопаснее (К...
 
Лекция 11: Методы разработки алгоритмов
Лекция 11: Методы разработки алгоритмовЛекция 11: Методы разработки алгоритмов
Лекция 11: Методы разработки алгоритмов
 
20130429 dynamic c_c++_program_analysis-alexey_samsonov
20130429 dynamic c_c++_program_analysis-alexey_samsonov20130429 dynamic c_c++_program_analysis-alexey_samsonov
20130429 dynamic c_c++_program_analysis-alexey_samsonov
 
E. Ostheimer, V. G. Labunets, D. E. Komarov, T. S. Fedorova and V. V. Ganzha ...
E. Ostheimer, V. G. Labunets, D. E. Komarov, T. S. Fedorova and V. V. Ganzha ...E. Ostheimer, V. G. Labunets, D. E. Komarov, T. S. Fedorova and V. V. Ganzha ...
E. Ostheimer, V. G. Labunets, D. E. Komarov, T. S. Fedorova and V. V. Ganzha ...
 
Гарантированное уничтожение информации
Гарантированное уничтожение информацииГарантированное уничтожение информации
Гарантированное уничтожение информации
 

More from Yandex

Предсказание оттока игроков из World of Tanks
Предсказание оттока игроков из World of TanksПредсказание оттока игроков из World of Tanks
Предсказание оттока игроков из World of TanksYandex
 
Как принять/организовать работу по поисковой оптимизации сайта, Сергей Царик,...
Как принять/организовать работу по поисковой оптимизации сайта, Сергей Царик,...Как принять/организовать работу по поисковой оптимизации сайта, Сергей Царик,...
Как принять/организовать работу по поисковой оптимизации сайта, Сергей Царик,...Yandex
 
Структурированные данные, Юлия Тихоход, лекция в Школе вебмастеров Яндекса
Структурированные данные, Юлия Тихоход, лекция в Школе вебмастеров ЯндексаСтруктурированные данные, Юлия Тихоход, лекция в Школе вебмастеров Яндекса
Структурированные данные, Юлия Тихоход, лекция в Школе вебмастеров ЯндексаYandex
 
Представление сайта в поиске, Сергей Лысенко, лекция в Школе вебмастеров Яндекса
Представление сайта в поиске, Сергей Лысенко, лекция в Школе вебмастеров ЯндексаПредставление сайта в поиске, Сергей Лысенко, лекция в Школе вебмастеров Яндекса
Представление сайта в поиске, Сергей Лысенко, лекция в Школе вебмастеров ЯндексаYandex
 
Плохие методы продвижения сайта, Екатерины Гладких, лекция в Школе вебмастеро...
Плохие методы продвижения сайта, Екатерины Гладких, лекция в Школе вебмастеро...Плохие методы продвижения сайта, Екатерины Гладких, лекция в Школе вебмастеро...
Плохие методы продвижения сайта, Екатерины Гладких, лекция в Школе вебмастеро...Yandex
 
Основные принципы ранжирования, Сергей Царик и Антон Роменский, лекция в Школ...
Основные принципы ранжирования, Сергей Царик и Антон Роменский, лекция в Школ...Основные принципы ранжирования, Сергей Царик и Антон Роменский, лекция в Школ...
Основные принципы ранжирования, Сергей Царик и Антон Роменский, лекция в Школ...Yandex
 
Основные принципы индексирования сайта, Александр Смирнов, лекция в Школе веб...
Основные принципы индексирования сайта, Александр Смирнов, лекция в Школе веб...Основные принципы индексирования сайта, Александр Смирнов, лекция в Школе веб...
Основные принципы индексирования сайта, Александр Смирнов, лекция в Школе веб...Yandex
 
Мобильное приложение: как и зачем, Александр Лукин, лекция в Школе вебмастеро...
Мобильное приложение: как и зачем, Александр Лукин, лекция в Школе вебмастеро...Мобильное приложение: как и зачем, Александр Лукин, лекция в Школе вебмастеро...
Мобильное приложение: как и зачем, Александр Лукин, лекция в Школе вебмастеро...Yandex
 
Сайты на мобильных устройствах, Олег Ножичкин, лекция в Школе вебмастеров Янд...
Сайты на мобильных устройствах, Олег Ножичкин, лекция в Школе вебмастеров Янд...Сайты на мобильных устройствах, Олег Ножичкин, лекция в Школе вебмастеров Янд...
Сайты на мобильных устройствах, Олег Ножичкин, лекция в Школе вебмастеров Янд...Yandex
 
Качественная аналитика сайта, Юрий Батиевский, лекция в Школе вебмастеров Янд...
Качественная аналитика сайта, Юрий Батиевский, лекция в Школе вебмастеров Янд...Качественная аналитика сайта, Юрий Батиевский, лекция в Школе вебмастеров Янд...
Качественная аналитика сайта, Юрий Батиевский, лекция в Школе вебмастеров Янд...Yandex
 
Что можно и что нужно измерять на сайте, Петр Аброськин, лекция в Школе вебма...
Что можно и что нужно измерять на сайте, Петр Аброськин, лекция в Школе вебма...Что можно и что нужно измерять на сайте, Петр Аброськин, лекция в Школе вебма...
Что можно и что нужно измерять на сайте, Петр Аброськин, лекция в Школе вебма...Yandex
 
Как правильно поставить ТЗ на создание сайта, Алексей Бородкин, лекция в Школ...
Как правильно поставить ТЗ на создание сайта, Алексей Бородкин, лекция в Школ...Как правильно поставить ТЗ на создание сайта, Алексей Бородкин, лекция в Школ...
Как правильно поставить ТЗ на создание сайта, Алексей Бородкин, лекция в Школ...Yandex
 
Как защитить свой сайт, Пётр Волков, лекция в Школе вебмастеров
Как защитить свой сайт, Пётр Волков, лекция в Школе вебмастеровКак защитить свой сайт, Пётр Волков, лекция в Школе вебмастеров
Как защитить свой сайт, Пётр Волков, лекция в Школе вебмастеровYandex
 
Как правильно составить структуру сайта, Дмитрий Сатин, лекция в Школе вебмас...
Как правильно составить структуру сайта, Дмитрий Сатин, лекция в Школе вебмас...Как правильно составить структуру сайта, Дмитрий Сатин, лекция в Школе вебмас...
Как правильно составить структуру сайта, Дмитрий Сатин, лекция в Школе вебмас...Yandex
 
Технические особенности создания сайта, Дмитрий Васильева, лекция в Школе веб...
Технические особенности создания сайта, Дмитрий Васильева, лекция в Школе веб...Технические особенности создания сайта, Дмитрий Васильева, лекция в Школе веб...
Технические особенности создания сайта, Дмитрий Васильева, лекция в Школе веб...Yandex
 
Конструкторы для отдельных элементов сайта, Елена Першина, лекция в Школе веб...
Конструкторы для отдельных элементов сайта, Елена Першина, лекция в Школе веб...Конструкторы для отдельных элементов сайта, Елена Першина, лекция в Школе веб...
Конструкторы для отдельных элементов сайта, Елена Першина, лекция в Школе веб...Yandex
 
Контент для интернет-магазинов, Катерина Ерошина, лекция в Школе вебмастеров ...
Контент для интернет-магазинов, Катерина Ерошина, лекция в Школе вебмастеров ...Контент для интернет-магазинов, Катерина Ерошина, лекция в Школе вебмастеров ...
Контент для интернет-магазинов, Катерина Ерошина, лекция в Школе вебмастеров ...Yandex
 
Как написать хороший текст для сайта, Катерина Ерошина, лекция в Школе вебмас...
Как написать хороший текст для сайта, Катерина Ерошина, лекция в Школе вебмас...Как написать хороший текст для сайта, Катерина Ерошина, лекция в Школе вебмас...
Как написать хороший текст для сайта, Катерина Ерошина, лекция в Школе вебмас...Yandex
 
Usability и дизайн - как не помешать пользователю, Алексей Иванов, лекция в Ш...
Usability и дизайн - как не помешать пользователю, Алексей Иванов, лекция в Ш...Usability и дизайн - как не помешать пользователю, Алексей Иванов, лекция в Ш...
Usability и дизайн - как не помешать пользователю, Алексей Иванов, лекция в Ш...Yandex
 
Cайт. Зачем он и каким должен быть, Алексей Иванов, лекция в Школе вебмастеро...
Cайт. Зачем он и каким должен быть, Алексей Иванов, лекция в Школе вебмастеро...Cайт. Зачем он и каким должен быть, Алексей Иванов, лекция в Школе вебмастеро...
Cайт. Зачем он и каким должен быть, Алексей Иванов, лекция в Школе вебмастеро...Yandex
 

More from Yandex (20)

Предсказание оттока игроков из World of Tanks
Предсказание оттока игроков из World of TanksПредсказание оттока игроков из World of Tanks
Предсказание оттока игроков из World of Tanks
 
Как принять/организовать работу по поисковой оптимизации сайта, Сергей Царик,...
Как принять/организовать работу по поисковой оптимизации сайта, Сергей Царик,...Как принять/организовать работу по поисковой оптимизации сайта, Сергей Царик,...
Как принять/организовать работу по поисковой оптимизации сайта, Сергей Царик,...
 
Структурированные данные, Юлия Тихоход, лекция в Школе вебмастеров Яндекса
Структурированные данные, Юлия Тихоход, лекция в Школе вебмастеров ЯндексаСтруктурированные данные, Юлия Тихоход, лекция в Школе вебмастеров Яндекса
Структурированные данные, Юлия Тихоход, лекция в Школе вебмастеров Яндекса
 
Представление сайта в поиске, Сергей Лысенко, лекция в Школе вебмастеров Яндекса
Представление сайта в поиске, Сергей Лысенко, лекция в Школе вебмастеров ЯндексаПредставление сайта в поиске, Сергей Лысенко, лекция в Школе вебмастеров Яндекса
Представление сайта в поиске, Сергей Лысенко, лекция в Школе вебмастеров Яндекса
 
Плохие методы продвижения сайта, Екатерины Гладких, лекция в Школе вебмастеро...
Плохие методы продвижения сайта, Екатерины Гладких, лекция в Школе вебмастеро...Плохие методы продвижения сайта, Екатерины Гладких, лекция в Школе вебмастеро...
Плохие методы продвижения сайта, Екатерины Гладких, лекция в Школе вебмастеро...
 
Основные принципы ранжирования, Сергей Царик и Антон Роменский, лекция в Школ...
Основные принципы ранжирования, Сергей Царик и Антон Роменский, лекция в Школ...Основные принципы ранжирования, Сергей Царик и Антон Роменский, лекция в Школ...
Основные принципы ранжирования, Сергей Царик и Антон Роменский, лекция в Школ...
 
Основные принципы индексирования сайта, Александр Смирнов, лекция в Школе веб...
Основные принципы индексирования сайта, Александр Смирнов, лекция в Школе веб...Основные принципы индексирования сайта, Александр Смирнов, лекция в Школе веб...
Основные принципы индексирования сайта, Александр Смирнов, лекция в Школе веб...
 
Мобильное приложение: как и зачем, Александр Лукин, лекция в Школе вебмастеро...
Мобильное приложение: как и зачем, Александр Лукин, лекция в Школе вебмастеро...Мобильное приложение: как и зачем, Александр Лукин, лекция в Школе вебмастеро...
Мобильное приложение: как и зачем, Александр Лукин, лекция в Школе вебмастеро...
 
Сайты на мобильных устройствах, Олег Ножичкин, лекция в Школе вебмастеров Янд...
Сайты на мобильных устройствах, Олег Ножичкин, лекция в Школе вебмастеров Янд...Сайты на мобильных устройствах, Олег Ножичкин, лекция в Школе вебмастеров Янд...
Сайты на мобильных устройствах, Олег Ножичкин, лекция в Школе вебмастеров Янд...
 
Качественная аналитика сайта, Юрий Батиевский, лекция в Школе вебмастеров Янд...
Качественная аналитика сайта, Юрий Батиевский, лекция в Школе вебмастеров Янд...Качественная аналитика сайта, Юрий Батиевский, лекция в Школе вебмастеров Янд...
Качественная аналитика сайта, Юрий Батиевский, лекция в Школе вебмастеров Янд...
 
Что можно и что нужно измерять на сайте, Петр Аброськин, лекция в Школе вебма...
Что можно и что нужно измерять на сайте, Петр Аброськин, лекция в Школе вебма...Что можно и что нужно измерять на сайте, Петр Аброськин, лекция в Школе вебма...
Что можно и что нужно измерять на сайте, Петр Аброськин, лекция в Школе вебма...
 
Как правильно поставить ТЗ на создание сайта, Алексей Бородкин, лекция в Школ...
Как правильно поставить ТЗ на создание сайта, Алексей Бородкин, лекция в Школ...Как правильно поставить ТЗ на создание сайта, Алексей Бородкин, лекция в Школ...
Как правильно поставить ТЗ на создание сайта, Алексей Бородкин, лекция в Школ...
 
Как защитить свой сайт, Пётр Волков, лекция в Школе вебмастеров
Как защитить свой сайт, Пётр Волков, лекция в Школе вебмастеровКак защитить свой сайт, Пётр Волков, лекция в Школе вебмастеров
Как защитить свой сайт, Пётр Волков, лекция в Школе вебмастеров
 
Как правильно составить структуру сайта, Дмитрий Сатин, лекция в Школе вебмас...
Как правильно составить структуру сайта, Дмитрий Сатин, лекция в Школе вебмас...Как правильно составить структуру сайта, Дмитрий Сатин, лекция в Школе вебмас...
Как правильно составить структуру сайта, Дмитрий Сатин, лекция в Школе вебмас...
 
Технические особенности создания сайта, Дмитрий Васильева, лекция в Школе веб...
Технические особенности создания сайта, Дмитрий Васильева, лекция в Школе веб...Технические особенности создания сайта, Дмитрий Васильева, лекция в Школе веб...
Технические особенности создания сайта, Дмитрий Васильева, лекция в Школе веб...
 
Конструкторы для отдельных элементов сайта, Елена Першина, лекция в Школе веб...
Конструкторы для отдельных элементов сайта, Елена Першина, лекция в Школе веб...Конструкторы для отдельных элементов сайта, Елена Першина, лекция в Школе веб...
Конструкторы для отдельных элементов сайта, Елена Першина, лекция в Школе веб...
 
Контент для интернет-магазинов, Катерина Ерошина, лекция в Школе вебмастеров ...
Контент для интернет-магазинов, Катерина Ерошина, лекция в Школе вебмастеров ...Контент для интернет-магазинов, Катерина Ерошина, лекция в Школе вебмастеров ...
Контент для интернет-магазинов, Катерина Ерошина, лекция в Школе вебмастеров ...
 
Как написать хороший текст для сайта, Катерина Ерошина, лекция в Школе вебмас...
Как написать хороший текст для сайта, Катерина Ерошина, лекция в Школе вебмас...Как написать хороший текст для сайта, Катерина Ерошина, лекция в Школе вебмас...
Как написать хороший текст для сайта, Катерина Ерошина, лекция в Школе вебмас...
 
Usability и дизайн - как не помешать пользователю, Алексей Иванов, лекция в Ш...
Usability и дизайн - как не помешать пользователю, Алексей Иванов, лекция в Ш...Usability и дизайн - как не помешать пользователю, Алексей Иванов, лекция в Ш...
Usability и дизайн - как не помешать пользователю, Алексей Иванов, лекция в Ш...
 
Cайт. Зачем он и каким должен быть, Алексей Иванов, лекция в Школе вебмастеро...
Cайт. Зачем он и каким должен быть, Алексей Иванов, лекция в Школе вебмастеро...Cайт. Зачем он и каким должен быть, Алексей Иванов, лекция в Школе вебмастеро...
Cайт. Зачем он и каким должен быть, Алексей Иванов, лекция в Школе вебмастеро...
 

Komarov borba za-miesto-urfu_2013

  • 1. Борьба за место в MapReduce Иван Комаров Яндекс 26 ноября 2013 года
  • 2. Большие данные Суммарный объём данных, хранящихся в MapReduce в Яндексе, — около 15 петабайт. Тысячи машин. Несколько терабайт данных на каждой. Сотни разработчиков, которые ежедневно работают с этими данными.
  • 3. Примеры данных Пользовательские логи 8 терабайт за день. Поисковые запросы ко всем сервисам Яндекса. Показанные результаты. Клики по результатам. Twitter Firehose 1,2 терабайт за день — все твиты в мире с дополнительной метаинформацией. Логи поискового паука 2 терабайта за день — информация о том, какие страницы были скачаны (без содержимого самих страниц).
  • 4. Нужно больше золота . . . цена вопроса — шоколадка или немного квоты на MapReduce. (из рабочей переписки) Что делать, если места не хватает? Закупать дополнительные машины. Просить разработчиков избавиться от ненужных данных. Хранить данные более компактно.
  • 5. Модель данных Пользователи работают с таблицами. Каждая таблица — это набор ключей и значений. вконтакте http://vk.com; https://twitter.com/vkontakte новости http://ria.ru; http://lenta.ru, http://vesti.ru погода http://pogoda.yandex.ru; http://weather.rambler.ru Данные в таблице уже пожаты каким-то алгоритмом общего назначения (lzma, zlib, . . .).
  • 8. Исходные требования Алгоритм жмёт лучше, чем алгоритмы сжатия общего назначения. Время записи несжатых данных > время сжатия + время записи сжатых данных.
  • 9. Предварительные преобразования Двойное дельта-кодирование Переходим от значений к разностям между соседними значениями. ∆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 . . . → 1, 2, 3, 4, 5, 6, 7 . . .
  • 10. γ-кодирование Элиаса Унарное кодирование 1 → 1, 5 → 00001, 7 → 0000001 Бинарное кодирование 1 → 1, 5 → 101, 7 → 111 (почти) γ-кодирование Элиаса 1 → 11, 5 → 001101, 7 → 001111, 16 → 0000110000
  • 11. γ-кодирование Элиаса Дополнительное требование Последовательные записи с одинаковыми длинами должны кодироваться максимально экономно. Наблюдение Первый бит синей части разница длин зигзаг 0 1 2 5 3 7 -8 16 всегда равен почти γ 11 001101 001111 0000110000 единице. γ 1 00101 00111 000010000
  • 12. δ-кодирование Элиаса Наблюдение Красную часть можно закодировать γ-кодированием. γ 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
  • 13. ω-кодирование Элиаса Наблюдение γ-кодирование можно применять рекурсивно. Главное — вовремя остановиться!
  • 14. Коды Голомба–Райса Дополнительные условия Длина ключа ограничена сверху 4 килобайтами. Длины ключей разнятся на сотни байт. Кодирование числа n Выбираем параметр M = 2k (например, M = 256). Записываем q = n M + 1 в унарном коде. Далее в k битах записываем r = n mod M в бинарном коде. Пример 1000 → 000111101000 (q = 3, r = 232)
  • 15. Коды Голомба–Райса δ 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
  • 16. Результаты Чем больше мы знаем о природе наших данных, тем эффективнее мы можем их сжимать. Небольшой, но видимый выигрыш места почти бесплатно.
  • 17. Часть 2 Избавление от тройной репликации
  • 18. Кодирование Рида–Соломона Идея Разобьём каждый чанк на n частей, каждую часть положим на отдельную машину. Создадим дополнительные k восстанавливающих частей и тоже разложим на отдельные машины. Если не более k из n + k частей пропадут, мы сможем по тому, что осталось, восстановить исходные n частей. Результат Если, например, k = n , то мы получаем двукратную экономию 2 по сравнению с тройной репликацией. На практике n = 6, k = 3.
  • 19. Конечные поля Для простоты будем считать, что каждая часть — это один байт. GF (28 ) Чтобы Рид с Соломоном работали, нужно, чтобы байты образовывали поле. Конечные поля GF (p n ) существуют для любого простого p и для любого n. В GF (28 ) можно очень быстро складывать и умножать.
  • 20. Матрица Вандермонда αi — i-й элемент GF (28 ).  1 α1 1 α2  1 α3  . . . . . . 2 α1 2 α2 2 α3 ··· ··· ··· . . . 2 1 αn+m αn+m · · · n−1  α1 n−1 α2   n−1 α3     n−1 αn+m Любая квадратная подматрица матрицы Вандермонда обратима, поскольку имеет ненулевой определитель. (αj − αi ) Vn = 1≤i<j≤n
  • 21. Восстановление после пропажи частей di – исходные байты, ci – востанавливающие байты. AD = E  1 0 . . .       0  an+1,1  an+2,1   .  . . 0 1 . . . ··· ··· 0 ··· an+1,2 · · · an+2,2 · · · . . . an+k,1 an+k,2 · · ·   d1  d2        .  d1 .     . 1  d2  dn  × =  . an+1,n   .   c1  .     c2   an+2,n  dn   . .  .  . . . 0 0 . . . an+k,n  ck Наблюдение Поскольку после удаления любых k строк из A получившаяся матрица будет обратима, то мы можем восстановить D.
  • 22. Результаты Двукратная экономия места. Даётся далеко не бесплатно: работа с данными становится менее удобной и быстрой.