Мы установили Bigtable кластер с 5 узлами, а консоль GCP заявила, что должна поддерживать 50K QPS @ 6ms для чтения и записи.Достижение объявленного облака Bigtable пишет QPS
Мы пытаемся загрузить большой набор данных (~ 800M записей) с ~ 50 полями, содержащими в основном числовые данные, и несколькими короткими строками. Клавиши представляют собой 11-значные числовые строки.
При загрузке этого набора данных через API HBase с единой клиентской виртуальной машины в GCE мы наблюдаем до 4K QPS при помещении каждого поля в отдельный столбец. Мы используем одно соединение HBase, а несколько потоков (5-30) выполняем пакетные записи из 10K записей.
При объединении всех полей в один столбец (Avro-encoded, ~ 250 байт на запись) производительность записи с пакетными позициями улучшается до 10K QPS. Количество параллельных потоков, похоже, не влияет на QPS. При использовании отдельного соединения HBase для каждого потока производительность записи увеличивается до 20K QPS с 5 потоками.
Клиент VM находится в той же зоне доступности, что и кластер Bigtable, и во время загрузки он остается почти бездействующим, поэтому он не похож на узкое место на стороне клиента.
Вопросы:
- Из наших испытаний представляется, что запись КПТ уменьшается с числом столбцов для вставки. Ожидается ли это, и как можно количественно определить эти отношения? (Кстати, было бы здорово, если бы это было упомянуто в Bigtable performance documentation).
- Что нам может не хватать для достижения заявленной записи QPS? Я понимаю, что каждый узел кластера должен поддерживать 10K write QPS, однако кажется, что мы движемся против одного узла с одним соединением HBase и только против двух узлов с несколькими соединениями HBase.
Спасибо Les! Похоже, что репозиторий github является частным. Можно ли опубликовать этот тест в публичном репо? –
Я постараюсь сделать это с выпуском 0.2.3 - извините. –