Резюме
1. Почему вы выбираете cassandra для работы с большими данными?
2. Основные принципы Кассандры
3. Ты голоден? Практика Кассандры
4. Сочетание Cassandra и офлайн-платформы для работы с большими данными
Источник контента:11 июня 2017 г. эксперт по данным Ele.me Чжай Юйонг выступил с речью на тему «Применение Cassandra в Ele.me» на «Совместном форуме Ele.me и Qiniuyun: новейшая практика применения больших данных на основе сценариев». IT big coffee сообщил, что как эксклюзивный видео-партнер, он был выпущен с разрешения организатора и спикера.
Количество прочитанных слов: 1759 | 4 минуты чтения
История Кассандры
Одна из трех основных статей Google называется BigTable, а у Amazon есть хранилище kv под названием Dynamo. Facebook создал Cassandra на основе Google и Amazon. В 2008 году Facebook отказался от Cassandra и передал ее Apache.
Обзор Кассандры
Первоначально разработанная Facebook, Cassandra сочетает в себе функции Google BigTable, ориентированные на столбцы, и функции P2P Amazon Dynamo Distributed Hash (DHT) с высокой производительностью, масштабируемостью, отказоустойчивостью и простотой развертывания.
Ключевые слова схемы Cassandra
1. Протокол связи точка-точка Gossip для обмена информацией о местоположении и состоянии между узлами в кластерах.
2. Partitioner решает, как распределять данные между узлами в кластере, то есть какой узел помещает первую реплику данных.
3. Стратегия реплик решает, на каких узлах размещать другие реплики данных.
4. Snitch определяет информацию о топологии, используемую стратегией репликации для размещения реплик и маршрутизации запросов.
сплетни
Cassandra использует протокол одноранговой связи Gossip для обмена информацией о местоположении и состоянии между узлами в кластере. Процесс сплетен запускается раз в секунду и обменивается информацией с тремя другими узлами, так что все узлы могут быстро узнать о других узлах в кластере.
1. Семенной узел. Его роль состоит в том, чтобы сообщить другим узлам, где находится кластер и как к нему подключиться.
2. Обнаружение ошибок Кассандры. Протокол Cassandra заключается в том, что каждый процесс взаимодействует с тремя другими узлами в секунду, чтобы определить, жив ли он.
3, ремонт неисправности Кассандры. Когда нода зависает, это не означает, что она удалена из кластера, а лишь временно отключена. Когда он снова подтягивается, система Gossip также может определить, что он жив, и присоединиться к кластеру.
Partitioner
Разделитель определяет, как данные распределяются между узлами в кластере и какой узел должен содержать первую копию данных. По сути, Partitioner — это хэш-функция, которая вычисляет токен ключа раздела.
Разделитель делится на три категории. Ключ раздела определяет, на каком узле Cassandra находятся данные, ключ кластеризации используется для сортировки внутри каждого раздела, а первичный ключ определяет уникальность строки данных.
Replica Strategy
Cassandra хранит реплики на нескольких узлах для надежности и отказоустойчивости. Стратегия реплик определяет узлы, на которых размещаются реплики.Количество реплик определяется коэффициентом репликации.Например, значение 3 означает, что каждая строка данных имеет три копии, и все данные хранятся на разных узлах.
В настоящее время доступны две стратегии репликации:
1. SimpleStrategy используется только в центрах обработки данных
CREATEKEYSPACE dw WITH replication = {'class':'SimpleStrategy', 'replication_factor': 3}
2. NetworkTopologyStrategy используется в нескольких сценариях IDC и может указывать, сколько реплик имеет каждый IDC.
CREATEKEYSPACE dw WITH replication = {'class':'NetworkTopologyStrategy', 'DC-SH' : 2,'DC-BG' : 2}
Основные структуры данных Cassandra
Memtable: Суть его в таблице переходов в java.
SSTable: структура, в которой окончательные сохраненные данные попадают на диск.
BloomFilter: эффективно используйте наименьший объем памяти, чтобы определить, существуют ли данные.
CQL-язык
CQL похож на SQL, поддерживает операции DDL create table, drop table и т. д. Он также поддерживает операции DML INSERT, UPDATE, DELETE и т. д., а также запрос данных через выборку.
Кассандра согласованная гарантия
В Cassandra есть три стратегии, гарантирующие, что Cassandra достигнет конечной согласованности.
ПодсказкаHandoff: Если написано три копии, только два ответа допустимы. Но если один узел выходит из строя, Cassandra может записать данные, которые были бы записаны на этот узел, на другой узел. После того, как висячий узел подтягивается, данные записываются обратно, чтобы гарантировать, что три части данных будут успешно записаны одновременно.
ReadRepair: когда инициируется запрос на чтение, можно запустить фоновый поток, чтобы проверить, согласуются ли данные копии трех данных, и исправить их, если они несовместимы.
Anti-EntropyNode Repair: активно сравнивает ключ своего узла с ключами других узлов и устраняет несоответствия.
Почему выбирают Кассандру
Стоимость эксплуатации и обслуживания: развертывание простое, требуется эксплуатация и обслуживание только одного компонента, а затраты на мониторинг невелики.
Затраты на разработку: язык cql, аналогичный языку sql, для разработки удобного и недорогого начала работы; DataStax предлагает мощный Java-клиент; настраиваемая согласованность данных; асинхронный интерфейс.
Применимые сценарии: Cassandra поставляется со стратегией мульти-IDC, что необходимо нашему бизнесу.
Кассандра в практике Ele.me
Производственные приложения (портреты пользователей, постоянные заказы, dt.api), выбор клиентов, эксплуатация, обслуживание и мониторинг, а также настройка производительности.
Производственное приложение — портрет пользователя
Наш профиль пользователя использует 5 узлов, более 260 миллионов пользовательских данных Ele.me, более 100 пользовательских атрибутов, более 50 миллионов обновлений данных каждый день, частые изменения схемы (с полями), 99% задержки чтения можно контролировать в течение 3-5 мс. .
Производственное приложение — история заказа
Мы используем дисковый кластер Sata, который не очень требователен к нашему времени отклика, а среднее время отклика составляет менее 80 мс. Этот кластер имеет около 15 узлов.
Рабочее приложение — dt.api
Dt.api — это платформа интерфейса данных самообслуживания платформы больших данных Ele.me. Пока пользователь пишет SQL на этой платформе, он автоматически генерирует интерфейс HTTP или SOA. В настоящее время существует более 50 сборок CQL API на основе Cassandra.
Эксплуатация и мониторинг
Автоматическое развертывание Ansible: порт Cassandra должен быть привязан к IP-адресу интрасети, что особенно удобно для автоматического развертывания с помощью ansible.
Мониторинг Zabbix: Мониторинг платформы больших данных Ele.me в основном осуществляется Zabbix.
Тюнинг производительности - Оптимизация кластера
Настройки параметров кластера
1. memtable_allocation_type
heap_buffers:on heap nio buffer
offheap_buffers:off heap(direct) nio buffers
offheap_objects:native memory
2. concurrent_write и concurrent_read
3. Стабильное сжатие
4. Параллельный уплотнитель
5. memtable_flush_writers
6. Количество потоков Netty io
Оптимизация настройки JVM
1, выбор размера кучи
2. Отмените блокировку смещения
Оптимизация дизайна схемы
1. Дизайн первичного ключа, чтобы избежать горячих точек
2. Отключите восстановление чтения
3. Выбор стратегии уплотнения
4. Настройки TTL
5. Кэш строк включен
Интеграция офлайн-платформы больших данных и Cassandra
Два инструмента для обработки больших данных Cassandra
HiveIntegrate Собственный протокол Cassandra:
1. Внешняя таблица Hive сопоставляется с таблицей Cassandra.
2. InsertInto HiveTable Select — это просто и быстро
3. Установите ограничение тока/скорости в компьютерных залах.
4. Асинхронная запись
Массовая загрузка HiveIntegrate Cassandra:
1.hive создает базовый SSTable-файл Cassandra и загружает его непосредственно в Cassandra.
2. Подходит для быстрой инициализации данных.
3. Необходимо контролировать размер сгенерированного SSTable, чтобы сократить время, необходимое для сжатия.
Это все для сегодняшнего обмена, спасибо всем!