Обсуждаем ClickHouse
Добрый день.
Для перехода в кластер нужно ли все таблицы делать реплицированными, которые имеют данные ?
клик лишь знает о ЗК и привязке к таблице, верно.
Читать полностью…Это тоже пробовал
В итоге помогло создать рядом таблицу смотрящую на ту же очередь
DETACH TABLE ... ATTACH TABLE
с engine=RabbitMQ пробовали?
да всё, тут и была ошибка. В итоге полный путь это uuid+shard
Всем спасибо.
ну вот смотри. Путь до шарда одинаков
/clickhouse/tables/uuid/{shard}
cityHash64
- и он разный, так как добавляется еще шард.last_queue_update
- почему то у всех стоит 1970 год.replica_is_active
на основнов кластере больше (2 записи), против 1-ой записи на новой реплике.Очень нужна помощь!)
Есть таблица с engine=RabbitMQ.
engine = RabbitMQ SETTINGS rabbitmq_host_port = 'X', rabbitmq_exchange_name = 'table', rabbitmq_format = 'JSONEachRow', rabbitmq_username = 'worker', rabbitmq_password = 'password';
С такими параметрами.
И mv Который переносит оттуда в основную таблицу.
В один момент(2 дня назад) запись тупо прекратилась, и сообщения лежат в rabbitMQ(уже 128 лямов накопилось).
Как найти в чём проблема?
Как эксперимент супер. Но хотелось бы не разводить зоопарк технологий. И так уже трещим)
Читать полностью…вот это тоже, ack = LeaderOnly творит чудеса, ценой увеличенной вероятности фиаско
Читать полностью…Вам надо понять, что отъедает память в момент падения. (total) memory limit показывает, что есть еще процессы, влияющие на потребление. Возможно, мержи (system.merges), возможно мутации (system.mutations where not is_done) или кучка параллельных запросов.
Найдя причину, найдете и решение.
Может быть, как-то можно более агрессивно освобождать память? Мне сейчас кеш особо не нужен, я только загружаю данные, запросов не делаю.
Читать полностью…В принципе полно примеров в доке с использованием curl, я реверсинженерил примеры из доки чтобы понять, как составляется POST запрос. Там есть разные способы, но суть вроде у всех одна.
А сорян, с инфером схемы не знаю.
Если версия новая
SELECT
pair[1] AS field1,
pair[2] AS field2
FROM tbl
ARRAY JOIN payload.a AS pair
Прошу прощения, не верно прочел вопрос
Есть настройка always_fetch_merged_part = true
А можно ли настроить реплику так, чтобы она выкачивала только "готовые" парты, которые уже "промержелись" на другой ноде ?
Читать полностью…Кстати, а как kcat создать нагрузку на брокер в 200-300к rps?
Читать полностью…Всё я кажется понял свою ошибку. Реплики группируются по шардовому имени, а я шард указал другой.
Читать полностью…Собираюсь создать рядом такую же таблицу, но с rabbitmq_skip_broken_messages=5, и сделать mv.
Должно же вроде помочь?
А можно чуть подробностей, почему такая резкая оценка для Kafka engine? Проблемы в ней ловил, вплоть до того, что клик (кажется 24.3) зависал на остановке при использовании его, но с 24.10 прям проблем не наблюдаем (сейчас на 25.3). Тред выше про производительность прочитал
Читать полностью…да, я имею в виду что kafkacat позвояет проверить что узкое место не брокеры и не сеть
Читать полностью…да очень часто получается что kafka engine консьюмит 10тыс месаджей в сек. и все потолок
а vector.dev на том же самом сервер и kafkacat консьмят 3 млн/с
дальше можно лезть в кафку и наблюдать что у неё действительно столько консумеров и она действительно раздала им партиции.
дальше можно смотреть на всякие размеры кафка батчей, буфера в кафке, буфера сокетные, количество тредов
у меня был случай когда у топика нельзя было сделать больше одной партиции, и throughput на коробочных настройках кафки от confluent был совершенно унизительный
У топика 30 партиций.
У меня шесть реплик и на каждой я сделал kafka_num_consumers=5
Покопал этот вопрос еще. Вижу через inotify, что запись работает через round-robin на оба диска.
Место в документации следует понимать так: есть фэйловер. Если первый диск переполнен, то запись будет идти только на второй диск. Не более того.
Можно-ли как-то настроить поведение при запросе, когда в данный момент памяти мало?
Заливаю датасет в CH довольно большими кусками. Если делать в один поток, то медленно, если делаю в несколько потоков - время от времени заканчивается память и запрос рубится, хотя можно было бы подождать, и выполнить.
Причем увеличение памяти не улучшает ситуацию, CH спокойно хавает всю память, работает медленнее и падает чаще:
Code: 241. DB::Exception: (total) memory limit exceeded: would use 42.38 GiB (attempt to allocate chunk of 64.67 MiB bytes), current RSS: 41.16 GiB, maximum: 42.34 GiB. OvercommitTracker decision: Query was selected to stop by OvercommitTracker. (MEMORY_LIMIT_EXCEEDED) (version 25.8.2.29 (official build))
При этом работало и на 16 GB. Любой запрос если перезапустить спокойно отработает.
Коллеги, добрый день. Есть задача сделать временную таблицу из данных в фомате JSONEachRow используя HTTP POST. Т.е. для локального файла все ок - create temporary table t as select * from file 'file.jsonl' отрабатывает и создает схему и вставляет данные. Но как загнать данные с выводом схемы используя POST на порт 8123 я не нашел в доке (возможно не увидел). Спасибо.
Читать полностью…Argument for function arrayJoin must be Array or Map (
Читать полностью…