Технологии хранения и обработки больших объёмов...

47
технологии хранения и обработки больших объёмов данных Amazon Dynamo. Google Spanner Дмитрий Барашев 29 апреля 2016 Computer Science Center

Upload: cs-center

Post on 13-Apr-2017

364 views

Category:

Documents


1 download

TRANSCRIPT

Page 1: Технологии хранения и обработки больших объёмов данных, весна 2016: Amazon Dynamo и Google Spanner. Всадники армагеддона

технологии хранения и обработкибольших объёмов данныхAmazon Dynamo. Google Spanner

Дмитрий Барашев29 апреля 2016

Computer Science Center

Page 2: Технологии хранения и обработки больших объёмов данных, весна 2016: Amazon Dynamo и Google Spanner. Всадники армагеддона

Этот материал распространяется под лицензией

Creative Commons”Attribution - Share Alike” 3.0

http://creativecommons.org/licenses/by-sa/3.0/us/deed.ru

сверстано в онлайн LATEX редакторе

P

a

peeriapapeeria.com

Page 3: Технологии хранения и обработки больших объёмов данных, весна 2016: Amazon Dynamo и Google Spanner. Всадники армагеддона

сегодня в программе

Amazon Dynamo

Google Spanner: глобально распределённаяБД

3/40

Page 4: Технологии хранения и обработки больших объёмов данных, весна 2016: Amazon Dynamo и Google Spanner. Всадники армагеддона

amazon dynamo

• Хранилище с моделью ”ключ-значение”• Распределённое, высокодоступное, с низкимвременем отклика

• Децентрализовнное, без единой точки отказа• Согласованное в конечном счёте• Разработка 2004-2010 годов, сейчас замененаDynamo DB

4/40

Page 5: Технологии хранения и обработки больших объёмов данных, весна 2016: Amazon Dynamo и Google Spanner. Всадники армагеддона

ключевые аспекты

• Модель использования и гарантии• Разбиение данных• Модель репликации• Модель согласованности

5/40

Page 6: Технологии хранения и обработки больших объёмов данных, весна 2016: Amazon Dynamo и Google Spanner. Всадники армагеддона

модель использования

• Клиенты пишут и читают объекты по строковомуключу

• Значение с точки зрения хранилищабессмысленное

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

6/40

Page 7: Технологии хранения и обработки больших объёмов данных, весна 2016: Amazon Dynamo и Google Spanner. Всадники армагеддона

разбиение данных

• Консистентное хеширование• пространство хеш-значений функции hзакольцовано

• каждому узлу хранения i соответствует точкана кольце Ri

• чтобы найти узел для хранения ключа k, надовычислить h(k) и найти ближайшую Ri ≥ h(k)

• Узел i обслуживает сегмент от Ri−1 до Ri• Что если узел упадёт?

7/40

Page 8: Технологии хранения и обработки больших объёмов данных, весна 2016: Amazon Dynamo и Google Spanner. Всадники армагеддона

репликация значений

• Для надежности значения записываются на Nузлов в порядке возрастания сегментов

• Для каждого ключа k известен предпочитаемыйсписок¹ узлов, хранящих его значение

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

¹preference list

8/40

Page 9: Технологии хранения и обработки больших объёмов данных, весна 2016: Amazon Dynamo и Google Spanner. Всадники армагеддона

чтение и запись

• Клиент может выбрать количество узлов записи Wи узлов чтения R в зависимости от требований

• Произвольный узел из предпочитаемого спискастановится координатором чтения/записи

• Запись удалась, если её подтвердили W узлов• Чтение удалось, если пришёл ответ от R узлов• Координатор и клиент занимаются сведениемнесогласованных значений во время чтения

9/40

Page 10: Технологии хранения и обработки больших объёмов данных, весна 2016: Amazon Dynamo и Google Spanner. Всадники армагеддона

модель согласованности

• Dynamo устойчиво к падениям и распаду сети• Могут появиться разные версии значений• Кто-то должен свести разные версии к единой

10/40

Page 11: Технологии хранения и обработки больших объёмов данных, весна 2016: Amazon Dynamo и Google Spanner. Всадники армагеддона

векторные часы

• Каждый узел хранит с каждым ключом-значениемего векторные часы

• Векторные часы – набор пар (номер узла, версия)• Когда узел производит запись, он увеличиваетверсию в своих часах

• Клиент передаёт значения часов при записи икоординатор собирает их при чтении

11/40

Page 12: Технологии хранения и обработки больших объёмов данных, весна 2016: Amazon Dynamo и Google Spanner. Всадники армагеддона

сравнение часов

• Если в часах Ci каждая компонента ≥соответствующей компоненте часов Cj то естьчастичный порядок Ci ≥ Cj

• Наличие частичного порядка говорит опричинно-следственной связи: узел i в курсе обистории значений узла j и, возможно,знает оновой истории

• При чтении. если Ci ≥ Cj то Cj можно игнорировать• Если частичного порядка нет, то согласованиемзанимается клиент

• При записи клиент создаёт новое значение часов,которое считается согласованным значением

12/40

Page 13: Технологии хранения и обработки больших объёмов данных, весна 2016: Amazon Dynamo и Google Spanner. Всадники армагеддона

возможная история часов

13/40

Page 14: Технологии хранения и обработки больших объёмов данных, весна 2016: Amazon Dynamo и Google Spanner. Всадники армагеддона

добавление и удаление узлов

• Вре́менная недоступность игнорируется• Если какой-то узел пропустил запись, дляподдержания W может временно использоватьсяследующий узел в кольце

• Постоянное удаление и добавление узлов делаетадминистратор

• Узлы выбирают себе сегменты и рассылаютинформацию об этом соседям

• Информация хаотично передаётся и в концеконцов распространяется по всему кластеру

14/40

Page 15: Технологии хранения и обработки больших объёмов данных, весна 2016: Amazon Dynamo и Google Spanner. Всадники армагеддона

меньше катаклизмов

• Добавление узла в произвольном месте приводитк перераспределению ключей

• Часто хочется просто повысить доступностьсегмента

• Более сложная схема назначения сегментов• Пространство делится на одинаковыепартиции

• Список предпочтения отсчитывается не отh(k), а от конца партиции, в которую попалh(k)

15/40

Page 16: Технологии хранения и обработки больших объёмов данных, весна 2016: Amazon Dynamo и Google Spanner. Всадники армагеддона

сегодня в программе

Amazon Dynamo

Google Spanner: глобально распределённаяБД

16/40

Page 17: Технологии хранения и обработки больших объёмов данных, весна 2016: Amazon Dynamo и Google Spanner. Всадники армагеддона

google spanner

• глобально распределённая• версионированная• транзакционная• строго согласованная• автонастраивающаяся

17/40

Page 18: Технологии хранения и обработки больших объёмов данных, весна 2016: Amazon Dynamo и Google Spanner. Всадники армагеддона

предпосылки

• Bigtable шустрая, но не годится для сложныхприложений

• Megastore – надстройка над Bigtable,добавляющая транзакции и SQL-подобный языкзапросов – используется многими приложениями,несмотря на невысокую производительность

• Хочется собрать всё лучшее из миратрадиционных и нетрадиционных СУБД• транзакции + высокая пропускнаяспособность + низкое время отклика +масштабируемость

18/40

Page 19: Технологии хранения и обработки больших объёмов данных, весна 2016: Amazon Dynamo и Google Spanner. Всадники армагеддона

используемые технологии

• Распределённая файловая система: Colossus• Алгоритмы консенсуса: Paxos и двухфазноеподтверждение²

• Изоляция транзакций: двухфазные блокировки³ имоментальные срезы⁴

• GPS сигналы и атомные часы

²two-phase commit³two-phase locking⁴snapshot isolation

19/40

Page 20: Технологии хранения и обработки больших объёмов данных, весна 2016: Amazon Dynamo и Google Spanner. Всадники армагеддона

используемые технологии

• Распределённая файловая система: Colossus• Алгоритмы консенсуса: Paxos и двухфазноеподтверждение²

• Изоляция транзакций: двухфазные блокировки³ имоментальные срезы⁴

• GPS сигналы и атомные часы

²two-phase commit³two-phase locking⁴snapshot isolation

19/40

Page 21: Технологии хранения и обработки больших объёмов данных, весна 2016: Amazon Dynamo и Google Spanner. Всадники армагеддона

spanner с точки зрения клиента

• Модель данных: (ключ, временна́я метка)⇒значение

• Компоненты ключа: название базы данных,название таблицы, идентификатор строки,название столбца

• Корзина⁵ – единица размещения данных⁶

⁵directory, bucket⁶data placement

20/40

Page 22: Технологии хранения и обработки больших объёмов данных, весна 2016: Amazon Dynamo и Google Spanner. Всадники армагеддона

размещение данных в bigtable

• В Bigtable единицейразмещения являетсятаблет – непрерывноеподмножество ключей

• Таблет обслуживаетсяодним таблетсервером

• Таблет живет в одномкластере ( датацентре)

21/40

Page 23: Технологии хранения и обработки больших объёмов данных, весна 2016: Amazon Dynamo и Google Spanner. Всадники армагеддона

размещение данных в spanner

• В одной корзинемогут находитьсястроки разныхтаблиц

22/40

Page 24: Технологии хранения и обработки больших объёмов данных, весна 2016: Amazon Dynamo и Google Spanner. Всадники армагеддона

размещение данных в spanner

• Приложение определяет параметры размещенияи репликации корзины• например: одна корзина на пользователя,корзина реплицируется в трех зонах в Европеи двух в Северной Америке

• Реплики корзин на одном сервере объединяютсяв таблет

23/40

Page 25: Технологии хранения и обработки больших объёмов данных, весна 2016: Amazon Dynamo и Google Spanner. Всадники армагеддона

программный стек спан-сервера

24/40

Page 26: Технологии хранения и обработки больших объёмов данных, весна 2016: Amazon Dynamo и Google Spanner. Всадники армагеддона

paxos

• Записи производятся в реплики-лидеры• Лидер инициирует очередной раунд Paxos, иутвержденное значение записывается в структурыхранения (B-дерево) и опережающий журнал

• Лидер в Paxos долгоживущий: он продляет своёлидерство во время успешной записи иперевыборами раз в 10 секунд

• Множество реплик таблета называетсяPaxos-группой

25/40

Page 27: Технологии хранения и обработки больших объёмов данных, весна 2016: Amazon Dynamo и Google Spanner. Всадники армагеддона

таблица блокировок

• Лидер поддерживает таблицу блокировокдвухфазного протокола

• Блокировки используются для операций записи иread-commited чтения

• Транзакциям, использующим одну Paxos-группудостаточно таблицы блокировок дляподтверждения

26/40

Page 28: Технологии хранения и обработки больших объёмов данных, весна 2016: Amazon Dynamo и Google Spanner. Всадники армагеддона

двухфазное подтверждение

• Используется если транзакция затрагиваетнесколько Paxos групп

• Координатор выбирается клиентом• Главная сложность – гарантировать внешнююсогласованность транзакций

27/40

Page 29: Технологии хранения и обработки больших объёмов данных, весна 2016: Amazon Dynamo и Google Spanner. Всадники армагеддона

внешняя согласованность

• Если транзакция T1 подтверждается раньше, чемтранзакция T2 начинается, то временна́я меткаподтверждения T1 меньше, чем временна́я меткаподтверждения T2

28/40

Page 30: Технологии хранения и обработки больших объёмов данных, весна 2016: Amazon Dynamo и Google Spanner. Всадники армагеддона

внешняя согласованность: зачем

• Если хочется читать моментальные срезы БД изпрошлого

• вы: окей гугл, дай мне состояние, актуальноена момент времени 12 апреля 1961 года 09:07

• гугл: в этот момент кто-то сказал«Поехали!»

• вы: а секундой позже?• гугл: в этот момент кто-то сказал «Ключна зажигание!»

• вы: ой, а точно не наоборот?

29/40

Page 31: Технологии хранения и обработки больших объёмов данных, весна 2016: Amazon Dynamo и Google Spanner. Всадники армагеддона

внешняя согласованность: зачем

• Если хочется читать моментальные срезы БД изпрошлого• вы: окей гугл, дай мне состояние, актуальноена момент времени 12 апреля 1961 года 09:07

• гугл: в этот момент кто-то сказал«Поехали!»

• вы: а секундой позже?• гугл: в этот момент кто-то сказал «Ключна зажигание!»

• вы: ой, а точно не наоборот?

29/40

Page 32: Технологии хранения и обработки больших объёмов данных, весна 2016: Amazon Dynamo и Google Spanner. Всадники армагеддона

внешняя согласованность: зачем

• Если хочется читать моментальные срезы БД изпрошлого• вы: окей гугл, дай мне состояние, актуальноена момент времени 12 апреля 1961 года 09:07

• гугл: в этот момент кто-то сказал«Поехали!»

• вы: а секундой позже?

• гугл: в этот момент кто-то сказал «Ключна зажигание!»

• вы: ой, а точно не наоборот?

29/40

Page 33: Технологии хранения и обработки больших объёмов данных, весна 2016: Amazon Dynamo и Google Spanner. Всадники армагеддона

внешняя согласованность: зачем

• Если хочется читать моментальные срезы БД изпрошлого• вы: окей гугл, дай мне состояние, актуальноена момент времени 12 апреля 1961 года 09:07

• гугл: в этот момент кто-то сказал«Поехали!»

• вы: а секундой позже?• гугл: в этот момент кто-то сказал «Ключна зажигание!»

• вы: ой, а точно не наоборот?

29/40

Page 34: Технологии хранения и обработки больших объёмов данных, весна 2016: Amazon Dynamo и Google Spanner. Всадники армагеддона

внешняя согласованность: зачем

• Если хочется читать моментальные срезы БД изпрошлого• вы: окей гугл, дай мне состояние, актуальноена момент времени 12 апреля 1961 года 09:07

• гугл: в этот момент кто-то сказал«Поехали!»

• вы: а секундой позже?• гугл: в этот момент кто-то сказал «Ключна зажигание!»

• вы: ой, а точно не наоборот?

29/40

Page 35: Технологии хранения и обработки больших объёмов данных, весна 2016: Amazon Dynamo и Google Spanner. Всадники армагеддона

внешняя согласованность: в чем проблема?

• В нераспределённой системе проблемы нет• В распределённой системе нет единых точныхчасов

30/40

Page 36: Технологии хранения и обработки больших объёмов данных, весна 2016: Amazon Dynamo и Google Spanner. Всадники армагеддона

интервал неопределённости

• Если у вас есть часы с несколькимициферблатами, вы не сможете абсолютно точноопределить момент времени

• Одна стрелка дергается в момент t0, другая в t0 + ϵ

• Интервал ϵ – интервал неопределённости⁷• ϵ может быть довольно большим, может бытьмаленьким, но он есть

⁷time uncertainty

31/40

Page 37: Технологии хранения и обработки больших объёмов данных, весна 2016: Amazon Dynamo и Google Spanner. Всадники армагеддона

truetime

• Момент времени в Spanner – интервал [earliest,latest]

• TrueTime значения сообщаются специальнымсервисом TT

• Гарантируется, что

tt.earliest ≤ tabs(enow) ≤ tt.latest

где значение tt получено вызовом enow сервиса TTв абсолютный момент времени tabs(enow)

32/40

Page 38: Технологии хранения и обработки больших объёмов данных, весна 2016: Amazon Dynamo и Google Spanner. Всадники армагеддона

реализация сервиса truetime

• В каждом Spanner-датацентре есть TrueTimeмастера с GPS-приемниками(большинство.мастеров) и атомными часами(мастера Армагеддона)• на каждом GPS спутнике тоже есть атомныечасы, несколько штук

• На машинах в датацентре крутятся демоны,общающиеся с мастерами и вычисляющиеинтервалы

33/40

Page 39: Технологии хранения и обработки больших объёмов данных, весна 2016: Amazon Dynamo и Google Spanner. Всадники армагеддона

реализация сервиса truetime

• Демоны общаются с несколькими мастерами,вычисляют выбросы и обновляют локальноевремя, применяя алгоритм Марзулло

• В промежутках между общениями с мастерамиинтервал неопределённости постояннопонемного растёт

• В реальности интервал ϵ меняется от 1мс до 7мс

34/40

Page 40: Технологии хранения и обработки больших объёмов данных, весна 2016: Amazon Dynamo и Google Spanner. Всадники армагеддона

использование truetime в 2pc

• В кросс-групповой транзакции Ti координатордолжен назначить метку подтверждениятранзакции si

• Каждый участник 2PC• получает блокировки на запись• выбирает метку подготовки (больше чемметка любой ранее подтверждённойтранзакции)

• сообщает координатору о готовности ивозвращает метку

35/40

Page 41: Технологии хранения и обработки больших объёмов данных, весна 2016: Amazon Dynamo и Google Spanner. Всадники армагеддона

использование truetime в 2pc

• Координатор выбирает время подтверждения siбольшее каждой метки подготовки и большее чемTT.now().latest

• Надо убедиться, что никто не увидитподтверждённые данные до моментаsj : sj.earliest > Si

• Координатор тупо ждёт этого момента

36/40

Page 42: Технологии хранения и обработки больших объёмов данных, весна 2016: Amazon Dynamo и Google Spanner. Всадники армагеддона

использование truetime в 2pc

• Координатор выбирает время подтверждения siбольшее каждой метки подготовки и большее чемTT.now().latest

• Надо убедиться, что никто не увидитподтверждённые данные до моментаsj : sj.earliest > Si

• Координатор тупо ждёт этого момента

36/40

Page 43: Технологии хранения и обработки больших объёмов данных, весна 2016: Amazon Dynamo и Google Spanner. Всадники армагеддона

как вычислить завтрашнюю дату?

class Timer {public static long getTomorrowDate() {

Thread.currentThread().sleep(86400); // 60 * 60 * 24return System.currentTimeMillis();

}}

37/40

Page 44: Технологии хранения и обработки больших объёмов данных, весна 2016: Amazon Dynamo и Google Spanner. Всадники армагеддона

использование truetime при чтении

• Если tlasti - время последней записи вPaxos группе i

• При чтении из одной Paxos группы sread = tlasti

• При чтении из нескольких групп можно выбиратьsread = minitlasti

• А можно выбрать now.latest• . . . и немного подождать

38/40

Page 45: Технологии хранения и обработки больших объёмов данных, весна 2016: Amazon Dynamo и Google Spanner. Всадники армагеддона

использование truetime при чтении

• Если tlasti - время последней записи вPaxos группе i

• При чтении из одной Paxos группы sread = tlasti

• При чтении из нескольких групп можно выбиратьsread = minitlasti

• А можно выбрать now.latest• . . . и немного подождать

38/40

Page 46: Технологии хранения и обработки больших объёмов данных, весна 2016: Amazon Dynamo и Google Spanner. Всадники армагеддона

использование spanner

• Первым клиентом стал F1 – масштабируемаярспределённая SQL СУБД

• F1 заменил MySQL в хранении финансовойинформации AdWords

39/40

Page 47: Технологии хранения и обработки больших объёмов данных, весна 2016: Amazon Dynamo и Google Spanner. Всадники армагеддона

использование spanner

Космос, атомные часы, всадники армагеддона,древнегреческие парламентарии – всё это длятого чтобы показать вам рекламу уже купленныхботинок

40/40