Size: a a a

ClickHouse не тормозит

2020 July 22

Y

Yuran in ClickHouse не тормозит
vitakor
ребята, привет!
заменяет ли Buffer в ClickHouse использование Kafka брокера для пакетного добавления данных?
(я изначальный автор kittenhouse) Смотря где вы храните данные, которые пока ещё не вставились, и насколько вам существенно отсутствие дублей по сравнению со сложностью эксплуатации. Моё ИМХО такое:
1. Мало серверов (до 100), не страшно терять данные, батчи уже собраны в самом приложении — вставляйте прямо в Buffer
2. Как (1), но серверов больше 100 — то же самое, с kittenhouse --reverse
3. Данные терять страшно (но не настолько страшно, чтобы терять данные из буферной таблицы при некорректном завершении ClickHouse), но дубли не страшны — kittenhouse, но пишем данные в режиме persistent=1 (данные складываются на локальный диск каждой машины)
4. Уже везде используется Kafka, умеете её правильно настраивать, и не боитесь багов с ENGINE=Kafka в ClickHouse — используйте Kafka
5. Данные очень важны и дубли тоже страшны, но не жалко потратить кучу времени на правильную настройку Kafka и написания своих cron-джобов для выгребания из Kafka и вставки из неё в ClickHouse — тоже вариант, но трудоемкий. Учитывайте, что Kafka имеет много подводных камней (есть хороший доклад про это от Дениса Карасика: https://www.highload.ru/moscow/2019/abstracts/5962)
www.highload.ru
Денис Карасик  на HighLoad++ 2019
Apache Kafka часто преподносится как серебряная пуля: стоит только начать ее использовать, как все проблемы решатся сами собой, дыхание станет свежим, а волосы мягкими и шелковистыми. Но так ли оно на самом деле? (спойлер - не совсем)На примере Badoo я расскажу, как Kafka выросла от эксперимента в одном сервисе до полноценного managed-решения и стала основой для многих ключевых инструментов внутри компании.Основные темы, которых коснёмся:- область применения и типовые usecases;- надежность vs производительность;- управление кластерами и capacity planning;- мониторинг и эксплуатация.Доклад будет полезен в первую очередь тем, кто только собирается знакомиться с Kafka — он поможет составить поверхностное представление о будущем пути и потенциальных трудностях. Для более искушенных слушателей я постараюсь осветить тему масштабирования и управления нагруженными кластерами.
источник

VY

Vladislav Yakushev in ClickHouse не тормозит
привет!
а возможно ли создать столбец в автоинкрементом в клике?
или для уникального ID использовать что-то типа toUUID(rand64())
источник

SC

Smoked Cheese in ClickHouse не тормозит
Vladislav Yakushev
привет!
а возможно ли создать столбец в автоинкрементом в клике?
или для уникального ID использовать что-то типа toUUID(rand64())
1) автоинкрементов нет
2) например
источник

VY

Vladislav Yakushev in ClickHouse не тормозит
Smoked Cheese
1) автоинкрементов нет
2) например
спасибо!
источник

SC

Smoked Cheese in ClickHouse не тормозит
Vladislav Yakushev
привет!
а возможно ли создать столбец в автоинкрементом в клике?
или для уникального ID использовать что-то типа toUUID(rand64())
есть готовая функция generateUUIDv4()
источник

S

Slach in ClickHouse не тормозит
Vladislav Yakushev
привет!
а возможно ли создать столбец в автоинкрементом в клике?
или для уникального ID использовать что-то типа toUUID(rand64())
а зачем вам этот самый UUID? что даст?
источник

v

vitakor in ClickHouse не тормозит
Yuran
(я изначальный автор kittenhouse) Смотря где вы храните данные, которые пока ещё не вставились, и насколько вам существенно отсутствие дублей по сравнению со сложностью эксплуатации. Моё ИМХО такое:
1. Мало серверов (до 100), не страшно терять данные, батчи уже собраны в самом приложении — вставляйте прямо в Buffer
2. Как (1), но серверов больше 100 — то же самое, с kittenhouse --reverse
3. Данные терять страшно (но не настолько страшно, чтобы терять данные из буферной таблицы при некорректном завершении ClickHouse), но дубли не страшны — kittenhouse, но пишем данные в режиме persistent=1 (данные складываются на локальный диск каждой машины)
4. Уже везде используется Kafka, умеете её правильно настраивать, и не боитесь багов с ENGINE=Kafka в ClickHouse — используйте Kafka
5. Данные очень важны и дубли тоже страшны, но не жалко потратить кучу времени на правильную настройку Kafka и написания своих cron-джобов для выгребания из Kafka и вставки из неё в ClickHouse — тоже вариант, но трудоемкий. Учитывайте, что Kafka имеет много подводных камней (есть хороший доклад про это от Дениса Карасика: https://www.highload.ru/moscow/2019/abstracts/5962)
www.highload.ru
Денис Карасик  на HighLoad++ 2019
Apache Kafka часто преподносится как серебряная пуля: стоит только начать ее использовать, как все проблемы решатся сами собой, дыхание станет свежим, а волосы мягкими и шелковистыми. Но так ли оно на самом деле? (спойлер - не совсем)На примере Badoo я расскажу, как Kafka выросла от эксперимента в одном сервисе до полноценного managed-решения и стала основой для многих ключевых инструментов внутри компании.Основные темы, которых коснёмся:- область применения и типовые usecases;- надежность vs производительность;- управление кластерами и capacity planning;- мониторинг и эксплуатация.Доклад будет полезен в первую очередь тем, кто только собирается знакомиться с Kafka — он поможет составить поверхностное представление о будущем пути и потенциальных трудностях. Для более искушенных слушателей я постараюсь осветить тему масштабирования и управления нагруженными кластерами.
Спасибо за развернутый ответ! Сократили мне уйму времени на изучение... С Кафкой работал, но не в паре с ClickHouse... Из документации не понял как она работает... Сохраняет сообщения в энжайне, а потом через консьюмеры пишет куда надо или же нужно будет выдирать данные из кафка таблиц...
+ Многие жалеются на Zookeeper кластер, разного рода странности случаются, как то различая в MTU.. без серьезной команды админов и девопсов тяжело будет саппортить клауд... Пытаюсь максимально упростить решение без потери надёжности и масштаба
источник

SC

Smoked Cheese in ClickHouse не тормозит
Vladislav Yakushev
привет!
а возможно ли создать столбец в автоинкрементом в клике?
или для уникального ID использовать что-то типа toUUID(rand64())
либо можно в самом приложении генерить что-то типа такого https://github.com/sony/sonyflake
источник

VY

Vladislav Yakushev in ClickHouse не тормозит
Slach
а зачем вам этот самый UUID? что даст?
раз нельзя делать автоинкеремент - буду узнавать зачем это в ТЗ указано, вероятно "просто каунтер перед глазами", хз
источник

VY

Vladislav Yakushev in ClickHouse не тормозит
Smoked Cheese
либо можно в самом приложении генерить что-то типа такого https://github.com/sony/sonyflake
ну да, если очень нужен автоингремент, буду писать какую-то обёртку в нашем ETL
источник

Y

Yuran in ClickHouse не тормозит
vitakor
Спасибо за развернутый ответ! Сократили мне уйму времени на изучение... С Кафкой работал, но не в паре с ClickHouse... Из документации не понял как она работает... Сохраняет сообщения в энжайне, а потом через консьюмеры пишет куда надо или же нужно будет выдирать данные из кафка таблиц...
+ Многие жалеются на Zookeeper кластер, разного рода странности случаются, как то различая в MTU.. без серьезной команды админов и девопсов тяжело будет саппортить клауд... Пытаюсь максимально упростить решение без потери надёжности и масштаба
Да, ZooKeeper это тоже частый источник боли, но правда, боюсь, MTU здесь наименьшая из проблем :)
источник

Y

Yuran in ClickHouse не тормозит
vitakor
Спасибо за развернутый ответ! Сократили мне уйму времени на изучение... С Кафкой работал, но не в паре с ClickHouse... Из документации не понял как она работает... Сохраняет сообщения в энжайне, а потом через консьюмеры пишет куда надо или же нужно будет выдирать данные из кафка таблиц...
+ Многие жалеются на Zookeeper кластер, разного рода странности случаются, как то различая в MTU.. без серьезной команды админов и девопсов тяжело будет саппортить клауд... Пытаюсь максимально упростить решение без потери надёжности и масштаба
Я поэтому и написал kittenhouse — потому что по сути вставки в буферные таблицы достаточно в большинстве случаев, даже когда данные важны, ибо если только ClickHouse или сервер с ClickHouse не крашится, сами данные из буферной таблицы никуда не исчезнут просто так
источник

v

vitakor in ClickHouse не тормозит
Yuran
Я поэтому и написал kittenhouse — потому что по сути вставки в буферные таблицы достаточно в большинстве случаев, даже когда данные важны, ибо если только ClickHouse или сервер с ClickHouse не крашится, сами данные из буферной таблицы никуда не исчезнут просто так
👍
источник

AP

Anton Patsev in ClickHouse не тормозит
У кого-нибудь есть контакт Кирилла Швакова автора доклада "ClickHouse тормозит" ?
источник

D

Dj in ClickHouse не тормозит
Vladislav Yakushev
привет!
а возможно ли создать столбец в автоинкрементом в клике?
или для уникального ID использовать что-то типа toUUID(rand64())
можно конечно сделать default колонку с рандомным UUID, но лучше все таки композитный ключ
ещё default timestamp+UUID если уверены что не придут одновременно несколько батчей.
но вообще лучше ИД генерить снаружи (хотите централизованно, хотите распределенно)
источник

S

Slach in ClickHouse не тормозит
Anton Patsev
У кого-нибудь есть контакт Кирилла Швакова автора доклада "ClickHouse тормозит" ?
Он тут в чатеге есть, а в чем вопрос? ;)
источник

AP

Anton Patsev in ClickHouse не тормозит
Slach
Он тут в чатеге есть, а в чем вопрос? ;)
хотел расшифровать его доклад и на хабре опубликовать
источник

S

Slach in ClickHouse не тормозит
Anton Patsev
хотел расшифровать его доклад и на хабре опубликовать
источник

L

L-dar in ClickHouse не тормозит
Привет! Только начал изучать и уже проблема)
Как вставить в поле с типом UUID
INSERT INTO test (guid, ...)
VALUES ('00000000-0000-0000-0000-000000000000',...);
Ошибка: Expected: UUID. Got: UInt64
источник

KS

Kirill Shvakov in ClickHouse не тормозит
Anton Patsev
хотел расшифровать его доклад и на хабре опубликовать
Привет, да, конечно можно
источник