Новый Бой Между Двумя Якодзунами Или Сциллой Против Аэроспайка (+ Hbase Для Массовки)

Последний раз обсуждаем бой тяжеловесов Кассандра против HBase вызвало очень бурную дискуссию, в ходе которой много раз упоминалась Сцилла – что расположен как более быстрый аналог Кассандры (далее CS).

Еще меня заинтересовал очень интересный Aerospike (далее AS), который в своих тестах предсказуемо побеждает CS с разгромным счетом.



Новый бой между двумя якодзунами или Сциллой против Аэроспайка (+ HBase для массовки)

По удивительному совпадению, Scylla (далее SC) также легко обыгрывает CS, которым гордится отчеты прямо на вашей домашней странице:

Новый бой между двумя якодзунами или Сциллой против Аэроспайка (+ HBase для массовки)

Вот и естественно возникает вопрос, кто кого возьмет, кита или слона? В моем тест оптимизированная версия HBase (далее HB) работает с CS на равных, поэтому она не будет здесь претендентом на победу, а лишь постольку, поскольку вся наша обработка построена на HB и мы хотим понять ее возможности в сравнение с лидерами.

Понятно, что бесплатность HB и CS — это огромный плюс, но с другой стороны, если для достижения той же производительности нужно в Х раз больше оборудования, возможно, выгоднее платить за ПО, чем выделять пол в дата-центр для дорогих грелок.

Особенно учитывая, что если говорить о производительности, то поскольку HDD в принципе не способны обеспечить хотя бы приемлемую скорость произвольного чтения (см.

Почему жесткий диск и быстрое чтение с произвольным доступом несовместимы "), что в свою очередь означает покупку SSD, что в необходимых для настоящих BigData объемах - очень дорогое удовольствие.

Итак, было сделано следующее.

Я арендовал 4 сервера в облаке AWS в конфигурации i3en.6xlarge, где на борту каждого: ЦП — 24 виртуальных процессора ПАМЯТЬ - 192 ГБ SSD – 2 х 7500 ГБ Если кто захочет повторить, сразу отметим, что для воспроизводимости очень важно брать конфигурации с полной емкостью диска (7500 ГБ).

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

Далее я развернул SC, используя дизайнер , который любезно предоставил производитель на собственном сайте.

Затем я залил на каждую ноду кластера утилиту YCSB (которая является практически стандартом сравнительного тестирования баз данных).

Есть только один важный нюанс; почти во всех случаях мы используем следующую схему: прочитать запись перед изменением + записать новое значение.

Поэтому я изменил обновлять следующим образом:

   

@Override public Status update(String table, String key, Map<String, ByteIterator> values) { read(table, key, null, null); // << added read before write return write(table, key, updatePolicy, values); }

Далее я запустил загрузку одновременно со всех 4-х хостов (тех самых, где расположены серверы баз данных).

Это было сделано намеренно, поскольку некоторые клиенты баз данных могут потреблять больше ресурсов ЦП, чем другие.

Учитывая, что размер кластера ограничен, хотелось бы понять общую эффективность реализации как серверной, так и клиентской части.

Результаты тестов будут представлены ниже, но прежде чем мы перейдем к ним, стоит учесть еще несколько важных нюансов.

Что касается AS, то это очень привлекательная база данных, лидер в категории удовлетворенности клиентов с точки зрения версии ресурс г2.

Новый бой между двумя якодзунами или Сциллой против Аэроспайка (+ HBase для массовки)

Честно говоря, мне она тоже чем-то понравилась.

Легко установить, вот так сценарий Он довольно легко превращается в облако.

Стабильно, настраивать одно удовольствие.

Однако у него есть один очень большой недостаток.

Для каждого ключа выделяется 64 байта оперативной памяти.

Вроде немного, но в промышленных количествах это становится проблемой.

Типичная запись в наших таблицах имеет размер 500 байт. Именно такое значение я использовал почти* во всех тестах (*почему почти, будет сказано ниже).

Поскольку мы храним по 3 копии каждой записи, то получается, что для хранения 1 ПБ чистых данных (3 ПБ грязных) нам придется выделить всего 400 ТБ оперативной памяти.

Идем дальше.

нет что?! Подожди секунду, мы можем что-нибудь с этим сделать? — спросили мы продавца.

Ха, конечно можно много чего, скрестим пальцы:

  1. Упаковать несколько записей в одну ( прыгать ).

  2. То же, что и в пункте 1, только за счет расширения количества полей.

  3. Включите режим полной очистки.

    Идея состоит в том, чтобы хранить индекс не в памяти, а на диске.

    Правда есть нюанс, Ватсон, опция доступна только в Entreprise версии (в моем случае она доступна в рамках пробного периода).

Ладно, теперь разберемся с ХБ и посмотрим на результаты тестов.

Для установки Hadoop у Amazon есть платформа EMR, которая позволяет легко развернуть нужный вам кластер.

Мне оставалось только поднять лимиты на количество процессов и открытых файлов, иначе крашилось под нагрузкой, и заменил hbase-server на свою оптимизированную сборку (подробнее здесь ).

Второй момент — HB невероятно медленный при работе с одиночными запросами, это факт. Поэтому мы работаем только партиями.

В этом тесте партия = 100. В таблице 100 регионов.

Ну и последний момент, все базы данных тестировались в режиме «сильной согласованности».

Для HB это из коробки.

AS доступен только в корпоративной версии (т. е.

в этом тесте он был включен).

SC работал в режиме согласованности записи = все.

Фактор репликации везде 3. Итак, начнем.

Вставляем в АС: 10 сек: 360554 операций; 36055,4 текущих операций в секунду; 20 сек: 698872 операции; 33831,8 текущих операций в секунду; … 230 сек: 7412626 операций; 22938,8 текущих операций в секунду; 240 сек: 7542091 операций; 12946,5 текущих операций/сек; 250 сек: 7589682 операций; 4759,1 текущих операций/сек; 260 сек: 7599525 операций; 984,3 текущих операций в секунду; 270 сек: 7602150 операций; 262,5 текущих операций/сек; 280 сек: 7602752 операции; 60,2 текущих операций/сек; 290 сек: 7602918 операций; 16,6 текущих операций/сек; 300 сек: 7603269 операций; 35,1 текущих операций в секунду; 310 сек: 7603674 операций; 40,5 текущих операций/сек; Ошибка при записи ключа user4809083164780879263: com.aerospike.client.AerospikeException$Timeout: Тайм-аут клиента: timeout=10000 итераций=1 errorNodes=0 errorConns=0 LastNode=5600000A 127.0.0.1:3000 Ошибка при вставке, повторная попытка невозможна.

количество попыток: 1. Предел повторных попыток вставки: 0. Упс, вы точно продюсер с производственной базой? Вы можете так подумать на первый взгляд. Однако оказалось, что проблема была в ядре Amazon-версии Linux. На них был открыт тикет и проблема исправлена в версии amzn2-ami-hvm-2.0.20210326.0-x86_64-gp2. Но для этих тестов вендор предложил использовать ansible-скрипты для развертывания ubuntu, где данной проблемы не возникало (для этого нужно выбрать соответствующий ветвь в дачах).

Хорошо, продолжим.

Начинаем загружать 200 миллионов записей (INSERT), затем UPDATE, затем GET. Вот что произошло (ops — операций в секунду):

Новый бой между двумя якодзунами или Сциллой против Аэроспайка (+ HBase для массовки)

ВАЖНЫЙ! Это скорость одного узла! Всего их 4, т.е.

чтобы получить общую скорость нужно умножить на 4. В первом столбце 10 полей, это не совсем честный тест. Те.

это когда индекс находится в памяти, что недостижимо в реальной ситуации с BigData. Второй столбец — это упаковка 10 записей в 1. Т.

е.

Здесь реальная экономия памяти, ровно в 10 раз.

Как хорошо видно из теста, такая хитрость не напрасна; производительность существенно падает. Причина очевидна: каждый раз для обработки одной записи приходится иметь дело с 9 соседними.

Накладные расходы короче.

И наконец, все вровень, картина примерно такая же.

Чистые вставки хуже, но операция обновления ключа выполняется быстрее, поэтому в дальнейшем будем сравнивать только с all-flush. Собственно, не будем тащить кота, перейдем сразу к делу:

Новый бой между двумя якодзунами или Сциллой против Аэроспайка (+ HBase для массовки)

(ops — операций в секунду) Все в целом понятно, но что тут стоит добавить.

  1. Поставщик AS подтвердил, что приведенные выше результаты в его базе данных актуальны.

  2. Вставки SC были какие-то не очень корректные, вот более подробный график с разбивкой по серверам:

    Новый бой между двумя якодзунами или Сциллой против Аэроспайка (+ HBase для массовки)

Возможно где-то ошибка в настройках или всплыл тот баг с ядром, не знаю.

Но я все настроил внутри и снаружи скриптом от вендора, так что мопед не мой, все вопросы к нему.

Также нужно понимать, что это очень скромный объем данных и с увеличением объемов ситуация может измениться.

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



Новый бой между двумя якодзунами или Сциллой против Аэроспайка (+ HBase для массовки)

Почему он так сильно затонул и какое оживление в последней трети – загадка природы.

Также можно заметить, что скорость радикально выше, чем в чуть более высоких тестах.

Я думаю, это потому, что режим строгой согласованности отключен (поскольку сервер только один).

И, наконец, GET+WRITE (помимо более чем трех миллиардов записей, заполненных тестами):

Новый бой между двумя якодзунами или Сциллой против Аэроспайка (+ HBase для массовки)

Что это за просадка, я в душе понятия не имею.

Никаких посторонних процессов не запускалось.

Возможно, дело как-то в SSD-кэше, ведь за все время тестирования AS в режиме all-flush загрузка составила 100%.



Новый бой между двумя якодзунами или Сциллой против Аэроспайка (+ HBase для массовки)

Вот и все.

Выводы в целом очевидны: необходимы дополнительные тесты.

Желательно все самые популярные базы на одинаковых условиях.

В Интернете этого жанра не так уж и много.

Было бы хорошо, тогда у производителей баз данных появится мотивация к оптимизации, а у нас – к осознанному выбору лучшего.

Теги: #Хранение данных #Хранение данных #Высокая производительность #Большие данные #Hadoop #bigdata #hbase #aerospike #scylla #NT

Вместе с данным постом часто просматривают:

Автор Статьи


Зарегистрирован: 2019-12-10 15:07:06
Баллов опыта: 0
Всего постов на сайте: 0
Всего комментарий на сайте: 0
Dima Manisha

Dima Manisha

Эксперт Wmlog. Профессиональный веб-мастер, SEO-специалист, дизайнер, маркетолог и интернет-предприниматель.