184 похожих чатов

Привет. Скажите, пожалуйста, если у меня кластер из 3-х хостов и

есть Distributed таблица, то в плане нагрузки, если я буду ходить всегда в один и тот же хост, но в Distributed таблицу, это чем-то хуже, чем если ходить во все хосты? (понятно, что если этот конкретный хост сдохнет, то мой код сломается, но помимо этого)

15 ответов

2 просмотра

Весь поток данных пойдет через эту ноду.

.sha- Автор вопроса
Andrey Dudin
Весь поток данных пойдет через эту ноду.

это-то понятно, но Distributed таблица равномерно распределит нагрузку между всеми нодами?

.sha
это-то понятно, но Distributed таблица равномерно ...

Должно быть включено партиционирование по правильному ключу. Потому что одна партиция будет на одном шарде, и если, скажем, это city_id, то данных по одному городу будет в разы больше, чем по другому => имбаланс. Более того, для Distributed в конфиге должен быть сконфигурен кластер со всеми нодами, где у нас шардинг. Если Distributed смотрит в локальную таблицу, она даже не знает о других машинах, и абсолютно независима. Можете покурить вот это https://kb.altinity.com/altinity-kb-setup-and-maintenance/cluster-production-configuration-guide/cluster-configuration-process/

.sha- Автор вопроса
Nara
Должно быть включено партиционирование по правильн...

сейчас посмотрю. но шард у меня всего один

.sha
это-то понятно, но Distributed таблица равномерно ...

Нет. Distributed таблица сама делает очень много вычислений, она финализирует вычисления. Ваша эта нода будет сильно перегружена Если шард один, то все вычисления вообще будут только на этой ноде. Из за настройки prefer_localhost_replica

.sha
это-то понятно, но Distributed таблица равномерно ...

при SELECT ... FROM distributed GROUP BY ... ORDER BY ... на всех нодах будут запущены переписанные запросы где аггрегирующе функции будут заменены на`funcNameState` для предаггрегации и будет сделана сортировка а на ноде инициаторе дальше будет финальная аггрегация и финальная сортировка... WHERE предикаты будут проброшены на все ноды так что да, нагрузка равномерная. но если у вас запрос сложный и куча sub queries то нода инициатор будет больше нагружена по памяти и CPU и даже может в memory limit упереться

.sha- Автор вопроса
Slach [altinity]
при SELECT ... FROM distributed GROUP BY ... ORDER...

Спасибо большое! Но под нодами вы подразумеваете шарды, верно? Если у меня 1 шард и 3 реплики с одинаковыми данными, то все будет обрабатываться локально на 1 реплике, верно?

.sha
Спасибо большое! Но под нодами вы подразумеваете ш...

нет шард это группа нод (реплик), одна и более нода это процесс clickhouse-server если у вас 1 шард с одинаковыми репликами ... то при Engine=Distirbuted у вас есть нода инициатор запроса потом в соответсвии https://clickhouse.com/docs/en/operations/settings/settings/#settings-load_balancing рандомно выбирается реплика на которой в Underlying таблице делается предаггрегация... и финализируется на ноде инициаторе

.sha- Автор вопроса
Slach [altinity]
нет шард это группа нод (реплик), одна и более но...

Ясно, значит все таки есть смысл использовать Distributed — нагрузка будет +- равномерная на ноды, кроме доп нагрузке на ноду-инициатор

.sha
Ясно, значит все таки есть смысл использовать Dist...

это очень спорное утверждение) очень сильно зависит от запроса

.sha
Ясно, значит все таки есть смысл использовать Dist...

смотря как random отработает я бы тупо chproxy \ haproxy \ nginx поставил перед ... и выбирал сразу из ReplicatedMergeTree engine=Distributed нужен только если у вас несколько шардов (непересекающихся наоборов данных с одинаковой структурой) его сделать в любой момент можно он данные только временные хранит при вставке... а при select ничего не хранит

.sha
Ясно, значит все таки есть смысл использовать Dist...

да, выше правильно сказали можно ноду инициатор перегрузить финальной аггрегацией... и сортировкой... по CPU \ RAM стреляет

.sha
Ясно, значит все таки есть смысл использовать Dist...

если у вас один шард и prefer_localhost_replica=1 (по дефолту) то запросы будут выполнятся локально, остальные реплики будут курить. Distributed имеет смысл даже с одним шардом смысла ходить в один сервер всегда мало, но можно, дешевле все-таки балансировку сделать даже с DNS

Похожие вопросы

Обсуждают сегодня

я не магистр хаскеля, но разве не может лейзи тип конвертнуться в не-лейзи запросив вычисление содержимого прям при инициализации?
deadgnom32 λ madao
100
в сях есть множество как в питоне? для удаление дубликатов
Linus
25
читать файл максимально быстро? странный вопрос))
zamtmn
53
тоесть, указав return eax, сгенерируется никому ненужная инструкция mov eax,eax ?
Aiwan \ (•◡•) / _bot
24
How to create an OS in C? what to study?
Linus
18
а зачем этот вопрос для удаления из чата?
Mёdkinson Medvezhkin
63
Всем доброго вечера! Хочу поделиться своим злоключением с человеком, который, как оказалось сюда тоже скидывал свое резюме. Жаль, что я вашу группу не нашел раньше… человек ки...
Роман Ахмедзянов
4
а как бы вылезти из ИО, что то типа IO -> Ether или в какую сторону смотреть ? что то туплю
Fedor
9
Компания Elif ищет менеджера проектов, который будет заниматься поиском и ведением новых проектов. Прежде чем приступить к работе, вам нужно пройти наш недельный курс, где вы ...
Elif
5
Привет, кто может сделать юзербота с апи? Задачи: - создавать группы - создавать каналы - задавать для созданных каналов аватарку или эмоджи, имя группы - добавлять в группы...
Lencore
11
Карта сайта