@clickhouse_ru

Страница 400 из 723
Alexandr
24.01.2018
18:53:09
и еще один вопрос, я правильно понимаю, что даже в случае с 500+ серверами в Яндек Метрике кластере, каждый Distributed запрос посетит все 500 серверов независимо от схемы шардирования - рандомно или по ключу user_id? Или все таки есть способ разграничить SELECTы?

papa
24.01.2018
19:22:08
Alexandr
24.01.2018
19:36:14
в метрике обычно интересующие один select данные лежат на некотором подмножестве машин. на нем есть своя distributed таблица, в которую включена нужная часть кластера.
то что как раз интересует, где-то подробнее о такой схеме почитать/послушать можно? Я видел в репо презентаций Two-Level Sharding, но деталей там мало.

Petr
24.01.2018
20:42:03
Привет, в версии 1.1.54342 делаю выборку по колонке. В результате ключ по котрому делается запрос растягивается на все записи. Как сделать чтобы он полностью был в каждой записи

Google
Petr
24.01.2018
20:42:06


Nikolai
24.01.2018
20:46:02
Можете показать запрос?

Petr
24.01.2018
20:49:10
Я использую infi.clickhouse_orm так что в прямом виде запроса нет

До этого в версии 1.1.54292 все было как нужно

Alexey
24.01.2018
22:46:28
Если в replacingmergetree сделать optimize во время вставки большой порции данных, то, кажется, всё ломается. Кто-нибудь сталкивался с таким?
Нет, не сталкивались. Напишите подробнее - какая версия сервера и как проявляется проблема.

подскажите, возможно ли отменить тяжелый мерж, спровоцированный OPTIMIZE TABLE? Судя по всему, можно удалить запись в очереди в Zookeeper, типа такого /clickhouse/{CLUSTER}/tables/6/{TABLE}/replicas/{NODE}/queue/queue-0002370007
Вы можете отменить назначенный мерж вручную таким образом, но это небезопасно: - если одна из реплик уже выполнила этот мерж, то вы получите рассинхронизацию; - для обновления очереди придётся перезапускать реплики.

@kochetovnicolai подскажите, а при распредленном запросе - если одна из нод выдает таймаут, то и весь распределенный запрос выдает таймаут?
При таймауте в процессе соединения или обмене ping пакетами, работает failover. Если соединение установлено, но запрос выполняется медленно, то failover-а нет.

Ololo
25.01.2018
03:21:59
Нет, не сталкивались. Напишите подробнее - какая версия сервера и как проявляется проблема.
Tima правильно сказал. Это происходит в случае если запускать optimize несколько раз в ходе одного инсёрта. Происходит гарантированно. Таблица в 50 столбцов, из них 3 uint64, остальные string. Данные гружу пачками по 100к. Баг был замечен на виртуалке, где всего 2 гига озу. Возможно, это важно. На реальной системе не тестировал. Версия 1.1.54327

Ключ составной, из 7 значений. Все значения в ключе string.

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

Google
Alexander
25.01.2018
06:13:39
Для этой цели можно попробовать executable словарь с типом cache. Он годится, если вычисляемая функция достаточно сложная.
оо, похоже, что это может быть как раз тем, что нужно, надо обмозговать, спасибо большое.

Ivan
25.01.2018
07:25:05
Друзья, тут после апдейта в определённый момент стала падать ошибка Exception: Could not find a column of minimum size in MergeTree, part /var/lib/clickhouse//data/public/events/20180124_20180124_14437_14442_1/. Подскажите что делать (

ClickHouse server version 1.1.54337.

Ivan
25.01.2018
07:55:38
@roman_yashin Увы нет.

Alexey
25.01.2018
08:05:14
Друзья, тут после апдейта в определённый момент стала падать ошибка Exception: Could not find a column of minimum size in MergeTree, part /var/lib/clickhouse//data/public/events/20180124_20180124_14437_14442_1/. Подскажите что делать (
У меня тоже такая ошибка была, такого куска нет на этой реплике. Я сделал detach partition 201801 и attach partition 201801, при аттаче потерянный кусочек скачался с другой реплики и стало хорошо

Andrey
25.01.2018
09:30:58
Подскажите пожалуйста, я пытаюсь вставлять через JDBC очень много данных (миллиарды в минуту), батчами по 10M записей в 40 потоков. INSERT часто падает с трейсом : Too many parts Merges are processing significantly slower than inserts. Я вижу в таблице system.merges от 5 до 10 записей. Сам сервак не загружен. CPU и MEM не загружаются полностью. LA не шкалит, и io диска свободные есть. Вопрос, как увеличить колличество тредов отвечающих за мёржи кусков и где настроить триггер, который срабатывает при моём эксепшене?

Andrey
25.01.2018
09:37:15
Огромное спасибо! Я уже просто устал читать доку, ибо в ней этой настройки нет

Alex
25.01.2018
09:39:47
Andrey , возьмите на вооружение этот файл, там кладезь настроек :)

Andrey
25.01.2018
09:43:48
А в какую секцию конфига эта настройка должна войти?

И ещё не понятно, где посмотреть значение по умолчанию для каждой настройки из этого файла

Alex
25.01.2018
09:45:36
А в какую секцию конфига эта настройка должна войти?
В настройку квот https://github.com/yandex/ClickHouse/blob/2aaa847e10442d5ad34d7e4eb90ad1269c17181f/dbms/tests/integration/test_insert_into_distributed/configs/forbid_background_merges.xml

Ivan
25.01.2018
09:49:42
@Shegloff Спасибо за совет, попробовал сделал DETACH ATTACH для основной таблицы, но ошибка повотряется. Возникает у материализованных представлений на данную таблицу.

Andrey
25.01.2018
09:50:17
@Krashuevina Как я понимаю, рестартовать сервис для того чтобы он подхватил настройку не нужно?

Alexey
25.01.2018
09:50:24
не, надо именно у вьюшной таблицы inner_ так сделать

alter table db..inner.table attach partition 201801

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

Ivan
25.01.2018
09:53:45
Хмм а как к ней запрос выполнить? Он на 2ю точку ругается

Alexey
25.01.2018
09:53:59
в обратных апострофах

Google
Alexey
25.01.2018
09:54:32
alter table db.`.inner.table` detach partition 201801 alter table db.`.inner.table` attach partition 201801

Ivan
25.01.2018
09:55:21
Понял)

Благодарю за совет.

Alexey
25.01.2018
09:56:18
можете на проблемной реплике вообще удалить все данные после detach из папки detached, после attach проблемная скачает всю партицию

pavel
25.01.2018
12:55:40
Верно ли то, что невозможно DETACH PARTITION для MaterializedView или для ReplicatedMaterializedView ?

Alexey
25.01.2018
12:56:44
неверно, два сообщения выше посмотрите

pavel
25.01.2018
13:04:31
неверно, два сообщения выше посмотрите
Круто - через c2.`.inner... сработало.

Причём получилось ATTACH в ту партицию, в которой уже были данные. Я думал она должна быть совершенно чистой для аттача.

А можно 2 раза сделать аттач на одних и тех же detached данных? Они приаттачатся, исчезнут из detached, а мы в detached снова положим копию припасённую в рукаве. Данные продублируются в итоге в целевой таблице? Просто интересна физика процесса.

Vladislav
25.01.2018
13:29:27
Всем привет. А никто не находил модуля для nginx, позволяющего складировать access\error логи в clickhouse?

Vyacheslav
25.01.2018
13:31:39
написать простейшую хрень на lua? постить через http. там же и буферизацию можно приделать.

Kirill
25.01.2018
13:32:29
Google говорит что есть

например https://github.com/mintance/nginx-clickhouse

Vsevolod
25.01.2018
13:32:59
tail -f | perl | clickhouse-client

Vyacheslav
25.01.2018
14:12:54
есть плагин к графане https://github.com/Vertamedia/clickhouse-grafana там есть макрос $columns(key, value) - query values as array of [key, value], where key will be used as label пытаюсь его использовать: $columns(group, sum(s) r) FROM (SELECT any(time) as time, $timeSeries as tt, date, dictGetString('edge','group', tuple(srv)) as group, srv, avg(nic_speed) as s FROM net WHERE $timeFilter AND srv like 'edge%' GROUP BY tt, date, srv) это транслируется в SELECT t, groupArray((group, r)) as groupArr FROM ( SELECT (intDiv(toUInt32(time), 60) * 60) * 1000 as t, group, sum(s) r FROM (SELECT any(time) as time, (intDiv(toUInt32(time), 60) * 60) * 1000 as tt, date, dictGetString('edge','group', tuple(srv)) as group, srv, avg(nic_speed) as s FROM net WHERE date >= toDate(1516803127) AND time >= toDateTime(1516803127) AND date >= toDate(1516803127) AND time >= toDateTime(1516803127) AND srv like 'edge%' GROUP BY tt, date, srv) GROUP BY t, group ORDER BY t, group) GROUP BY t ORDER BY t и кликхаус ругается: Code: 184. DB::Exception: Received from localhost:9000, 127.0.0.1. DB::Exception: Aggregate function any(time) is found in WHERE or PREWHERE in query.

есть варианты обойти это?

papa
25.01.2018
14:14:35
а есть варианты не делать any(time) AS time ?

Vyacheslav
25.01.2018
14:15:13
будет другая ругань

Google
Vyacheslav
25.01.2018
14:16:23
на тему что колонка есть, но не в агрегатеной функции и не в group by

papa
25.01.2018
14:16:56
может дополнительный слой подзапроса (select any_time as time from (select any(time) as any_time.. ) .. )

с графаной не скрещивал, поэтому не знаю какие там степени свободы.

Roman
25.01.2018
14:19:02
а зачем вы выбираете any(time)? Вы ведь его не используете потом

Vyacheslav
25.01.2018
14:19:39
использую. я же дал ссылку на макрос.

а сколько вложенных селектов позволяет кликхаус?

Dmitriy
25.01.2018
14:27:10
@vladislavadv также у nginx можно настроить кастомный формат логов так чтобы он максимально походил на csv. единственное что кликхаус требователен к качеству данных и скорее всего придётся чистить. но всё-таки чистить проще чем разбирать access log и писать csv

Vladimir
25.01.2018
14:27:55
в nginx можно нативно писать в json

Vyacheslav
25.01.2018
14:28:04
еще проще написать на lua обработчик лог-фазы и постить по http, имхо

Vladimir
25.01.2018
14:28:05
и его уже очень просто разобрать и отправить куда угодно

я может конечно что-то не понимаю, но я бы делая такую систему хотел бы иметь все неблокирующее, чтобы если какой net split не ждать таймаутов

в обработчике

Roman
25.01.2018
14:29:02
использую. я же дал ссылку на макрос.
Извините, вот Ваш макрос: $columns( group, sum(s) r) FROM ( SELECT any(time) as time, $timeSeries as tt, date, dictGetString('edge', 'group', tuple(srv)) as group, srv, avg(nic_speed) as s FROM net WHERE $timeFilter AND srv like 'edge%' GROUP BY tt, date, srv ) я не вижу зачем здесь any(time)

Vladimir
25.01.2018
14:29:14
поэтому я бы писал на диск json, а потом бы его отдельной мелкой тулзой слал в КХ

Vyacheslav
25.01.2018
14:30:12
нет, описание макроса по ссылке — https://github.com/Vertamedia/clickhouse-grafana

и там показывается (правда довольно криво) как при разворачивании появляется time (по ссылке EventTime)

Alexey
25.01.2018
14:51:59
на новой (1.1.54342) последней версии слетел мониторинг внешних словарей, похоже там баг - колонки last_exception и source местами перепутаны

Row 1: ────── name: db_table last_exception: MySQL: db.table source:

Nikolai
25.01.2018
15:01:43
действительно. поправлю.

Vladislav
25.01.2018
15:07:05
Google
Alex
25.01.2018
15:11:38
День добрый! Вопрос - если включен insert_distributed_sync, и insert_quorum = Число реплик в шарде. Означает ли это, что по окончанию INSERT данные _обязательно_ должны быть видны в SELECT?

Alex
25.01.2018
15:15:49
@Felixoid , вы имеете в виду, что INSERT не пройдёт?

из-за не досягаемости кворума

Felixoid
25.01.2018
15:17:26
всё так

Alex
25.01.2018
15:21:53
всё так
Мы пока наступали на грабли, что с одного шарда данные не видны, не взирая на кворумную запись. Пытаемся разобраться, где проблема, пока не понимаем.

Alexander
25.01.2018
15:49:49
Ребят, подскажите пожалуйста где можно почитать про партицирование в CH

Интересует именно https://github.com/yandex/ClickHouse/blob/fb9c7ab81d3d208b0585080e2288fccf0a768ec3/dbms/tests/queries/0_stateless/00502_custom_partitioning_local.sql

для графита

papa
25.01.2018
15:56:43
это https://clickhouse.yandex/docs/ru/table_engines/custom_partitioning_key.html ?

Страница 400 из 723